2

ブラウザーの javascript エラー ハンドラーを呼び出したくない場合に、window.onerror が返す内容に矛盾があることを理解しています。

私たちのサイトはかなり ajax が多いので、ブラウザーのエラー ハンドラーが呼び出されないようにする必要があります

これが意味すること:

window.onerror=function(){
    console.log('error captured');
    return false;
}

「return false」の部分は、どうやらブラウザーごとに異なります。

これがブラウザごとにどのように処理されるかのリストを見つけることができる場所を知っている人はいますか?

または、リストがかなり小さい場合、各ブラウザーのエラーハンドラーを頭のてっぺんから抑制するために返される必要がある値を誰かが知っていますか?

ありがとう!

4

1 に答える 1

1

あなたはあなたのためにあなたの仕事を切り取っています。

まず、ハンドラーtrueから戻るのではなく... ブラウザーが停止するかどうかを尋ねていると考えてください。onerrorfalse

次に、いくつかのブラウザのいくつかのバージョンは、この領域でただタンクに入っています。宣伝どおりに機能しないことがありますが、その理由は誰にもわかりません。私が今まで見た中で最も賢明な答えは、コールスタックのサイズが大きくなりすぎているというものです...私には良さそうに思えました!

とはいえ、これでうまくいくはずです:

<script>
function stopErrors() {
    return false;
}
window.onerror = stopErrors;
</script>

http://api.jquery.com/error/からの重要なポイント:

注: jQuery エラー イベント ハンドラーをウィンドウ オブジェクトにアタッチしないでください。スクリプト エラーが発生すると、ブラウザーはウィンドウのエラー イベントを発生させます。ただし、ウィンドウ エラー イベントは、従来のイベント ハンドラとは異なる引数を受け取り、戻り値の要件も異なります。代わりに window.onerror を使用してください。

ブラウザーがエラー イベントを発生させる前に、イベント ハンドラーをアタッチする必要があります。error は HTTP ステータス コードに依存しており、URL が file: プロトコルを使用している場合、通常はトリガーされません。

于 2013-03-20T12:23:48.383 に答える