25

Javascript による自動ページ エラー検出の可能性を研究しています。を介して Javascript のコンパイル エラーとランタイム エラーをグローバルにキャッチできるという質問をいくつか見つけましたがwindow.onerror、ブラウザーのエラー コンソールでよく報告される他の種類の非 Javascript エラーについて言及している回答はありません。私は主に、ネットワーク エラー (無効な URI、SSL エラー、HTTP エラー、タイムアウト) とリソース解釈エラー (リソースの解釈を中止するタイプの不一致、読み込まれたリソースの解析エラーなど) に関心があります。

メソッドを確認しperformance.getEntriesましたが、エラーになったネットワーク リクエストが含まれていないようで、困惑しています (Chrome 29 でのみ確認しました...)。

ブラウザー間の完全な互換性は必要ありません.一部のブラウザーで動作し、他のブラウザーを壊さない限り、それで問題ありません。

4

2 に答える 2

2

ハンドラーは、 Chrome 13 以降、Firefox 6.0 以降、Internet Explorer 5.5 以降、Opera 11.60 以降、および Safari 5.1 以降でwindow.onerrorJavascript エラーをキャッチします。StackOverflowには、それに関する多くの情報を提供する本当に良い答えが既にあります。ただし、リソースのロードの失敗はキャッチされません。

他の要素(画像など) に関する限り、jQuery は.error()エラー イベント ハンドラーをアタッチして、画像または外部スクリプトの読み込みに失敗したときにユーザーに警告する方法を提供します。jQuery を使用できない場合、別のオプションとして、すべての画像 / 外部リソースをプリロードし、リクエストXMLHttpRequestの (HTTP 応答コード) をリッスンします (またはstatus以外のものはエラーを返す必要があります)。これの欠点は、ページが完全に読み込まれる前にイベント ハンドラーなどをアタッチする必要があるため、JavaScript を無効にしているユーザーは断片化された、場合によっては空白のページを見ることになることです。200 OK304 Not Modified

無効な URI と HTTP エラーは、サーバー側で処理するのが最適です。適切な形式の.htaccessファイルを Apache (または同等のもの) と組み合わせるとmod_rewrite、サーバーへの不適切な要求に対して多くのクッションを提供できます。

于 2013-09-30T16:14:37.580 に答える