可以用来调试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 相关文章推荐
基于JQuery的数字改变的动画效果--可用来做计数器
Aug 11 Javascript
javascript弹出带文字信息的提示框效果
Jul 19 Javascript
JS图片等比例缩放方法完整示例
Aug 03 Javascript
js实现的光标位置工具函数示例
Oct 03 Javascript
Web前端框架Angular4.0.0 正式版发布
Mar 28 Javascript
bing Map 在vue项目中的使用详解
Apr 09 Javascript
javaScript强制保留两位小数的输入数校验和小数保留问题
May 09 Javascript
electron实现qq快捷登录的方法示例
Oct 22 Javascript
基于React Native 0.52实现轮播图效果
Aug 25 Javascript
小程序实现长按保存图片的方法
Dec 31 Javascript
在vue中通过render函数给子组件设置ref操作
Nov 17 Vue.js
vue本地构建热更新卡顿的问题“75 advanced module optimization”完美解决方案
Aug 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
各种咖啡的英文名子是什么
2021/03/03 新手入门
php动态生成函数示例
2014/03/21 PHP
教你如何用php实现LOL数据远程获取
2014/06/10 PHP
ThinkPHP CURD方法之field方法详解
2014/06/18 PHP
php 模拟 asp.net webFrom 按钮提交事件实例
2014/10/13 PHP
PHP基于迭代实现文件夹复制、删除、查看大小等操作的方法
2017/08/11 PHP
ThinkPHP框架获取最后一次执行SQL语句及变量调试简单操作示例
2018/06/13 PHP
自写简单JS判断是否已经弹出页面
2010/10/20 Javascript
js中判断Object、Array、Function等引用类型对象是否相等
2012/08/29 Javascript
在JavaScript里防止事件函数高频触发和高频调用的方法
2014/09/06 Javascript
JavaScript设计模式之外观模式实例
2014/10/10 Javascript
JavaScript控制listbox列表框的项目上下移动的方法
2015/03/18 Javascript
jQuery实现判断滚动条到底部
2015/06/23 Javascript
js实现表单Radio切换效果的方法
2015/08/17 Javascript
jQuery事件绑定on()与弹窗实现代码
2016/04/28 Javascript
jQuery Easyui 验证两次密码输入是否相等
2016/05/13 Javascript
深入理解Javascript中的自执行匿名函数
2016/06/03 Javascript
JS检测数组类型的方法小结
2017/03/14 Javascript
react-native动态切换tab组件的方法
2018/07/07 Javascript
基于vue-router 多级路由redirect 重定向的问题
2018/09/03 Javascript
vue+iview/elementUi实现城市多选
2019/03/28 Javascript
js 计算图片内点个数的示例代码
2019/04/04 Javascript
JavaScript生成随机验证码代码实例
2019/09/28 Javascript
Vue+Spring Boot简单用户登录(附Demo)
2020/11/12 Javascript
图文详解WinPE下安装Python
2016/05/17 Python
python利用dir函数查看类中所有成员函数示例代码
2017/09/08 Python
使用Python的SymPy库解决数学运算问题的方法
2019/03/27 Python
python判断一个对象是否可迭代的例子
2019/07/22 Python
解决python ThreadPoolExecutor 线程池中的异常捕获问题
2020/04/08 Python
详解Java中一维、二维数组在内存中的结构
2021/02/11 Python
Whittard官方海外旗舰店:英国百年茶叶品牌
2018/02/22 全球购物
企业门卫岗位职责
2013/12/12 职场文书
中文师范生自荐信
2014/01/30 职场文书
村级环境卫生整治方案
2014/05/04 职场文书
演讲比赛的活动方案
2014/08/28 职场文书
2015年计划生育责任书
2015/05/08 职场文书