由于这些天来的系统变得越来越面向 Javascript(jQuery、AJAX 等),我们一直在尝试为这些事情中的任何一个发生越来越多的错误日志记录。
我担心的是,在 jQuery 本身中,当创建或执行正常的 DOM 操作/jQuery 事件时,window.onerror
无法捕获这些,这可能有助于更快地调试生产中的错误,方法是让它们登录到服务器
在 2008 年的这篇文章(.onerror 和 jQuery 绑定 try/catch{} )中,他们向甚至 document.ready 事件添加了try/catch {} 。jQuery.bind() event
现在一切都经历了.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) { }
});