【问题标题】:How do I find out what javascript function is being called by an object's onclick event?如何找出对象的 onclick 事件正在调用什么 javascript 函数?
【发布时间】:2012-05-25 05:29:22
【问题描述】:

如何找出对象的 onclick 事件正在调用什么 javascript 函数?更好的是,我可以找出该函数在哪个包含的 .js 文件中吗?

【问题讨论】:

标签: javascript


【解决方案1】:

你可以这样做

使用 Javascript Demo on JsFiddle

div1 = document.getElementById('div1');

alert(div1.getAttribute("onclick"));​

使用 jQuery Demo on JsFiddle

<div id="div1" onclick="myfun();" >​

alert($('#div1').attr('onclick'))​;

【讨论】:

  • 我在任何地方都看不到问题上的 jQuery 标记。
  • 修改了我的答案,希望现在可以了
  • 这将要求他在代码中添加 alerts()。调试javascript的可怕方法。
  • @Gjohn,警报只是为了显示输出,如果不需要,请不要使用它。
【解决方案2】:

我使用这个Visual Event 脚本执行此操作,它巧妙地突出显示哪些事件由哪些元素上的哪些函数订阅。

要查找代码源,只需使用 FireBug 或类似的浏览器开发工具搜索函数名称即可。

【讨论】:

    【解决方案3】:

    您将无法找到调用 onclick 事件的文件,但myObject.onclick 将为您提供被调用的函数。不,你不需要 jQuery。

    就获取函数的名称而言,这有点复杂。你可以尝试这样的事情,也许:

    var myFunc = myObject.onclick, myFuncName = "";
    
    for(prop in window) {
        if(window.hasOwnProperty(prop) && window[prop] === myFunc) {
            myFuncName = prop; // myFuncName is now the name of the function. This only works if you didn't assign an anonymous function to the click handler.
            break;
        }
    }
    

    但老实说,我认为这有点矫枉过正。

    【讨论】:

      【解决方案4】:

      这取决于event 的附加方式。

      如果你绑定到 onclick 而没有像 jQuery 这样的东西,你可以这样做:

      var obj = document.getElementById('elementId');
      console.log(obj.onclick);
      

      【讨论】:

        【解决方案5】:

        我为此使用了 Chrome 的开发者工具:

        选中click 框,然后单击页面上要为其查找处理程序的元素。如果您使用的是 jQuery(或类似的库),您可能需要先浏览他们的代码,然后才能使用您的代码。

        【讨论】:

        • 我从来不知道它存在于 chrome 中。这太棒了,为我回答了这个问题。
        • 感谢您告知我们有关此工具的信息,但如果该方法将指向我 jQuery 库中的代码行,那么该方法的用处是什么。如何知道我的代码的哪一部分正在运行。
        • @whitelettersandblankspaces 我目前知道的唯一方法是单步执行 jQuery 的代码,直到找到你的代码。
        • 你怎么知道是什么事件监听器类型调用了回调?
        • 回到过去,开发者是多么的菜鸟,开发者工具也是如此
        【解决方案6】:

        我有不同的方法。我重载了 onclick 函数并在实际函数之前添加了我的调试器。

        这是元素

        <div id="div1">​
        

        将此 JavaScript 写入开发者控制台

        var clickFn = $("#div1").click; 
        
        $("#div1").click(function(){ 
            debugger; 
            clickFn(); 
        });
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-10-15
          • 1970-01-01
          • 1970-01-01
          • 2011-04-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多