Jquey 重拾之路之一_JS错误机制

 

 

为了屏蔽JS错误,为了应付所谓的领导的突击检查系统进度,可以暂时另令你的页面清净一下。

出现兼容性问题
看一个例子:

HTML code
   
   
< script > window.onerror = function (){ document.write( " encountered JS errors. " ); } as(); </ script >

上面代码中执行了一个未定义的JS方法 as()。当执行时,找不到定义,会报JS错误。
这段代码,在IE和Firefox里都有效果,在页面上输出了: encountered JS errors.
在Chrome和Safati中,都在控制台报了JS错误。
Chrome:Uncaught ReferenceError: as is not defined
Safari:ReferenceError: Can't find variable: as
也就是说,在Chrome和Safari中,window.onerror未起作用。

可见,IE 和 Firefox 提供了对 window.onerror 事件的支持,当页面内的 JavaScript 脚本出现错误时,window.onerror 被触发。

标准中的说法
HTML4.01
W3C HTML4.01 规范第 18.2.3 节介绍了 HTML 中的固有事件(Intrinsic events),其中并没有 onerror 事件。

HTML5  
在 HTML5 规范草案中描述了 window 对象的事件处理程序,其中有 onerror 事件存在,详细情况请参照草案说明:6.1.6.2 Event handlers on elements。可见,各浏览器还没有统一此实现。

MSDN和MDC  
根据 MSDN Mozilla Developer Center 中的描述,当页面中的脚本出错的时候就会触发 window.onerror 事件,这个事件的监听器(event handler)拥有三个参数:msg(错误消息内容)、url(发生错误的页面的 URL)、line(发生错误的代码所在行行号)。  
而浏览器是否按照其默认方式显示错误消息,取决于 onerror 事件的返回值。若返回 false,则在浏览器控制台(若有)中显示错误消息。反之则不再显示错误消息。

可见,对window.error的支持差异来自标准自身的不一致性,啥时候HTML5正式发布了,啥时候这个问题也就解决了吧应该。

所以,还是放弃使用window.onerror吧,使用try-catch捕捉错误是比较标准的做法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值