可以用来调试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的插件教程(Plugin)
Sep 03 Javascript
整理8个很棒的 jQuery 倒计时插件和教程
Dec 12 Javascript
如何判断鼠标是否在DIV的区域内
Nov 13 Javascript
js实现图片在未加载完成前显示加载中字样
Sep 03 Javascript
详解vue-router 2.0 常用基础知识点之router.push()
May 10 Javascript
AngularJS的ng-click传参的方法
Jun 19 Javascript
vue.js异步上传文件前后端实现代码
Aug 22 Javascript
JavaScript常用数组操作方法,包含ES6方法
May 10 Javascript
Vue 框架之键盘事件、健值修饰符、双向数据绑定
Nov 14 Javascript
vsCode安装使用教程和插件安装方法
Aug 24 Javascript
[原创]微信小程序获取网络类型的方法示例
Mar 01 Javascript
vue实现自定义多选按钮
Jul 16 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
《忧国的莫里亚蒂》先导宣传图与STAFF公开
2020/03/04 日漫
php面向对象全攻略 (十二) 抽象方法和抽象类
2009/09/30 PHP
ExtJS与PHP、MySQL实现存储的方法
2010/04/02 PHP
JSON 数据格式介绍
2012/01/13 Javascript
js自动生成的元素与页面原有元素发生堆叠的解决方法
2013/10/24 Javascript
js数组去重的方法汇总
2015/07/29 Javascript
js生成随机数的过程解析
2015/11/24 Javascript
JavaScript的MVVM库Vue.js入门学习笔记
2016/05/03 Javascript
【经验总结】编写JavaScript代码时应遵循的14条规律
2016/06/20 Javascript
jQuery文字提示与图片提示效果实现方法
2016/07/04 Javascript
用js控件div的滚动条,让它在内容更新时自动滚到底部的实现方法
2016/10/27 Javascript
从零开始学习Node.js系列教程四:多页面实现的数学运算示例
2017/04/13 Javascript
详解Vue2.0里过滤器容易踩到的坑
2017/06/01 Javascript
vue、react等单页面项目部署到服务器的方法及vue和react的区别
2018/09/29 Javascript
mpvue微信小程序多列选择器用法之省份城市选择的实现
2019/03/07 Javascript
AjaxFileUpload.js实现异步上传文件功能
2019/04/19 Javascript
taro小程序添加骨架屏的实现代码
2019/11/15 Javascript
[02:11]2016国际邀请赛中国区预选赛全程回顾
2016/07/01 DOTA
使用python实现个性化词云的方法
2017/06/16 Python
Python+PIL实现支付宝AR红包
2018/02/09 Python
pandas 使用apply同时处理两列数据的方法
2018/04/20 Python
Python编程中类与类的关系详解
2019/08/08 Python
原来我一直安装 Python 库的姿势都不对呀
2019/11/11 Python
python打印文件的前几行或最后几行教程
2020/02/13 Python
pandas之分组groupby()的使用整理与总结
2020/06/18 Python
anaconda安装pytorch1.7.1和torchvision0.8.2的方法(亲测可用)
2021/02/01 Python
详解Html5 监听拦截Android返回键方法
2018/04/18 HTML / CSS
PurCotton全棉时代官网:100%天然棉花生产的生活护理用品
2016/11/18 全球购物
英国灯具和灯泡网上商店:Lights.co.uk
2018/02/02 全球购物
商务日语毕业生自荐信范文
2013/11/14 职场文书
《他得的红圈圈最多》教学反思
2014/04/24 职场文书
微电影大赛策划方案
2014/06/05 职场文书
化学专业大学生职业生涯规划范文
2014/09/13 职场文书
面试通知短信
2015/04/20 职场文书
Redis高可用集群redis-cluster详解
2022/03/20 Redis
pt-archiver 主键自增
2022/04/26 MySQL