【问题标题】:How can I determine the name of a JavaScript event handler function?如何确定 JavaScript 事件处理函数的名称?
【发布时间】:2010-01-19 23:23:17
【问题描述】:

我在这样的 html 页面上看到了一些锚元素

<a href="javascript:void(0);" class="clickable">Click me</a>;

页面在页面加载时将 JavaScript 事件处理程序分配给锚元素。页面加载后,我可以单击锚元素来触发 JavaScript 操作。

我想以编程方式触发锚点的事件处理函数,但我无法确定事件处理函数的函数名称,因为相关的外部 JavaScript 文件已被压缩,因此很难跟踪代码。压缩混淆了所有变量/函数名称并将所有内容放在一行中。

谁能建议我以编程方式触发锚点的 onclick 事件处理程序?

谢谢

【问题讨论】:

    标签: javascript dom


    【解决方案1】:

    回答你标题中的问题:不,你不能。您无法获得名称,因为甚至可能没有名称 - 为此目的使用匿名函数已变得非常普遍。

    关于第二个问题的答案,请参见:

    How can I programmatically invoke an onclick() event from a anchor tag while keeping the ‘this’ reference in the onclick function?

    【讨论】:

      【解决方案2】:

      替代解决方案是否可行?点击链接调用它的处理程序来模拟用户点击,而不是试图找到处理程序?

      在 jQuery 中是这样的:

      $("a.clickable:first").click();
      

      更新:这是一个工作示例,展示了它是如何在 DOM 上工作的:

      <html>
       <head></head>
       <body>
        <a href="javascript:void(0)" onclick="alert('I'm an alert!')">Click me</a>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
        <script type="text/javascript">
         $(function() { $('a').click(); });
        </script>
       </body>
      </html>
      

      【讨论】:

      • 我猜这个解决方案行不通,因为我相信 jQuery 不会将原生 DOM-Events 事件分派到浏览器 DOM 实现中。相反,它可能只调用那些通过 jQuery API 添加的处理程序。
      • @Sergey Ilinsky:我刚刚对此进行了测试,它确实有效,&lt;a href="javascript:void(0)" onclick="alert('bob')"&gt;Click me&lt;/a&gt;$('a').click(); 确实会触发警报。我在上面添加了一个完整的示例页面,因此您也可以对其进行测试。
      • jQuery 尝试执行所有事件处理程序,无论是内联声明、使用addEventListenerattachEvent 绑定,还是使用jQuery 绑定。看看这个演示 - jsbin.com/owugu/edit 并单击输出选项卡。检查 JavaScript 标签下的代码
      猜你喜欢
      • 2012-11-09
      • 1970-01-01
      • 2010-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多