1.通常<script></script>放在head中,但是这样使页面加载迟缓,因此在web开发中经常将<script>标签放到<body>的最后,
2.延迟脚本:html4.0为 <script>标签定义了defer属性,将脚本延迟到整个页面解析完成后再执行
<script type="text/javascript" defer="defer" ></script>
ps:很多浏览器不支持defer属性。
3.ECMAScript会将那些小数点后带有6个零以上的浮点数转换为用e表示法的数值。
永远不要某个特定的浮点数值。
如: if(a+b=0.4) 是不可以的。
4.NaN:1)任何涉及NaN的操作都会返回NaN;
2)NaN和任何值不相等,包括NaN本身。
3)函数isNaN(tom);注意boolean值可以被转换为数字 true == 1 false == 0
因此isNaN(true);返回false
5.javascript错误处理与调试
I. javascript支持try-catch-finally用法,和在java中的用法相似。当捕捉多个异常时,使用如下格式
try{ some statment}catch(error){
if(error instanceof ReferenceError){...}
else if(error instanceof TypeError){...}
else{...}
}
II.抛出错误:抛出错误时务必给throw 操作符一个值,这个值是什么类型,没有要求。下列代码都是有效的
throw 123;
throw 'hello world'
throw {name:'javascript'}
在遇到throw操作符时,代码会立即停止执行,仅当有try-catch语句捕捉到抛出的值时,代码才会继续执行。
通过使用某种内置的错误类型,可以更真实的模拟浏览器的错误。每种错误类型的构造函数接受一个参数,即实际的错误消息。
如:throw new Error("something wrong!!!");
throw new TypeError("A TypeError happen!!");
1)错误类型
1.Error
2.EvalError
3.RangeError
4.ReferenceError
5.SyntaxError
6.TypeError
7.URIError
6.BOM
1).使用下列代码可以跨浏览器取得窗口左边和上边的位置
var leftPos = (typeof window.screenLeft == "number")?window.screenLeft : window.screenX;
var topPos = (typeof windwo.screenTop == "number")?window.screenTop :window.screenY;
2)window.open 弹出窗口屏蔽程序
浏览器内置弹出窗口屏蔽程序,只要检查window是否等于null即可;如果是浏览器扩展或其他程序阻止的弹出窗口,那么window.open()通常会抛出一个错误,因此,要想准确地检测弹出窗口是否被屏蔽,必须在检测返回值的同时,将window.open()放到try-catch块中
示例:
var blocked = false;
try{
var newWindow = window.open("zhidao.baidu.com","_blank","heigh=400;toobar=no");
if(newWindow == null)
{
blocked = true;
}
}catch(ex)
{
blocked = true;
}
alert("the newWindow has been blocked");
3)超时调用
var timeoutId = setTimeout(function(){
alert("tomcat");
},1000);
setTimeout()会返回一个id,这个id是超时调用的唯一标示,可以用来取消超时调用。
clearTimeout(timeoutId);
4)间歇调用
var intervalId = setInterval(function(){alert("lalala");},1000);
取消间歇调用:clearInterval(intervalId);
ps:一般认为,使用超时调用来模拟间歇调用是一种最佳模式。在开发环境下,很少真正使用间歇调用,原因是后一个间歇调用可能在前一个间歇调用完成前启动,而超时调用则可以避免这一点。
5)系统对话框
使用alert(),confirm(),prompt()等调用系统对话框向用户展示信息。
这几个对话框都是同步和模拟的,也就是说,显示这些对话框时代码会停止执行,待关闭后代码又恢复执行。
6)location
一些属性:
通过location的上述属性改变URL,会在浏览器的历史记录中留一条新的记录,用户可以通过点击“后退”按钮返回的上一个页面,要禁止这种情况可以是用replace()方法。这个方法只接受一个参数,即要跳转到的URL。
示例:location.repalce("http://zhidao.baidu.com");
reload()方法,重新加载当前显示的页面。如果调用reload()方法时不传递任何参数,页面就会以最有效的方式重新加载。也就是说,如果页面自上次请求以来并没有改变过,页面就会从浏览器的缓存中重新加载。如果需要强制从服务器重新加载,则需要传递参数true;
示例:
location.reload(); //重新加载(有可能从缓存中加载)
location.reload(true); //重新加载(强制从服务器加载)
7)history
go()方法可以在用户的历史记录中任意跳转,这个方法接受一个参数,表示向后或向前跳转的页面数的一个整数值。负数表示向后跳转,正数表示向前跳转。
history.go(-1);
history.go(3);
也可以给go()方法一个字符串参数,此时浏览器会跳转到历史记录中包含该字符串的第一个位置,可能向前也可能向后,具体要看哪个位置离的近。如果历史记录中不包含该字符串,那么这个方法什么也不做。
ps 1.两个简写方法:
history.back();
history.forward();
2.history的length属性,保存历史记录的数量,这个数量包含所有的历史记录,即所有向前先后的记录。对于加载到窗口、标签页或框架中的第一个页面而言,history.lenth等于0.
可以用来测试该属性的值,来确定用户是否一开始就打开了你的页面
if(history.lenth != 0)
{
alert("请将页面设为首页");
}
http://zz563143188.iteye.com/
2.延迟脚本:html4.0为 <script>标签定义了defer属性,将脚本延迟到整个页面解析完成后再执行
<script type="text/javascript" defer="defer" ></script>
ps:很多浏览器不支持defer属性。
3.ECMAScript会将那些小数点后带有6个零以上的浮点数转换为用e表示法的数值。
永远不要某个特定的浮点数值。
如: if(a+b=0.4) 是不可以的。
4.NaN:1)任何涉及NaN的操作都会返回NaN;
2)NaN和任何值不相等,包括NaN本身。
3)函数isNaN(tom);注意boolean值可以被转换为数字 true == 1 false == 0
因此isNaN(true);返回false
5.javascript错误处理与调试
I. javascript支持try-catch-finally用法,和在java中的用法相似。当捕捉多个异常时,使用如下格式
try{ some statment}catch(error){
if(error instanceof ReferenceError){...}
else if(error instanceof TypeError){...}
else{...}
}
II.抛出错误:抛出错误时务必给throw 操作符一个值,这个值是什么类型,没有要求。下列代码都是有效的
throw 123;
throw 'hello world'
throw {name:'javascript'}
在遇到throw操作符时,代码会立即停止执行,仅当有try-catch语句捕捉到抛出的值时,代码才会继续执行。
通过使用某种内置的错误类型,可以更真实的模拟浏览器的错误。每种错误类型的构造函数接受一个参数,即实际的错误消息。
如:throw new Error("something wrong!!!");
throw new TypeError("A TypeError happen!!");
1)错误类型
1.Error
2.EvalError
3.RangeError
4.ReferenceError
5.SyntaxError
6.TypeError
7.URIError
6.BOM
1).使用下列代码可以跨浏览器取得窗口左边和上边的位置
var leftPos = (typeof window.screenLeft == "number")?window.screenLeft : window.screenX;
var topPos = (typeof windwo.screenTop == "number")?window.screenTop :window.screenY;
2)window.open 弹出窗口屏蔽程序
浏览器内置弹出窗口屏蔽程序,只要检查window是否等于null即可;如果是浏览器扩展或其他程序阻止的弹出窗口,那么window.open()通常会抛出一个错误,因此,要想准确地检测弹出窗口是否被屏蔽,必须在检测返回值的同时,将window.open()放到try-catch块中
示例:
var blocked = false;
try{
var newWindow = window.open("zhidao.baidu.com","_blank","heigh=400;toobar=no");
if(newWindow == null)
{
blocked = true;
}
}catch(ex)
{
blocked = true;
}
alert("the newWindow has been blocked");
3)超时调用
var timeoutId = setTimeout(function(){
alert("tomcat");
},1000);
setTimeout()会返回一个id,这个id是超时调用的唯一标示,可以用来取消超时调用。
clearTimeout(timeoutId);
4)间歇调用
var intervalId = setInterval(function(){alert("lalala");},1000);
取消间歇调用:clearInterval(intervalId);
ps:一般认为,使用超时调用来模拟间歇调用是一种最佳模式。在开发环境下,很少真正使用间歇调用,原因是后一个间歇调用可能在前一个间歇调用完成前启动,而超时调用则可以避免这一点。
5)系统对话框
使用alert(),confirm(),prompt()等调用系统对话框向用户展示信息。
这几个对话框都是同步和模拟的,也就是说,显示这些对话框时代码会停止执行,待关闭后代码又恢复执行。
6)location
一些属性:
通过location的上述属性改变URL,会在浏览器的历史记录中留一条新的记录,用户可以通过点击“后退”按钮返回的上一个页面,要禁止这种情况可以是用replace()方法。这个方法只接受一个参数,即要跳转到的URL。
示例:location.repalce("http://zhidao.baidu.com");
reload()方法,重新加载当前显示的页面。如果调用reload()方法时不传递任何参数,页面就会以最有效的方式重新加载。也就是说,如果页面自上次请求以来并没有改变过,页面就会从浏览器的缓存中重新加载。如果需要强制从服务器重新加载,则需要传递参数true;
示例:
location.reload(); //重新加载(有可能从缓存中加载)
location.reload(true); //重新加载(强制从服务器加载)
7)history
go()方法可以在用户的历史记录中任意跳转,这个方法接受一个参数,表示向后或向前跳转的页面数的一个整数值。负数表示向后跳转,正数表示向前跳转。
history.go(-1);
history.go(3);
也可以给go()方法一个字符串参数,此时浏览器会跳转到历史记录中包含该字符串的第一个位置,可能向前也可能向后,具体要看哪个位置离的近。如果历史记录中不包含该字符串,那么这个方法什么也不做。
ps 1.两个简写方法:
history.back();
history.forward();
2.history的length属性,保存历史记录的数量,这个数量包含所有的历史记录,即所有向前先后的记录。对于加载到窗口、标签页或框架中的第一个页面而言,history.lenth等于0.
可以用来测试该属性的值,来确定用户是否一开始就打开了你的页面
if(history.lenth != 0)
{
alert("请将页面设为首页");
}
http://zz563143188.iteye.com/