查找未知的活动事件侦听器Javascript

时间:2018-10-04 14:59:07

标签: javascript javascript-events event-handling passive-event-listeners


我想找到未知的事件监听器

到目前为止,我尝试根据This post定位所有事件侦听器,但没有成功:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="row-eq-height search-block pers-load">
  <div class="col-lg-12 add flush col-sm-12 col-xs-12">
    <div class="tablerow">
      <div class="tablecell">
        <div class="col-lg-12 col-sm-12 col-xs-12">
          <blockquote>COnatct</blockquote>
          <span>05/07/2018</span>
          <a class="btn hidden-xs" href="#">PRIMARY</a>
        </div>
      </div>
    </div>
  </div>
</div>
<div class="row-eq-height search-block pers-load">
  <div class="col-lg-12 add flush col-sm-12 col-xs-12">
    <div class="tablerow">
      <div class="tablecell">
        <div class="col-lg-12 col-sm-12 col-xs-12">
          <blockquote>COnatct</blockquote>
          <span>05/07/2018</span>
          <a class="btn hidden-xs" href="#">PRIMARY</a>
        </div>
      </div>
    </div>
  </div>
</div>

getEventListeners(Element);

还有其他检测活动事件侦听器的方法吗?


问这个的原因是:

我正在基于Mozilla的教程使用纯JavaScript构建2D breakout game,并设法通过各种功能和多个级别对其进行了增强。

我有一组添加的事件侦听器,以及一个将其删除的函数,到目前为止一切正常。

我没有针对键码13(即回车键)的事件监听器

问题是,如果在画布上进行动画时按Enter键,则每次按键后它都会随着球速度的增加而改变行为,最终渲染出不同的图形。

如果我不按Enter键,则一切正常。

唯一可以提高速度的事件侦听器是“点击”事件,但在函数执行后立即将其删除,并且不应干扰游戏。

另一个问题是,通过上述方法,没有找到事件侦听器,甚至没有找到我添加的事件侦听器,尽管它们仍然可以工作。

我找不到与该不良行为有关的任何东西,我想问一下是否还有其他方法可以查看活动事件侦听器。

Here是我正在使用的代码


[编辑: 在意识到该错误来自'Chrome Developer tools > Elements > Event listeners' 事件之后,添加keydown解决了该问题。

但是,我不确定为什么一开始没有设置preventDefault()时为什么会发生这种现象,以及为什么e.keyCode == 13方法无法解决问题。 ]

2 个答案:

答案 0 :(得分:0)

我的猜测是,单击事件使长颈鹿关注焦点,使其可以使用Enter键触发。您可以尝试使用mousedown并阻止Default来防止长颈鹿集中注意力:

giraffe.addEventListener('mousedown', function(e){
 e.preventDefault();
 giraffe.classList.remove('pulsate');
        setTimeout(function(){
            giraffe.classList.add('pulsate');
        }, 0);
        yahoo.play();
});

答案 1 :(得分:0)

似乎该错误位于keyDownHandler事件处理程序(e.preventDefault();)中。这就是导致意外行为的原因。

keyDownHandler添加到function keyDownHandler(e) { //on key down e.keyCode == 37 ? leftPressed = true : null; e.keyCode == 39 ? rightPressed = true : null; 函数后,该错误消失了。

原始

function keyDownHandler(e) { //on key down
e.preventDefault();
e.keyCode == 37 ? leftPressed = true : null;
e.keyCode == 39 ? rightPressed = true : null;

}

之后:

{{1}}

最终结果:按Enter键没有任何反应

@Joe Fitzsimmons 指出正确的方向