可以用来调试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 相关文章推荐
javascript网页关闭时提醒效果脚本
Oct 22 Javascript
面向对象的javascript(笔记)
Oct 06 Javascript
javascript时间自动刷新实现原理与步骤
Jan 06 Javascript
侧栏跟随滚动的简单实现代码
Mar 18 Javascript
判断复选框是否被选中的两种方法
Jun 04 Javascript
JavaScript实现更改网页背景与字体颜色的方法
Feb 02 Javascript
javascript 解决浏览器不支持的问题
Sep 24 Javascript
React Native如何消除启动时白屏的方法
Aug 08 Javascript
Vue组件创建和传值的方法
Aug 17 Javascript
jquery实现Ajax请求的几种常见方式总结
May 28 jQuery
vue 解决IOS10低版本白屏的问题
Nov 17 Javascript
SSM VUE Axios详解
Oct 05 Vue.js
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
二次元帅气男生排行榜,只想悄悄收藏系列
2020/03/04 日漫
一个图形显示IP的PHP程序代码
2007/10/19 PHP
php设置编码格式的方法
2013/03/05 PHP
PHP编译安装时常见错误解决办法
2015/05/28 PHP
PHP页面转UTF-8中文编码乱码的解决办法
2015/10/20 PHP
收集的一些Array及String原型对象的扩展实现代码
2010/12/05 Javascript
jquery选择符快速提取web表单数据示例
2014/03/27 Javascript
jquery插件corner实现圆角边框的方法
2015/03/09 Javascript
JavaScript继承学习笔记【新手必看】
2016/05/10 Javascript
详解AngularJS如何实现跨域请求
2016/08/22 Javascript
快速解决js开发下拉框中blur与click冲突
2016/10/10 Javascript
javascript基本数据类型及类型检测常用方法小结
2016/12/14 Javascript
react native与webview通信的示例代码
2017/09/25 Javascript
使用Bootstrap + Vue.js实现表格的动态展示、新增和删除功能
2017/11/27 Javascript
基于JavaScript实现每日签到打卡轨迹功能
2018/11/29 Javascript
微信小程序当前时间时段选择器插件使用方法详解
2018/12/28 Javascript
详解React中共享组件逻辑的三种方式
2021/02/02 Javascript
Python CSV模块使用实例
2015/04/09 Python
python Pygame的具体使用讲解
2017/11/03 Python
opencv改变imshow窗口大小,窗口位置的方法
2018/04/02 Python
python实现对输入的密文加密
2019/03/20 Python
python lambda函数及三个常用的高阶函数
2020/02/05 Python
appium+python adb常用命令分享
2020/03/06 Python
Python Pandas 对列/行进行选择,增加,删除操作
2020/05/17 Python
查看keras的默认backend实现方式
2020/06/19 Python
Python xlwings插入Excel图片的实现方法
2021/02/26 Python
微软加拿大官方网站:Microsoft Canada
2019/04/28 全球购物
美国孩之宝玩具官网:Hasbro Pulse
2019/06/24 全球购物
What's the difference between deep copy and shallow copy? (深拷贝与浅拷贝有什么区别)
2015/11/10 面试题
实习生自荐信范文分享
2013/11/27 职场文书
县级文明单位申报材料
2014/05/23 职场文书
单位租车协议书
2015/01/29 职场文书
民间借贷纠纷起诉书
2015/08/03 职场文书
2016先进工作者事迹材料
2016/02/25 职场文书
Python Parser的用法
2021/05/12 Python
JavaScript数组 几个常用方法总结
2021/11/11 Javascript