最近のシステムはますますJavascript(jQuery、AJAXなど)指向になっているので、これらのいずれかで発生するエラーログをますます取得しようとしています。
私の懸念は、jQuery自体の中で、通常のDOM操作/ jQueryイベントが作成または実行されると、window.onerror
これらをキャッチできないことです。これにより、サーバーにログオンすることで、本番環境でのバグのデバッグを高速化できる可能性があります。
2008年のこの記事(.onerror&jQuery bind try / catch {} )では、 try /catch{}をjQuery.bind() event
さらにdocument.readyイベントに追加しています。すべてがイベントを通過したので、.on()
この記事は少し古くなっていますが、ロジックはまだ機能するように感じます...
誰かがそのようなjQuery上書き(try / catchシステム)を自分のプロジェクトに実装しようとしたことがありますか?
基本的に、CDNのjQueryを引き続き使用し、JSファイルの1つ内で、.on() / $(document).ready() / etc
これらの変更を使用してイベントを拡張/オーバーライドします。
jQuery.fn.extend({ // <-- can this be extended / overwritten ?
on: function(etc etc) {
// same code just add the additional
try {
// try to execute the original .on()
}
catch (ex) {
// log any errors / info (where/why/etc)
}
}
});
// or even some sort of try/catch for $(document).ready()?
その他の一般的なエラーログ形式:(もちろん、ブラウザ/ OS /クエリ文字列などのログも)
window.onerror = function (msg, url, line) {
// Log General Javascript Errors
// this won't log jQuery internal errors
};
$.ajaxSetup({ // Log AJAX Errors
error: function (jqXHR, ajaxSettings, thrownError) { }
});