可以用来调试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 相关文章推荐
在标题栏显示新消息提示,很多公司项目中用到这个方法
Nov 04 Javascript
js用Date对象处理时间实现思路及代码
Jan 31 Javascript
一个仿糯米弹框效果demo
Jul 22 Javascript
node.js中的console.error方法使用说明
Dec 10 Javascript
浅谈JavaScript的内置对象和浏览器对象
Jun 03 Javascript
jQuery编写textarea输入字数限制代码
Mar 23 jQuery
vue+vuex+axios+echarts画一个动态更新的中国地图的方法
Dec 19 Javascript
vue2.0之多页面的开发的示例
Jan 30 Javascript
jQuery简单实现的HTML页面文本框模糊匹配查询功能完整示例
May 09 jQuery
微信小程序rich-text富文本用法实例分析
May 20 Javascript
vue.js实现三级菜单效果
Oct 19 Javascript
JavaScript检测浏览器是否支持CSS变量代码实例
Apr 03 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
4月1日重磅发布!《星际争霸II》6.0.0版本更新
2020/04/09 星际争霸
如何从一个php文件向另一个地址post数据,不用表单和隐藏的变量的
2007/03/06 PHP
使用php shell命令合并图片的代码
2011/06/23 PHP
基于initPHP的框架介绍
2013/04/18 PHP
php支付宝接口用法分析
2015/01/04 PHP
JavaScript为对象原型prototype添加属性的两种方式
2010/08/01 Javascript
常见JS效果之图片减速度滚动实现代码
2011/12/08 Javascript
jQuery获取CSS样式中的颜色值的问题,不同浏览器格式不同的解决办法
2013/05/13 Javascript
Jquery下EasyUI组件中的DataGrid结果集清空方法
2014/01/06 Javascript
Jquery 返回json数据在IE浏览器中提示下载的问题
2014/05/18 Javascript
jQuery中:visible选择器用法实例
2014/12/30 Javascript
Angularjs中的事件广播 —全面解析$broadcast,$emit,$on
2016/05/17 Javascript
用Vue.js实现监听属性的变化
2016/11/17 Javascript
jQuery动态移除和添加背景图片的方法详解
2017/03/07 Javascript
less简单入门(CSS 预处理语言)
2017/03/08 Javascript
JS数组去重(4种方法)
2017/03/27 Javascript
微信小程序多音频播放进度条问题
2018/08/28 Javascript
JavaScript动态检测密码强度原理及实现方法详解
2019/06/11 Javascript
Python 解析XML文件
2009/04/15 Python
数据清洗--DataFrame中的空值处理方法
2018/07/03 Python
彻彻底底地理解Python中的编码问题
2018/10/15 Python
Python3模拟curl发送post请求操作示例
2019/05/03 Python
Python 3.8中实现functools.cached_property功能
2019/05/29 Python
python自动化测试之异常及日志操作实例分析
2019/11/09 Python
Python绘图实现显示中文
2019/12/04 Python
关于ResNeXt网络的pytorch实现
2020/01/14 Python
Django model class Meta原理解析
2020/11/14 Python
python中的列表和元组区别分析
2020/12/30 Python
利用css3 translate完美实现表头固定效果
2017/02/28 HTML / CSS
美国玩具公司:U.S.Toy
2018/05/19 全球购物
Viking比利时:购买办公用品
2019/10/30 全球购物
高中美术教师事迹材料
2014/08/22 职场文书
关于九一八事变的演讲稿2014
2014/09/17 职场文书
爱心募捐感谢信
2015/01/22 职场文书
2015年七七事变78周年纪念活动方案
2015/05/06 职场文书
Python使用Opencv打开笔记本电脑摄像头报错解问题及解决
2022/06/21 Python