我想一个onerror事件添加到我的网站。
window.onerror = function() {
alert("an error");
}
但是,所有我得到的是:
notThere();
ReferenceError: notThere is not defined
我在想什么?
浏览器:Chrome浏览器26.0.1410.64米
重现步骤:
- 将代码添加到控制台。
- 添加notthere的()到控制台
我想一个onerror事件添加到我的网站。
window.onerror = function() {
alert("an error");
}
但是,所有我得到的是:
notThere();
ReferenceError: notThere is not defined
我在想什么?
浏览器:Chrome浏览器26.0.1410.64米
重现步骤:
该window.onerror
在Chrome的工作(见的jsfiddle - http://jsfiddle.net/PWSDF/ ),但显然不是在控制台-这有一定的道理。
当控制台直接产生一个错误window.onerror不会被触发。 它可以通过触发setTimeout
虽然,例如, setTimeout(function() { notThere(); }, 0);
可能重复: 铬:将代码中的错误从开发者控制台触发window.onerror调用?
其他一些原因,你可能无法在处理错误window.onerror
(除了提到的):
window.onerror
后你。 如果您使用的角度,误差不会通过window.onerror
。 您可以使用此工厂来处理它们:
.factory('$exceptionHandler', function() { return function errorCatcherHandler(exception, cause) { console.error(exception); if (window.OnClientError) window.OnClientError(exception); }; })
看到:
https://docs.angularjs.org/api/ng/service/ $ exceptionHandler的
http://bahmutov.calepin.co/catch-all-errors-in-angular-app.html