手動テストだけでいくつかの JavaScript エラーを見つけるのに問題がある ASP.NET サイトを実行しています。
クライアント側ですべての JavaScript エラーをキャッチし、それらをサーバー、つまり EventLog (Web サービスなどを介して) に記録する可能性はありますか?
手動テストだけでいくつかの JavaScript エラーを見つけるのに問題がある ASP.NET サイトを実行しています。
クライアント側ですべての JavaScript エラーをキャッチし、それらをサーバー、つまり EventLog (Web サービスなどを介して) に記録する可能性はありますか?
onerror イベント用に独自のハンドラーを設定し、XMLHttpRequest を使用してサーバーに問題の原因を伝えることもできますが、これは仕様の一部ではないため、サポートはやや不安定です。
XMLHttpRequest を使用して JavaScript エラーをログに記録する の例を次に示します。
window.onerror = function(msg, url, line)
{
var req = new XMLHttpRequest();
var params = "msg=" + encodeURIComponent(msg) + '&url=' + encodeURIComponent(url) + "&line=" + line;
req.open("POST", "/scripts/logerror.php");
req.send(params);
};
短い答え:はい、可能です。
より長い答え:人々は、独自のコードを作成することでこの問題を (少なくとも部分的に) 解決する方法について既に書いています。ただし、必要な JS コードが多くのブラウザーで動作することを確認したと思われるサービスが存在することに注意してください。私は以下を見つけました:
私はまだ試していないので、これらのサービスについて話すことはできません.
作業中のプロジェクトで、javascript エラーに関するサーバー側のエラー ログを実装しました。レガシー コードとjQueryを使用した新しいコードが混在しています。
window.onerror
jQuery イベント ハンドラーと onready 関数を組み合わせてラップし、エラー処理関数を使用します (「 JavaScript エラー追跡: window.onerror では不十分な理由」を参照)。
window.onerror
: IE のすべてのエラー (および Firefox のほとんどのエラー) をキャッチしますが、Safari と Opera では何もしません。エラーをキャッチしたら、追加のプロパティ (url、ブラウザーなど) をいくつか追加し、ajax 呼び出しを使用してサーバーに戻します。
サーバーには、投稿された引数を取得して通常のサーバー ロギング フレームワークに出力する小さなページがあります。
このコードを (jQuery プラグインとして) オープン ソース化したいと考えています。興味のある方はお知らせください。上司を説得するのに役立ちます。
私は最近Appfailを使用していますが、これはasp.netとJavaScriptの両方のエラーをキャプチャします
また、 TraceToolユーティリティの使用をお勧めします。これには JavaScript がサポートされており、JS の監視に非常に便利です。
try/catch からサーバーへの Ajax 呼び出しを行うこともできますが、おそらくそれが最善の方法です。
代わりに JavaScript 単体テストを提案してもよろしいですか? おそらくJSUnitで?
クライアント側のエラーをサーバーに記録したい場合は、何らかのサーバー処理を行う必要があります。最善の策は、JavaScript (AJAX) 経由でアクセスできる Web サービスを用意し、エラー ログ情報をそれに渡すことです。
問題が Web サービスをホストしている Web サーバーに問題がある場合、問題を 100% 解決することはできません。他のオプションは、クエリ文字列を介して標準ページを介して情報を送信することです。これは、ブラウザが画像のソースを読み込もうとするため、画像タグを動的に生成することによって行われます (その後削除されます)。ただし、クロスドメインの JavaScript 呼び出しをうまく回避します。誰かが画像をオフにしている場合、問題が発生することに注意してください ;)