クライアント側で JavaScript を実行しているときにエラー (構文エラーも含む) が発生した場合に、自動フィードバックを取得する方法はありますか?
私は次のようなことを考えていました:
<script src="debugger.js"></script>
<script>
// some script with an error in it
</script>
また、デバッガーがエラーに気付くたびに、フィードバックがサーバーに送信されます。
クライアント側で JavaScript を実行しているときにエラー (構文エラーも含む) が発生した場合に、自動フィードバックを取得する方法はありますか?
私は次のようなことを考えていました:
<script src="debugger.js"></script>
<script>
// some script with an error in it
</script>
また、デバッガーがエラーに気付くたびに、フィードバックがサーバーに送信されます。
編集:最初はあなたの質問を誤解していましたが、これはうまくいくはずです:
また、これは、エラーを引き起こす可能性のある JavaScript よりも前に実行する必要があることに注意してください。
window.onerror = function(msg,u,l)
{
txt ="Error: " + msg + "\n";
txt+="URL: " + u + "\n";
txt+="Line: " + l + "\n\n";
//Insert AJAX call that passes data (txt) to server-side script
return true;
};
構文エラーに関しては、運が悪いです。構文エラーが発生すると、Javascript は単純に終了します。まったく対処のしようがありません。
1つの手法は、JavascriptエラーロギングにAjaxを使用することです
すべてのjavascriptエラーは、window.onerrorイベントにトラップされる可能性があります。trueまたはfalseを返すことができるので、ユーザーに通常のjavascriptエラーダイアログを表示するかどうかを選択できます。このスクリプトは、JavaScriptエラーが発生する可能性が非常に低い場合に、エラーに関する情報を収集し、JavaScriptエラーをデータベースに記録するページにhttprequestを送信します。
構文エラーについてはわかりませんが、window.onerror イベントを使用して js エラーをキャッチすることは可能です。Google で「logging errors in javascript」を検索すると、多くの結果が得られます...
ASP.NET への JavaScript エラーのロギング: http://james.newtonking.com/archive/2006/05/02/Logging-JavaScript-Errors-To-ASP.NET.aspx (残念ながら、投稿内のダウンロードへのリンクは壊れています)。
クライアント側の JavaScript エラーをサーバーに記録する: http://www.codeproject.com/KB/ajax/logclientsidejserrors2srv.aspx
JavaScript エラー通知: http://www.thecodepage.com/post/JavaScript-Error-Notifications.aspx
window.onerror = MyFunction(msg,url,line);
エラーの詳細、ブラウザーの種類 (つまり、navigator.userAgent) などを含むウィンドウがポップアップ表示されます。これらはすべて READONLY とマークされたフィールドに表示され、ユーザーにそれらを送信するように促されます。
セッション Cookie に保存されている [今後は表示しない] チェックボックスがあります。エラーが発生し続ける場合は、ポップアップを無効にすることができます。
これは「非常にクール」だと思っていたにもかかわらず、レポートがほとんど得られませんでした。実行時エラーがゼロに近づいているからだとは思えません。
私にとって最も簡単な方法は、SiteApps Marketplace からこのアプリをインストールすることでした。
http://siteapps.com/app/log_javascript_errors_with_ga-181
プラットフォーム タグをインストールすると、多くのアプリをインストールできます。上記のアプリは私にとって非常に便利です。私が開発した 14 の Web サイトで使用しており、Google アナリティクスで JavaScript エラーを追跡できました。
これが役立つことを願っています。
レアンドロ
おそらく、ページごとに 1 つのエラー レポートのみを送信するのが最善です。タイマーの繰り返しでエラーが発生した場合、または AJAX 自体が再帰的にエラーを呼び出した場合、ログが無駄なジャンクでいっぱいになる可能性があります。
また、次のような原因で発生する解決できないエラーを受け取る準備をしてください。