监视激发的Javascript事件(无论浏览器如何)

Monitoring fired Javascript events (regardless of browser)

本文关键字:浏览器 Javascript 事件 监视      更新时间:2023-09-26

我知道这个问题以前已经回答过了,但所有的答案都是指特定于浏览器的方法。我的问题很简单:有没有一种方法可以从Javascript中监控所有触发的事件(我需要的信息是触发的事件和触发它的元素)?

我曾想过为所有事件和元素设置事件侦听器,但这是非常不切实际的,而且它不适用于定制的事件。

有一些东西可以帮助您。

您可以使用Objects.observe来监控对象

对于某些dom元素,还有突变事件监听器和突变观测器。

但是,如果您确实需要监视所有事件,则可以重新定义addEvent函数。我想你只需要这个来调试和测试一些东西,否则这不是一个很好的做法。

// The magic 
var oldAddEventListener = EventTarget.prototype.addEventListener;
EventTarget.prototype.addEventListener = function(eventName, eventHandler){
  // DO YOUR MAGIC
  oldAddEventListener.call(this, eventName, function(event) {
      // DO YOUR MAGIC
      eventHandler(event);
  });
};

有关的更多信息https://css-tricks.com/capturing-all-events/