可以用来调试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 相关文章推荐
当自定义数据属性为json格式字符串时jQuery的data api问题探讨
Feb 18 Javascript
js判断横竖屏及禁止浏览器滑动条示例
Apr 29 Javascript
node.js中的fs.unlink方法使用说明
Dec 15 Javascript
详解AngularJS中module模块的导入导出
Dec 10 Javascript
动态生成的DOM不会触发onclick事件的原因及解决方法
Aug 06 Javascript
什么是JavaScript中的结果值?
Oct 08 Javascript
Canvas 绘制粒子动画背景
Feb 15 Javascript
seajs实现强制刷新本地缓存的方法分析
Oct 16 Javascript
D3.js(v3)+react 实现带坐标与比例尺的散点图 (V3版本)
May 09 Javascript
js使用文档就绪函数动态改变页面内容示例【innerHTML、innerText】
Nov 07 Javascript
Vue如何使用混合Mixins和插件开发详解
Feb 05 Javascript
关于对TypeScript泛型参数的默认值理解
Jul 15 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中将汉字转换成拼音的函数代码
2012/09/08 PHP
PHP中iconv函数转码时截断字符问题的解决方法
2015/01/21 PHP
php使用pclzip类实现文件压缩的方法(附pclzip类下载地址)
2016/04/30 PHP
php上传图片类及用法示例
2016/05/11 PHP
PHP导出带样式的Excel示例代码
2016/08/28 PHP
Javascript中的相等与不等运算
2010/04/25 Javascript
JavaScript中使用构造函数实现继承的代码
2010/08/12 Javascript
javascript分页代码(当前页码居中)
2012/09/20 Javascript
Three.js源码阅读笔记(物体是如何组织的)
2012/12/27 Javascript
利用JavaScript实现新闻滚动效果(实例代码)
2013/11/27 Javascript
js点击button按钮跳转到另一个新页面
2014/10/10 Javascript
使用jQuery实现图片遮罩半透明坠落遮挡
2015/03/16 Javascript
Angular ng-repeat指令实例以及扩展部分
2016/12/26 Javascript
jQuery插件jquery.kxbdmarquee.js实现无缝滚动效果
2017/02/15 Javascript
JS开发中基本数据类型具体有哪几种
2017/10/19 Javascript
JS+WCF实现进度条实时监测数据加载量的方法详解
2017/12/19 Javascript
vue实现样式之间的切换及vue动态样式的实现方法
2017/12/19 Javascript
JavaScript中变量提升与函数提升经典实例分析
2018/07/26 Javascript
chosen实现省市区三级联动
2018/08/16 Javascript
15个顶级开源JavaScript框架和库
2018/10/10 Javascript
详解如何为你的angular app构建一个第三方库
2018/12/07 Javascript
Vuex modules模式下mapState/mapMutations的操作实例
2019/10/17 Javascript
[56:45]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第一局
2016/02/28 DOTA
[44:40]2018DOTA2亚洲邀请赛3月30日 小组赛A组Liquid VS OG
2018/03/31 DOTA
[49:08]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第一场 11.27
2020/12/01 DOTA
Python去除列表中重复元素的方法
2015/03/20 Python
Python编程求解二叉树中和为某一值的路径代码示例
2018/01/04 Python
python设置值及NaN值处理方法
2018/07/03 Python
python实现翻转棋游戏(othello)
2019/07/29 Python
如何真正的了解python装饰器
2020/08/14 Python
教师自荐信范文
2013/12/09 职场文书
乡镇八一建军节活动方案
2014/08/24 职场文书
当幸福来敲门观后感
2015/06/01 职场文书
Win11怎样将锁屏账户头像图片改成动画视频
2021/11/21 数码科技
Python+OpenCV实现在图像上绘制矩形
2022/03/21 Python
纯CSS实现一个简单步骤条的示例代码
2022/07/15 HTML / CSS