由于现今的系统越来越偏向于Javascript (jQuery, AJAX等),我们一直试图为这些内容增加更多错误日志记录。
我的疑虑在于,在jQuery中,当普通DOM操作 / jQuery事件被创建或执行时,window.onerror
无法捕捉到这些情况,而这可能会有助于通过将它们记录在服务器上来更快地调试生产中的错误。
在这篇2008年的文章 (.onerror & jQuery绑定try/catch{})中,他们向jQuery.bind()事件
甚至是document.ready事件添加了try/catch {}。 现在,随着所有内容都通过.on()
事件进行,这篇文章已经过时了,但我觉得逻辑仍然可行...
有人尝试在自己的项目中实现这样的jQuery重写(try/catch系统)吗?
基本上,我想要继续从CDN使用jQuery,只需要在我们的一个JS文件中 - 扩展/覆盖.on() / $(document).ready() /等
事件以进行这些更改。
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()?
其他典型的错误日志格式:(当然也要记录浏览器/操作系统/查询字符串等)
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) { }
});