我正在尝试向我的网站添加一个onerror事件。
window.onerror = function() {
alert("an error");
}
但我得到的只是:
notThere();
ReferenceError: notThere is not defined
我错过了什么?
浏览器:Chrome 26.0.1410.64 m
重现的步骤:
答案 0 :(得分:48)
window.onerror。 可以通过setTimeout
触发,例如,setTimeout(function() { notThere(); }, 0);
可能重复:Chrome: Will an error in code invoked from the dev console trigger window.onerror?
答案 1 :(得分:32)
window.onerror
适用于Chrome(请参阅jsfiddle - http://jsfiddle.net/PWSDF/),但显然不在控制台中 - 这是有道理的。
答案 2 :(得分:20)
您可能无法处理window.onerror
中的错误的其他一些原因(除了上述提示之外):
window.onerror
。如果您使用的是Angular,则错误不会通过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