可以用来调试JavaScript错误的解决方案


Posted in Javascript onAugust 07, 2010

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 问题。

Javascript 相关文章推荐
jquery.validate使用攻略 第一部
Jul 01 Javascript
读jQuery之八 包装事件对象
Jun 21 Javascript
获取3个数组不重复的值的具体实现
Dec 30 Javascript
JavaScript闭包详解
Feb 02 Javascript
bootstrap table 服务器端分页例子分享
Feb 10 Javascript
javascript基础知识分享之类与函数化
Feb 13 Javascript
AngularJS基础 ng-dblclick 指令用法
Aug 01 Javascript
JavaScript使用delete删除数组元素用法示例【数组长度不变】
Jan 17 Javascript
ng2学习笔记之bootstrap中的component使用教程
Mar 09 Javascript
js将当前时间格式化为 年-月-日 时:分:秒的实现代码
Jan 20 Javascript
vue实现同一个页面可以有多个router-view的方法
Sep 20 Javascript
JS高级程序设计之class继承重点详解
Jul 07 Javascript
DLL+ ActiveX控件+WEB页面调用例子
Aug 07 #Javascript
JavaScript中继承的一些示例方法与属性参考
Aug 07 #Javascript
javascript 防止刷新,后退,关闭
Aug 07 #Javascript
纯CSS打造的导航菜单(附jquery版)
Aug 07 #Javascript
基于jquery的商品展示放大镜
Aug 07 #Javascript
jquery autocomplete自动完成插件的的使用方法
Aug 07 #Javascript
jQuery的实现原理的模拟代码 -5 Ajax
Aug 07 #Javascript
You might like
PHP 5.0对象模型深度探索之绑定
2006/09/05 PHP
PHP Socket 编程
2010/04/09 PHP
如何使用Linux的Crontab定时执行PHP脚本的方法
2011/12/19 PHP
基于php上传图片重命名的6种解决方法的详细介绍
2013/04/28 PHP
phpmailer发送gmail邮件实例详解
2013/06/24 PHP
php中怎么搜索相关联数组键值及获取之
2013/10/17 PHP
PHP解密Unicode及Escape加密字符串
2015/05/17 PHP
PHP正则表达式之捕获组与非捕获组
2015/11/06 PHP
PHP获取昨天、今天及明天日期的方法
2016/02/03 PHP
php正则表达式基本知识与应用详解【经典教程】
2017/04/17 PHP
PHP+redis实现的悲观锁机制示例
2018/06/12 PHP
Laravel 之url参数,获取路由参数的例子
2019/10/21 PHP
javascript 按回车键相应按钮提交事件
2009/11/02 Javascript
JavaScript实现表格排序方法
2013/06/14 Javascript
js学习阶段总结(必看篇)
2016/06/16 Javascript
数据结构中的各种排序方法小结(JS实现)
2016/07/23 Javascript
angular $watch 一个变量的变化(实例讲解)
2017/08/02 Javascript
基于layui实现高级搜索(筛选)功能
2019/07/26 Javascript
p5.js码绘“跳动的小正方形”的实现代码
2019/10/22 Javascript
Openlayers显示瓦片网格信息的方法
2020/09/28 Javascript
vue 虚拟DOM的原理
2020/10/03 Javascript
Vue单页面应用中实现Markdown渲染
2021/02/14 Vue.js
Python3读取zip文件信息的方法
2015/05/22 Python
Python中shape计算矩阵的方法示例
2017/04/21 Python
python获取代理IP的实例分享
2018/05/07 Python
一篇文章搞懂Python的类与对象名称空间
2018/12/10 Python
python3.6使用tkinter实现弹跳小球游戏
2019/05/09 Python
Marc Jacobs官方网站:美国奢侈品牌
2017/08/29 全球购物
TUMI马来西亚官方网站:国际领先的高品质商旅箱包品牌
2018/04/26 全球购物
求职简历中自我评价
2014/01/28 职场文书
2014年党员承诺书范文
2014/05/20 职场文书
公安交警中队队长个人对照检查材料思想汇报
2014/10/05 职场文书
自荐信格式模板
2015/03/27 职场文书
民事上诉状范文
2015/05/22 职场文书
python 实现定时任务的四种方式
2021/04/01 Python
PHP中strval()函数实例用法
2021/06/07 PHP