可以用来调试JavaScript错误的解决方案
作者:
我们在书写js的过程中,经常会出现一些js错误,对于如果找出错误的解决方法就是关键,下面的文章就是相关的调试方法。
A 使用alert() 和document.write() 方法监视变量值
如果要中断代码的运行,监视变量的值,则使用alert() 方法;
如果需要查看的值很多,则使用document.write() 方法,避免反复单击“确定”按钮;
B 使用window.onerror 事件
当页面出现异常时,onerror 事件会在window 对象上触发。它能在一定程度上告诉开发者相关的错误信息。
示例:
<script type="text/javascript">
function myerror(_message,_url,_line)
{
alert("错误信息:" + _message
+"\n错误的URI:" + _url
+"\n错误的行数:" + _line
);
return true; //屏蔽系统的事件
}
//绑定错误事件
window.onerror = myerror;
//触发错误示例:
window,onload = test;
</script>
注意:在IE 中,触发error 事件后,正常的代码会继续运行,所有的变量和数据都会保存下来,在其onerror 事件处理方法中可以正常访问到;而在Firefox 中,触发error 事件后,一切都结束,所有的变量和数据都将被销毁。
C 使用 try...catch 语句找错误
示例:
<script type="text/javascript">
try
{
alert(触发异常);
}
catch (_ex) //可以省略“_ex”参数
{
var err = "错误信息";
for (var i in _ex)
{
err += "\n参数名:" + i
+ "\t参数值:" + _ex[i];
}
alert(err); //打印错误
}
finally //finally 可以被省略...
{
alert("finally 总是会运行");
}
</script>
注意:try...catch 并不能很好的处理JavaScript 的语法错误。
示例:
<script type="text/javascript">
try
{
alert("触发语法错误")); //多了半边“)”
}
catch (_ex) //可以省略_ex参数
{
var err = "错误信息";
for (var i in _ex)
{
err += "\n参数名:" + i
+ "\t参数值:" + _ex[i];
}
alert(err); //打印错误
}
</script>
该示例并没有进入catch 块中。
D 使用相关调试器
在IE 和Firefox 浏览器中,可以使用相关的调试器或插件对JavaScript 进行调试。
● 在Firefox 浏览器中,可以使用其自带的“错误控制台”。操作步骤如下:
打开Firefox 浏览器 → 在菜单条“工具”中 → 选择“错误控制台”即可。
在没有其他插件的情况下,其自带的“错误控制台”是一个非常不错的选择。
另外,在Firefox 浏览器中,还有一些很不错的调试器,如:Venkman、Firebug 等。
Venkman 调试器安装后,可以在Firefox 浏览器 → 在菜单条“工具”中 → 选择“JavaScript Debugger ”命令启用;
Firebug 调试器安装后,可以在Firefox 浏览器 → 在菜单条“工具”中 → 选择“Firebug”→ 选择“打开 Firebug”即可;
● 在IE 浏览器中,可以使用 Microsoft Script Debugger 调试器
Microsoft Script Debugger 是微软随IE 4 一同发布的一个IE插件,可以从微软的官方网站上免费下载。
下载安装以后,必须将IE 浏览器的调试选项打开才能使用。操作步骤如下:
1> 打开IE 浏览器 → 选择菜单栏的“工具”→ “Internet 选项”命令 → “高级”选项卡 → 将“禁用脚本调试(Internet Explorer )”复选框中的勾去掉即可。
2> 当IE 浏览器正在浏览页面时,运行Microsoft Script Debugger 调试器工具即可进行调试。
在Microsoft Script Debugger 调试器的 Running Document 面板中选择开启的页面文件(只读),然后按F9 可以设置断点调试。另外,其Command Window 面板也是一个很有用的功能,它能在代码断点停止时,在其中输入变量名并回车,便可看到此时变量的值;Command Window 面板甚至可以接受简单的JavaScript 命令。但Microsoft Script Debugger 调试器自身还存在一个bug 问题。
如果要中断代码的运行,监视变量的值,则使用alert() 方法;
如果需要查看的值很多,则使用document.write() 方法,避免反复单击“确定”按钮;
B 使用window.onerror 事件
当页面出现异常时,onerror 事件会在window 对象上触发。它能在一定程度上告诉开发者相关的错误信息。
示例:
复制代码 代码如下:
<script type="text/javascript">
function myerror(_message,_url,_line)
{
alert("错误信息:" + _message
+"\n错误的URI:" + _url
+"\n错误的行数:" + _line
);
return true; //屏蔽系统的事件
}
//绑定错误事件
window.onerror = myerror;
//触发错误示例:
window,onload = test;
</script>
注意:在IE 中,触发error 事件后,正常的代码会继续运行,所有的变量和数据都会保存下来,在其onerror 事件处理方法中可以正常访问到;而在Firefox 中,触发error 事件后,一切都结束,所有的变量和数据都将被销毁。
C 使用 try...catch 语句找错误
示例:
复制代码 代码如下:
<script type="text/javascript">
try
{
alert(触发异常);
}
catch (_ex) //可以省略“_ex”参数
{
var err = "错误信息";
for (var i in _ex)
{
err += "\n参数名:" + i
+ "\t参数值:" + _ex[i];
}
alert(err); //打印错误
}
finally //finally 可以被省略...
{
alert("finally 总是会运行");
}
</script>
注意:try...catch 并不能很好的处理JavaScript 的语法错误。
示例:
复制代码 代码如下:
<script type="text/javascript">
try
{
alert("触发语法错误")); //多了半边“)”
}
catch (_ex) //可以省略_ex参数
{
var err = "错误信息";
for (var i in _ex)
{
err += "\n参数名:" + i
+ "\t参数值:" + _ex[i];
}
alert(err); //打印错误
}
</script>
该示例并没有进入catch 块中。
D 使用相关调试器
在IE 和Firefox 浏览器中,可以使用相关的调试器或插件对JavaScript 进行调试。
● 在Firefox 浏览器中,可以使用其自带的“错误控制台”。操作步骤如下:
打开Firefox 浏览器 → 在菜单条“工具”中 → 选择“错误控制台”即可。
在没有其他插件的情况下,其自带的“错误控制台”是一个非常不错的选择。
另外,在Firefox 浏览器中,还有一些很不错的调试器,如:Venkman、Firebug 等。
Venkman 调试器安装后,可以在Firefox 浏览器 → 在菜单条“工具”中 → 选择“JavaScript Debugger ”命令启用;
Firebug 调试器安装后,可以在Firefox 浏览器 → 在菜单条“工具”中 → 选择“Firebug”→ 选择“打开 Firebug”即可;
● 在IE 浏览器中,可以使用 Microsoft Script Debugger 调试器
Microsoft Script Debugger 是微软随IE 4 一同发布的一个IE插件,可以从微软的官方网站上免费下载。
下载安装以后,必须将IE 浏览器的调试选项打开才能使用。操作步骤如下:
1> 打开IE 浏览器 → 选择菜单栏的“工具”→ “Internet 选项”命令 → “高级”选项卡 → 将“禁用脚本调试(Internet Explorer )”复选框中的勾去掉即可。
2> 当IE 浏览器正在浏览页面时,运行Microsoft Script Debugger 调试器工具即可进行调试。
在Microsoft Script Debugger 调试器的 Running Document 面板中选择开启的页面文件(只读),然后按F9 可以设置断点调试。另外,其Command Window 面板也是一个很有用的功能,它能在代码断点停止时,在其中输入变量名并回车,便可看到此时变量的值;Command Window 面板甚至可以接受简单的JavaScript 命令。但Microsoft Script Debugger 调试器自身还存在一个bug 问题。