window.onerror无法在chrome中工作

Din*_*ler 35 google-chrome window onerror

我想在我的网站上添加一个onerror事件.

window.onerror = function() {
    alert("an error");
}
Run Code Online (Sandbox Code Playgroud)

但我得到的只是:

notThere();
ReferenceError: notThere is not defined
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

浏览器:Chrome 26.0.1410.64米

重现步骤:

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

wrs*_*der 50

控制台直接生成错误时,不会触发window.onerror.它可以通过setTimeout,例如,setTimeout(function() { notThere(); }, 0);

可能重复:Chrome:从开发控制台调用的代码中的错误是否会触发window.onerror?


Lac*_*zar 33

window.onerrorChrome中的作品(参见jsfiddle - http://jsfiddle.net/PWSDF/),但显然不在控制台中 - 这是有道理的.

  • 它有什么意义? (32认同)
  • 我想,它会劫持错误而不是在控制台中显示错误. (3认同)

NoO*_*One 22

您可能无法处理错误的其他一些原因window.onerror(除了上面提到的):

  • 另一个图书馆window.onerror在你之后.
  • 如果您使用的是Angular,则错误不会通过window.onerror.你必须使用这个工厂处理它们:

        .factory('$exceptionHandler', function() {
            return function errorCatcherHandler(exception, cause) {
                console.error(exception);
                if (window.OnClientError) window.OnClientError(exception);
            };
        })
    
    Run Code Online (Sandbox Code Playgroud)

看到:

https://docs.angularjs.org/api/ng/service/ $ exceptionHandler

http://bahmutov.calepin.co/catch-all-errors-in-angular-app.html