我正在尝试调试一个场景,在提交按钮上按 Enter 键最终会导致在该按钮上触发“单击”事件。我只能假设点击事件是通过编程方式触发的。触发点击事件显然是应用程序中的正确行为,但我需要追踪其起源,因为我遇到了一些跨浏览器问题。
我正在使用 jQuery 和 ExtJS,按键处理程序都首先通过 jQuery 路由,然后通过 Ext,然后到我们的代码。该按钮是一个 Ext 对象。我已经单步执行了所有关键处理程序,并且没有遇到任何 fireEvent('click') 实例或任何解释单击事件来自何处的内容。
我知道的事件按以下顺序触发:
- 按下键
- 按键
- 点击
如果我禁止处理 keydown 和 keypress,click 事件仍然会触发。
点击处理程序上的调用堆栈不会告诉我事件来自哪里,因此我求助于搜索代码库并在以下实例上放置断点:
- fireEvent('点击'
- 触发('点击'
- 初始化事件(
还有什么我可以搜索的吗?是否有更好的策略来调试 Javascript 事件的相互作用?
最佳答案
无论如何,这并不是什么奇怪的行为。无论使用哪种浏览器,它都是所有按钮元素的默认行为。 AFAIK,如果你在按钮上按 Enter 键,它不会触发 keyup/keydown 事件,因为它们不存在于该 DOM 元素上。
在此实例中触发点击事件是完全正常的。
我设置了一个示例来演示这一点...
页面加载时,按钮将聚焦。如果按 Enter 键,则返回的 keyCode 为 0。默认情况下会触发单击事件。
关于javascript - 如何找到以编程方式触发的 Javascript 事件的起源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6683966/