【发布时间】:2019-03-10 00:44:39
【问题描述】:
我想寻找未知的事件监听器
到目前为止,我尝试根据This post 定位所有事件侦听器,但没有成功:
getEventListeners(Element);
和
'Chrome Developer tools > Elements > Event listeners'
还有其他方法可以检测活动的事件侦听器吗?
问这个的原因是:
我正在根据 Mozilla 的教程使用纯 JavaScript 构建 2D breakout game,并设法通过各种功能和多个级别对其进行增强。
我有一组添加的事件监听器和一个删除它们的函数,到目前为止一切正常。
我没有键码 13(即回车键)的事件监听器
问题是,如果我在画布上进行动画时按下 Enter 键,它会随着每次按键后球的速度增加而改变行为,并最终呈现不同的绘图。
如果我不按 Enter 键,一切都会按预期进行。
唯一能提高速度的事件监听器是“点击”事件,但在函数执行后会立即删除,不会干扰游戏。
另一个问题是通过上述方法没有找到事件监听器,即使是我自己添加的也没有,尽管它们仍然有效。
我找不到与这种不良行为相关的任何内容,我想问一下是否有其他方法可以查看活动的事件侦听器。
Here 是我正在处理的代码
[编辑:
在意识到错误来自keydown 事件后,添加preventDefault() 解决了问题。
但是,我不确定为什么在没有 e.keyCode == 13 设置的情况下会发生这种行为,以及为什么 preventDefault() 方法解决了这个问题。
]
【问题讨论】:
-
我能问一下为什么
getEventListeners还不够吗?为什么需要另一种方式?加速是否发生在任何键上,或者只是输入?鉴于您在 keyCode === 13 上没有监听器,这确实很奇怪。 -
@DavidsKanal,当我尝试在
document或canvas上使用getEventListeners时,它会返回一个对象树,我在其中找不到任何事件侦听器。只有当我按下 Enter 键时才会加速。
标签: javascript event-handling dom-events passive-event-listeners