javascript - jquery 记录所有函数调用

标签 javascript jquery jquery-plugins

我想记录所有 jquery 调用,例如:

HTML

<div id="element"></div>

Jquery

$("#element").addClass("yourClass");
$("#element").hide();

结果应该是:

<div id="element" data-js="1,2"></div>

* 基础函数添加的“data-js”属性,让我知道原始代码在哪一行。

基本上,我需要在 jquery 中创建基本插件或回调每个插件,以便我可以在某个地方注册它。

最佳答案

我不知道所有 jQuery 方法中内置有任何 jQuery 方法“ Hook ”功能,因此我认为您知道何时从您自己的 javascript 调用所有 jQuery 方法的唯一方法是为每个 jQuery 方法动态安装一个 Hook 。您可以循环遍历 jQuery.fn 中的所有方法。 (安装所有插件后)并安装一个填充程序来进行日志记录,然后调用原始方法,小心保留 this 、参数和返回值。

垫片看起来像这样:

function installShims() {
    for (var method in jQuery.fn) {
        if (jQuery.fn.hasOwnProperty(method) && 
          typeof jQuery.fn[method] === "function" &&
          method !== "init") {
            (function(oldMethod) {
                 jQuery.fn[method] = function() {
                     // do your logging here
                     // you have access to this and to arguments
                     return oldMethod.apply(this, arguments)
                 };
            })(jQuery.fn[method])
        }
    }
}

工作演示:http://jsfiddle.net/jfriend00/24nvd/

关于javascript - jquery 记录所有函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22141559/

相关文章:

javascript - 访问名称为数字的 JSON 元素

javascript - 使用 jquery 将 json 转换为字符串

javascript - jQuery UI 布局是否与 jQuery 3.3.1 不兼容?

javascript - 可以在 Javascript onclick 事件(HTML)中使用正则表达式吗?

Javascript 使用 for 循环和数组列表

javascript - 如何使用 linq.js 除了

javascript - jQuery setInterval 不断更新数据属性

javascript - vTiger 和 jQuery 手机掩码

javascript - JQuery插件函数调用

javascript - Isotope 和 Masonry jQuery 插件之间的区别