可以用来调试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 appendChild,innerHTML,join性能比较代码
Aug 29 Javascript
jquery ui dialog ie8出现滚动条的解决方法
Dec 06 Javascript
JavaScript获取flash对象与网上的有所不同
Apr 21 Javascript
JavaScript设计模式之工厂方法模式介绍
Dec 28 Javascript
jquery实现简单的表单验证
Nov 17 Javascript
Node.js中Request模块处理HTTP协议请求的基本使用教程
Mar 31 Javascript
jquery获取复选框checkbox的值的简单实现方法
May 26 Javascript
jquery.validate.js 多个相同name的处理方式
Jul 10 jQuery
超出JavaScript安全整数限制的数字计算BigInt详解
Jun 24 Javascript
vue的过滤器filter实例详解
Sep 17 Javascript
Echarts地图添加引导线效果(labelLine)
Sep 30 Javascript
JS实现超级好看的鼠标小尾巴特效
Dec 01 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+js实现异步图片上传实例分享
2014/06/02 PHP
php调用nginx的mod_zip模块打包ZIP文件
2014/06/11 PHP
PHP命名空间(Namespace)简明教程
2014/06/11 PHP
PHP中的Session对象如何使用
2015/09/25 PHP
JavaScript 判断日期格式是否正确的实现代码
2011/07/04 Javascript
javascript 事件处理程序介绍
2012/06/27 Javascript
JavaScript将Table导出到Excel实现思路及代码
2013/03/13 Javascript
基于JavaScript 类的使用详解
2013/05/07 Javascript
JavaScript String.replace函数参数实例说明
2013/06/06 Javascript
用js格式化金额可设置保留的小数位数
2014/05/09 Javascript
jQuery中replaceAll()方法用法实例
2015/01/16 Javascript
PHPMyAdmin导入时提示文件大小超出PHP限制的解决方法
2015/03/30 Javascript
分享一些常用的jQuery动画事件和动画函数
2015/11/27 Javascript
win7下安装配置node.js+express开发环境
2015/12/06 Javascript
AngularJS入门教程之ng-class 指令用法
2016/08/01 Javascript
基于Vue实现页面切换左右滑动效果
2020/06/29 Javascript
element ui 对话框el-dialog关闭事件详解
2018/02/26 Javascript
快速解决vue动态绑定多个class的官方实例语法无效的问题
2018/09/05 Javascript
Vue中的基础过渡动画及实现原理解析
2018/12/04 Javascript
vue移动端模态框(可传参)的实现
2019/11/20 Javascript
Vue如何获取数据列表展示
2019/12/11 Javascript
[01:06:54]DOTA2-DPC中国联赛 正赛 RNG vs Dragon BO3 第一场 1月24日
2021/03/11 DOTA
Python3实现连接SQLite数据库的方法
2014/08/23 Python
python 网络编程详解及简单实例
2017/04/25 Python
Django框架自定义session处理操作示例
2019/05/27 Python
python制作简单五子棋游戏
2019/06/18 Python
python argparser的具体使用
2019/11/10 Python
解决Python使用列表副本的问题
2019/12/19 Python
Python中的None与 NULL(即空字符)的区别详解
2020/09/24 Python
线程同步的方法
2016/11/23 面试题
中学实习教师自我鉴定
2013/12/12 职场文书
共产党员公开承诺践诺书
2014/05/28 职场文书
高效课堂标语
2014/06/26 职场文书
二年级语文上册复习计划
2015/01/19 职场文书
心得体会该怎么写呢?
2019/06/27 职场文书
Python尝试实现蒙特卡罗模拟期权定价
2022/04/21 Python