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

前端之家收集整理的这篇文章主要介绍了javascript – 全局记录jQuery错误(事件和DOM错误)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
由于现在系统越来越多地以 Javascript(jQuery,AJAX等)为导向,我们一直在努力为这些事情中的任何事情发生越来越多的错误记录.

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

在2008年(.onerror & jQuery bind try/catch{})的这篇文章中,他们在jQuery.bind()事件甚至document.ready事件中添加了try / catch {}.现在一切都经历了.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 / etc)

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,f);
    }
    catch (ex) { ... }
};

猜你在找的jQuery相关文章