Onerrorイベントを自分のWebサイトに追加しようとしています。
window.onerror = function() {
alert("an error");
}
しかし、私が受け取るすべては:
notThere();
ReferenceError: notThere is not defined
私は何が欠けていますか?
ブラウザ:Chrome 26.0.1410.64 m
再現する手順:
window.onerror
はChrome(jsfiddle- http://jsfiddle.net/PWSDF/ を参照)で動作しますが、明らかにコンソールでは動作しません。
コンソールが直接エラーを生成する場合、window.onerrorはトリガーされません。 setTimeout
を介してトリガーできますが、たとえばsetTimeout(function() { notThere(); }, 0);
重複の可能性: Chrome:開発コンソールから呼び出されたコードのエラーはwindow.onerrorをトリガーしますか?
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