私はどのクライアント側のロガーがどのクライアント側のエラーをログに記録するためにサーバーに接続しているのですか?ajaxerrorイベントの伝播を停止する方法
var logger = (function ($) {
var module = {};
module.log = function (obj) {
try {
$.ajax({
type: "POST",
data: JSON.stringify(obj),
url: '/jslog'
})
.fail(function (jqXHR, textStatus, errorThrown) {
console.error('JS error report submission failed.');
// how to stop progating ajaxError here?
})
}
catch (ex) {
console.error('JS error report submission failed.');
// how to stop progating ajaxError here?
}
}
return module;
})(jQuery);
次に、ページには2つのイベントハンドラが接続されています。
-
任意のJavaスクリプトエラーを処理するために、任意のAJAXエラーに
を処理するための
-
$(document).ajaxError(function (event, jqxhr, settings, thrownError) { logger.log({ jqxhr: jqxhr }) }); window.onerror = function (msg, url, line) { logger.log({ message: msg, url: url, line: line }) }
ISSUE
logger.logは、内部にログを送信するために、AJAX POSTを使用サーバー。したがって、ロギング自体に失敗した場合は、再び$(document).ajaxError
を起動し、エラーをログに記録して失敗します。それは連続的なループになります。
ajaxError
をcatch
またはfail
イベントハンドラで停止する方法はありますか?
もしそうでなければ、AJAXを使わずにPOSTする方法は?
または(任意の他のサードパーティ製のlibを使用せずに)これを処理するために、他のより良い方法はあり