全局日志记录jQuery错误(事件和DOM错误)
由于现在的系统变得越来越以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文件中 - 使用这些更改扩展/覆盖.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 / QueryString /等)
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) { }
});
我们向window.onerror和jQuery ajax错误中的服务器报告JavaScript错误,而不会覆盖jQuery,它运行良好。 如果你想重载一个jQuery函数,你可以这样做:
$.fn.oldOn = $.fn.on;
$.fn.on = function(a,b,c,d,e,f) {
try {
$(this).oldOn(a,b,c,d,e,f);
}
catch (ex) { ... }
};
链接地址: http://www.djcxy.com/p/11417.html