可以用来调试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 相关文章推荐
用prototype实现的简单小巧的多级联动菜单
Mar 24 Javascript
js中的string.format函数代码
Aug 11 Javascript
深入理解javascript中defer的作用
Dec 11 Javascript
页面元素绑定jquery toggle后元素隐藏的解决方法
Mar 27 Javascript
javasctipt如何显示几分钟前、几天前等
Apr 30 Javascript
jQuery实现不断闪烁文字的方法
May 15 Javascript
AngularJs $parse、$eval和$observe、$watch详解
Sep 21 Javascript
Ubuntu 16.04 64位中搭建Node.js开发环境教程
Oct 19 Javascript
JavaScript判断浏览器对CSS3属性是否支持的多种方法
Nov 13 Javascript
vue实现滑动超出指定距离回顶部功能
Jul 31 Javascript
js实现橱窗展示效果
Jan 11 Javascript
vue 在单页面应用里使用二级套嵌路由
Dec 19 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
虹吸壶是谁发明的?煮出来的咖啡好喝吗
2021/03/04 冲泡冲煮
ThinkPHP3.1查询语言详解
2014/06/19 PHP
PHP中使用socket方式GET、POST数据实例
2015/04/02 PHP
Yii2 ActiveRecord多表关联及多表关联搜索的实现
2016/06/30 PHP
Laravel构建即时应用的一种实现方法详解
2017/08/31 PHP
IE和FireFox(FF)中js和css的不同
2009/04/13 Javascript
详解强大的jQuery选择器之基本选择器、层次选择器
2012/02/07 Javascript
js实现横向伸展开的二级导航菜单代码
2015/08/28 Javascript
Vue表单实例代码
2016/09/05 Javascript
通过button将form表单的数据提交到action层的实例
2017/09/08 Javascript
ui-router中使用ocLazyLoad和resolve的具体方法
2017/10/18 Javascript
微信小程序实现给嵌套template模板传递数据的方式总结
2017/12/18 Javascript
AngularJS 监听变量变化的实现方法
2018/10/09 Javascript
使用 webpack 插件自动生成 vue 路由文件的方法
2019/08/20 Javascript
nodejs简单抓包工具使用详解
2019/08/23 NodeJs
javascript实现随机抽奖功能
2020/12/30 Javascript
[02:40]2018年度DOTA2最佳新人-完美盛典
2018/12/16 DOTA
Python Grid使用和布局详解
2018/06/30 Python
python处理multipart/form-data的请求方法
2018/12/26 Python
Python 实现数据结构-堆栈和队列的操作方法
2019/07/17 Python
PyQT5 实现快捷键复制表格数据的方法示例
2020/06/19 Python
基于python调用jenkins-cli实现快速发布
2020/08/14 Python
python如何构建mock接口服务
2021/01/28 Python
信息部岗位职责
2013/11/12 职场文书
元宵节主持词
2014/03/25 职场文书
毕业生工作求职信
2014/06/30 职场文书
高中生第一学年自我鉴定
2014/09/12 职场文书
党员群众路线教育实践活动学习笔记
2014/11/05 职场文书
担保书范文
2015/01/20 职场文书
小学元宵节活动总结
2015/02/06 职场文书
工作简报格式范文
2015/07/21 职场文书
生产车间管理制度
2015/08/04 职场文书
商务英语邮件开头问候语
2015/11/10 职场文书
Python网络编程之ZeroMQ知识总结
2021/04/25 Python
SpringBoot项目中控制台日志的保存配置操作
2021/06/18 Java/Android
Redis实现订单过期删除的方法步骤
2022/06/05 Redis