window.onerror无法在chrome中工作

时间:2013-04-24 12:48:58

标签: google-chrome window onerror

我正在尝试向我的网站添加一个onerror事件。

window.onerror = function() {
    alert("an error");
}

但我得到的只是:

notThere();
ReferenceError: notThere is not defined

我错过了什么?

浏览器:Chrome 26.0.1410.64 m

重现的步骤:

  • 将代码添加到控制台。
  • 将notThere()添加到控制台

3 个答案:

答案 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