gpt4 book ai didi

javascript - 全局记录 jQuery 错误(事件和 DOM 错误)

转载 作者:数据小太阳 更新时间:2023-10-29 04:18:30 25 4
gpt4 key购买 nike

由于现在的系统越来越多地面向 Javascript(jQuery、AJAX 等),我们一直在努力为这些事情中的任何一个记录越来越多的错误日志。


我担心的是,在 jQuery 本身中,当创建或执行正常的 DOM 操作/jQuery 事件时,window.onerror 无法捕获这些,这可能有助于调试错误生产速度更快,让他们登录服务器

在 2008 年的这篇文章 ( .onerror & jQuery bind try/catch{} ) 中,他们向 jQuery.bind() 事件try/catch{}> 甚至是 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) { ... }
};

关于javascript - 全局记录 jQuery 错误(事件和 DOM 错误),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13259096/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com