質問

未処理のJavaScript例外をログに記録しようとしています。例外がキャッチされないときに起動するイベントはありますか?ブラウザでjavascriptエラーが発生する前に例外をキャッチしたいのですが、try / catch内でアプリケーション全体を実行したくないのです。任意の助けをいただければ幸いです。ありがとう!

更新: tvanfossonは、可能性としてオンエラーを指摘しました。これは仕様の一部ではなく、IEまたはGeckoベースのブラウザーでのみ利用可能です。

詳細- http://books.google.com/books?id=tKszhx-XkzYC <!> amp; pg = PA386 <!> amp; lpg = PA386 <!> amp; dq = safari + onerror + javascript <!> amp; source = web <!> amp; ots = gQaGbpUnjG <!> amp; sig = iBCtOQs0aH_EAzSbWlGa9v5flyo# PPA387、M1

OnErrorサポートテーブル- http://www.quirksmode.org/dom/events/ error.html

Mozillaのドキュメント- https://developer.mozilla.org/en/DOM/window .onerror

WebKitバグレポート- https://bugs.webkit.org/show_bug.cgi? id = 8519

役に立ちましたか?

解決

onerrorハンドラを使用してみてください。 MDNのドキュメント。これにより、エラーが検出されたときに何かを行うことができますが、おそらくtry / catchブロックが行うような優雅な方法で続行することはできません。これがどのように処理されるかは、間違いなくブラウザー間で異なることに注意してください。

他のヒント

このフィドルをご覧ください:

http://jsfiddle.net/xYsRA/1/

window.onerror = function (msg, url, line) {
    console.log("Caught[via window.onerror]: '" + msg + "' from " + url + ":" + line);
    return true; // same as preventDefault
};

window.addEventListener('error', function (evt) {
    console.log("Caught[via 'error' event]:  '" + evt.message + "' from " + evt.filename + ":" + evt.lineno);
    console.log(evt); // has srcElement / target / etc
    evt.preventDefault();
});


throw new Error("Hewwo world.  I crash you!!!");

throw new Error("Hewwo world.  I can only crash you once... :(");

どの印刷:

Caught[via window.onerror]: 'Uncaught Error: Hewwo world.  I crash you!!!' from http://fiddle.jshell.net/xYsRA/1/show/:32 fiddle.jshell.net:21
Caught[via 'error' event]:  'Uncaught Error: Hewwo world.  I crash you!!!' from http://fiddle.jshell.net/xYsRA/1/show/:32 fiddle.jshell.net:26
ErrorEvent {lineno: 32, filename: "http://fiddle.jshell.net/xYsRA/1/show/", message: "Uncaught Error: Hewwo world.  I crash you!!!", clipboardData: undefined, cancelBubble: false…}
 fiddle.jshell.net:27\

注:

  • <!> quot; return true <!> quot;を削除した場合/ <!> quot; evt.preventDefault()<!> quot;行、エラーがログに記録された後、通常の方法でJSコンソールに印刷されます。

  • 上記のステートメントとは異なり、window.onerrorは、テストしたすべてのブラウザーで機能しました。ただし、とにかくaddEventListenerメソッドの方が優れており、より豊富なセマンティクスを提供します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top