Javascript window.onerror&;捕获多个错误
这可能吗?我有一个处理程序,每次出错时都会将字符串信息附加到字符串中,然后在窗口卸载时,我想通过AJAX将此信息发送到服务器 但一旦一个错误被处理,它似乎就无法处理另一个错误,这仅仅是因为它们是致命的错误吗?还是我遗漏了什么Javascript window.onerror&;捕获多个错误,javascript,jquery,error-handling,Javascript,Jquery,Error Handling,这可能吗?我有一个处理程序,每次出错时都会将字符串信息附加到字符串中,然后在窗口卸载时,我想通过AJAX将此信息发送到服务器 但一旦一个错误被处理,它似乎就无法处理另一个错误,这仅仅是因为它们是致命的错误吗?还是我遗漏了什么 ErrorManager: (function () { function Init(message) { InitErrorHandler(); InitAjaxHandler(); }
ErrorManager: (function () {
function Init(message) {
InitErrorHandler();
InitAjaxHandler();
}
function InitErrorHandler() {
Data.ErrorHandlerText = "";
Data.ErrorHandlerCount = 0;
window.onerror = function(errorMessage, url, line) {
Data.ErrorHandlerText += ("Error: "+(Data.ErrorHandlerCount+1)+" \n\n");
//Get error specific info
Data.ErrorHandlerText += escape(errorMessage) + "\n";
Data.ErrorHandlerText += escape(url) + "\n";
Data.ErrorHandlerText += escape(line) + "\n";
Data.ErrorHandlerCount++;
return true;
}
}
function InitAjaxHandler() {
window.onbeforeunload = function() { //when browser closed
Data.ErrorHandlerCount > 0 && SendErrorsToAjax();
}
}
function SendErrorsToAjax() {
PrepareErrorsForAjax();
//$.getJSON(Interface.Utility.PrefixURL('/emailjserrors/'+Data.ErrorHandlerText), AjaxCallback);
}
function AjaxCallback(response) {
}
function PrepareErrorsForAjax() {
var preText = "A user has encountered a few errors: \n\n";
//Get session info
var userAgent, activePageID, accountNO, consumerNO;
userAgent = escape(navigator.userAgent);
preText += "User agent: "+userAgent+" \n";
if($.mobile.activePage != null) {
activePageID = $.mobile.activePage.attr('id');
preText += "Page ID: "+activePageID+" \n";
}
//Get info that may or may not be set
if(Data.authJSON != null && Data.authJSON.consumer != null) {
preText += "Account Number: " +Data.authJSON.consumer.accountNo+" \n";
preText += "Consumer Number: "+ Data.authJSON.consumer.consumerNO+" \n";
}
preText += "\n The following errors were encountered:\n\n";
Data.ErrorHandlerText = preText + Data.ErrorHandlerText;
}
return {
Init: Init,
SendErrorsToAjax: SendErrorsToAjax
}
})(),
如果发生错误,执行将停止,并且可能会调用window.onerror(并非所有错误都能保证) 如果发生错误但被try-catch捕获,则不会调用在window.onerror中设置的函数 如果错误处理代码中发生错误…:) onbeforeunload不是一个好的选择。它甚至可能不执行您的代码。它用于向用户显示文本,在不同浏览器中有不同的限制