晴明的博客园 GitHub      CodePen      CodeWars     

[js] js全局错误(error)收集 (监控)

window.onerror = function (message, url, lineNo, columnNo, error)

参数:

message {String} 错误信息。

url {String} 发生错误对应的脚本路径。

lineNo {Number} 错误发生的行号。

columnNo {Number} 错误发生的列号。

error {Object} 具体的 error 对象,包含更加详细的错误调用堆栈信息。

兼容性问题:

不同浏览器对同一个错误的 message 是不一样的。
IE10以下浏览器只能获取到 message,url 和 lineNo这三个参数,获取不到columnNo 和 error,不过 window.event 对象提供了 errorLineerrorCharacter,以此来对应相应的行列号信息。
在使用onerror的时候,可以使用arguments.callee.caller 来递归出调用堆栈,这一类信息是最直接的错误信息信息。

跨域问题

跨域情况下,返回的结果是 Script error.

1.script 添加 crossorigin 属性

    <script crossorigin src="...">

2.cors

header('Access-Control-Allow-Origin: *');

3.反向代理

可能要注意的点

多次注册 error 事件,不会重复执行多个回调。
注意错误报告收集的机制,去除冗余数据。
window.onerror需要在错误发生前绑定,所以该方法应该放在顶部依赖比较合适。

示例

代码

posted @ 2017-08-04 19:49  晴明桑  阅读(704)  评论(0编辑  收藏  举报