Я пытаюсь создать инфраструктуру регистрации ошибок javascript.
Я пытаюсь установить window.onerror
в качестве обработчика ошибок. Он работает в IE 6, но когда я запускаю его в Firefox, он сталкивается с некоторым противоречивым методом onerror
.
var debug = true;
MySite.Namespace.ErrorLogger.prototype = {
//My error handling function.
//If it not in debug mode, I should get an alert telling me the error.
//If it is, give a different alert, and let the browser handle the error.
onError: function(msg, url, lineNo) {
alert('onError: ' + msg);
if (!debug) {
alert('not debug mode');
return true;
}
else {
alert(msg);
return false;
}
}
}
//Document ready handler (jQuery shorthand)
$(function() {
log = $create(MySite.Namespace.ErrorLogger);
window.onerror = log.onError;
$(window).error(function(msg, url, line) {
log.onError(msg, url, line);
});
});
Если я использую setTimeout("eval('a')", 1);
где 'a
' - это переменная undefined, мой обработчик ошибок запускается (он работает). Тем не менее, мой журнал ошибок должен улавливать все ошибки, вызванные доступом клиентов к веб-сайту, а не только неправильный код в одном месте.
Код находится на странице .js, которая вызывается с базовой страницы (С#) веб-сайта. На сайте также используется jQuery, поэтому у меня есть функция, которая переопределяет функцию связывания jQuery, и эта функция отлично работает как в Firefox 3, так и в IE 6.
Я знаю, что Firefox видит ошибку, потому что она отображается как в консоли ошибок, так и в Firebug, но моя функция window.onerror
все еще не вызывается.
Любые мысли о том, как переопределить действия Firefox?