可以用来调试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 相关文章推荐
JS的IE和Firefox兼容性集锦
Dec 11 Javascript
jQuery取id有.的值的方法
May 21 Javascript
jQuery回调函数的定义及用法实例
Dec 23 Javascript
JavaScript的类型、值和变量小结
Jul 09 Javascript
JavaScript中的函数(二)
Dec 23 Javascript
关于不同页面之间实现参数传递的几种方式讨论
Feb 13 Javascript
javascript中BOM基础知识总结
Feb 14 Javascript
webpack中CommonsChunkPlugin详细教程(小结)
Nov 09 Javascript
vue组件name的作用小结
May 23 Javascript
jQuery实现的点击图片居中放大缩小功能示例
Jan 16 jQuery
在layui框架中select下拉框监听更改事件的例子
Sep 20 Javascript
9个JavaScript日常开发小技巧
Oct 06 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
js 实现复制到粘贴板的功能代码
2010/05/13 Javascript
另一个javascript小测验(代码集合)
2011/07/27 Javascript
jquery中.add()的使用分析
2013/04/26 Javascript
JS获取当前网址、主机地址项目根路径
2013/11/19 Javascript
玩转方法:call和apply
2014/05/08 Javascript
Javascript中设置默认参数值示例
2014/09/11 Javascript
JS实现网页标题栏显示当前时间和日期的完整代码
2015/11/02 Javascript
谷歌Chrome浏览器扩展程序开发小记
2016/01/06 Javascript
js跨域资源共享 基础篇
2016/07/02 Javascript
JS实现图文并茂的tab选项卡效果示例【附demo源码下载】
2016/09/21 Javascript
Bootstrap输入框组件简单实现代码
2017/03/06 Javascript
Bootstrap栅格系统的使用详解
2017/10/30 Javascript
jQuery 实现倒计时天,时,分,秒功能
2018/07/31 jQuery
小程序登录/注册页面设计的实现代码
2019/05/24 Javascript
vue学习笔记之slot插槽基本用法实例分析
2020/02/01 Javascript
[01:04]DOTA2:伟大的Roshan雕塑震撼来临
2015/01/30 DOTA
[54:06]OG vs TNC 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python目录操作之python遍历文件夹后将结果存储为xml
2014/01/27 Python
python之Character string(实例讲解)
2017/09/25 Python
python批量导入数据进Elasticsearch的实例
2018/05/30 Python
Python使用enumerate获取迭代元素下标
2020/02/03 Python
python压包的概念及实例详解
2021/02/17 Python
纯css3实现宠物小鸡实例代码
2018/10/08 HTML / CSS
HTML5新增的Css选择器、伪类介绍
2013/08/07 HTML / CSS
世界上最大的折扣香水店:FragranceNet.com
2016/10/26 全球购物
美国领先的医疗警报服务:Philips Lifeline
2018/03/12 全球购物
Ref与out有什么不同
2012/11/24 面试题
施惠特软件测试面试题以及笔试题
2015/05/13 面试题
机械设计职业生涯规划书
2013/12/27 职场文书
库房保管员岗位职责
2014/04/07 职场文书
12岁生日演讲稿
2014/05/14 职场文书
领导班子个人对照检查剖析材料
2014/09/29 职场文书
授权收款委托书范本
2014/10/10 职场文书
收入及婚姻状况证明
2014/11/20 职场文书
幼儿园体操比赛口号
2015/12/25 职场文书
Python必备技巧之字符数据操作详解
2022/03/23 Python