无。
IE 和 Firefox 提供了对 window.onerror 事件的支持,当页面内的 JavaScript 脚本出现错误时,window.onerror 被触发。
若希望通过 window.onerror 事件屏蔽页面中的脚本错误,或者获取页面脚本错误的信息,则在不同浏览器中会产生差异。
IE6 IE7 IE8 Firefox |
---|
W3C HTML4.01 规范第 18.2.3 节介绍了 HTML 中的固有事件(Intrinsic events),其中并没有 onerror 事件。
在 HTML5 规范草案中描述了 window 对象的事件处理程序,其中有 onerror 事件存在,详细情况请参照草案说明:6.1.6.2 Event handlers on elements。
根据 MSDN 及 Mozilla Developer Center 中的描述,当页面中的脚本出错的时候就会触发 window.onerror 事件,这个事件的监听器(event handler)拥有三个参数:msg(错误消息内容)、url(发生错误的页面的 URL)、line(发生错误的代码所在行行号)。
而浏览器是否按照其默认方式显示错误消息,取决于 onerror 事件的返回值。若返回 false,则在浏览器控制台(若有)中显示错误消息。反之则不再显示错误消息。
分析以下代码:
<script> window.onerror = function (msg, url, line) { alert(url + ":\nline:" + line + "\n" + msg); return true; } asd </script>
上面代码为 window.onerror 事件绑定了一个监听器,并试图在脚本出错的时候显示出脚本出错时显示出错页面 URL、行号及错误信息。
在各浏览器中运行结果为:
IE6 IE7 IE8 | Firefox | Chrome | Safari | Opera |
---|---|---|---|---|
window.onerror.html:
line:6 'asd' 未定义 |
window.onerror.html:
line:6 asd is not defined |
无 | ||
控制台提示: | ||||
无 | Uncaught ReferenceError: asd is not defined | ReferenceError: Can't find variable: asd | Uncaught exception: ReferenceError: Undefined variable: asd |
可见,window.onerror 事件仅 IE、Firefox 可以被触发,返回了需要的信息,并屏蔽了控制台的错误提示。
放弃使用 window.onerror,通过合理使用 try-catch 来达到近似的效果。
操作系统版本: | Windows 7 Ultimate build 7600 |
---|---|
浏览器版本: |
IE6
IE7 IE8 Firefox 3.6.7 Chrome 4.0.472.0 dev Safari 5.0 Opera 10.60 |
测试页面: | window.onerror.html |
本文更新时间: | 2010-07-22 |
window onerror 错误 event