如何找到以编程方式触发的javascript事件的来源?

时间:2011-07-13 18:46:59

标签: javascript jquery javascript-events extjs

我正在尝试调试在提交按钮上按Enter键最终导致在该按钮上触发“click”事件的情况。我只能假设click事件是以编程方式触发的。点击事件触发显然是应用程序中的正确行为,但我需要追踪其来源,因为我遇到了一些跨浏览器问题。

我正在使用jQuery和ExtJS,关键的新闻处理程序首先通过jQuery,然后通过Ext,然后到我们的代码。该按钮是一个Ext对象。我已经介绍了所有关键处理程序,并且我没有遇到任何fireEvent('click')实例或任何解释click事件来源的地方。

我所知道的事件按此顺序发射:

  1. KEYDOWN
  2. 按键
  3. 点击
  4. 如果我禁止处理keydown和keypress,则click事件仍然会触发。

    点击处理程序上的调用堆栈不会告诉我事件的来源,所以我使用搜索代码库并在以下实例上放置断点:

    • fireEvent( '点击'
    • 触发器( '点击'
    • initEvent(

    还有什么我可以搜索的吗?是否有更好的策略来调试javascript事件的相互作用?

2 个答案:

答案 0 :(得分:1)

jQuery可以使用方法click()触发点击事件。请注意空括号。

答案 1 :(得分:1)

这绝不是一种奇怪的行为。无论使用什么浏览器,它都是所有按钮元素的默认行为。 AFAIK,如果按下按钮,它将不会触发keyup / keydown事件,因为它们不存在于该DOM元素上。

在此实例中触发点击事件是完全正常的。

我已经设置了一个例子来证明这一点...

http://jsfiddle.net/SMsQD/1/

页面加载时,按钮将会聚焦。如果按Enter键,则返回的keyCode为0.默认情况下会触发单击事件。