Javascript 如何判断是否没有元素为单击事件调用了侦听器

Javascript 如何判断是否没有元素为单击事件调用了侦听器,javascript,events,listener,handler,Javascript,Events,Listener,Handler,我试图找到一种方法来检测点击事件是否由页面上的某个元素处理。现在,在某些渲染过程中,不会处理单击事件。这使得我们的自动化测试团队很难做到这一点,因为他们无法判断自己生成的点击事件是否得到了实际处理。目前,他们必须等待X的时间量没有作出任何改变的网页。这会给每次点击增加1.5秒,这会减慢测试速度。我想找到一种方法来检测点击是否被处理。我可以将侦听器放在dom的顶部,当事件冒泡返回时,它将看到它。但我不知道这个事件是否也在文档的下面处理过 任何人都能想出一种方法来检测单独处理事件的顶层元素与处理事件

我试图找到一种方法来检测点击事件是否由页面上的某个元素处理。现在,在某些渲染过程中,不会处理单击事件。这使得我们的自动化测试团队很难做到这一点,因为他们无法判断自己生成的点击事件是否得到了实际处理。目前,他们必须等待X的时间量没有作出任何改变的网页。这会给每次点击增加1.5秒,这会减慢测试速度。我想找到一种方法来检测点击是否被处理。我可以将侦听器放在dom的顶部,当事件冒泡返回时,它将看到它。但我不知道这个事件是否也在文档的下面处理过

任何人都能想出一种方法来检测单独处理事件的顶层元素与处理事件的顶层元素以及底层元素之间的差异,而不必在侦听器中为每个底层元素提供一些逻辑


我希望这是有意义的,

如果您在自己的包装器API中包装附加的事件侦听器,那么在自动测试环境中执行时可以轻松修改事件对象

function attachEventListener(node, event, handler) {
  // only do this if we are running in the test environment
  if (window.__runningAutomatedTests) {
    // wrap the event handler in a handler that will
    // amend the event object
    handler = (function(innerHandler) {
      return function(evt) {
        // invoke the actual event handler
        var result = innerHandler.apply(this, arguments);
        // amend the event object with information 
        // about that one of our event handlers handled
        // it
        evt.__wasHandled = true;

        return result;
      }
    })(handler);
  }
  node.addEventListener(event, handler);
  return function removeEventListener() {
    node.removeEventListener(event, handler);
  };
}

attachEventListener(window.document.body, 'click', function(evt) {
  if (evt.__wasHandled) {
    // event was handled by a different handler before!
  }
});

如果不连接到较低级别的事件处理程序,我看不出这是如何工作的。

您可以在页面右下角的测试对象上放置一个事件侦听器,并且只有在成功获得对测试对象的单击时才开始播放常规的单击事件吗?我以类似的解决方案结束。我找不到一种不使用较低级别的事件处理程序的方法。我只是希望有一种我不知道的土生土长的方式。