当JavaScript运行时错误(包括语法错误)发生时,window会触发一个ErrorEvent接口的error事件,并执行window.onerror()。
当一项资源(如<img>或<script>
)加载失败,加载资源的元素会触发一个Event接口的error事件,并执行onerror()处理函数。这些error事件不会向上冒泡到window。
加载一个全局的error事件处理函数可用于自动收集错误报告。
语法
window.onerror = function (message, source, lineno, colno, error) {
console.log(message, source, lineno, colno, error)
console.log(source)
console.log(lineno)
console.log(colno)
console.log(error)
errorMonitor(message, source, lineno, colno, error);
return true
}
参数:
- message:错误信息(字符串)。
- source:发生错误的脚本URL(字符串)
- lineno:发生错误的行号(数字)
- colno:发生错误的列号(数字)
- error:Error对象(对象)
除了以上参数,该事件还可以返回true,阻止执行默认事件。
注意事项 - 跨域
在不同域中的语法发生错误的时候,为避免信息泄露,语法错误的细节将不会报告,而代之简单的"Script error."。
在某些浏览器中,通过<script>
标签使用crossorigin属性并要求服务器发送适当的 CORS HTTP 响应头,该行为可被覆盖。
window.onerror = function (message, source, lineno, colno, error) {
if(message == 'Script error.') {
console.log('js无法访问,请通过浏览器控制台查看详情')
return false
}
console.log(message, source, lineno, colno, error)
return true
}
若无法避免可以在返回Script error.
的情况下告知通过浏览器控制台查看。