Javascript 捕获给定类型的*所有*事件,而不考虑气泡/目标

Javascript 捕获给定类型的*所有*事件,而不考虑气泡/目标,javascript,dom,google-chrome-extension,javascript-events,event-handling,Javascript,Dom,Google Chrome Extension,Javascript Events,Event Handling,我正在编写一个Chrome扩展,它需要通知所有的点击和按键事件,而不管消费代码中是否调用了stopPropagation/etc。这意味着document.addEventListener不在表中 我尝试了以下方法: 尝试1:钩住addEventListener 尝试2:钩住stopPropagation 尝试3:钩住偶数构造函数 作为最后的手段,我可以在每个DOM元素上添加我自己的单击事件监听器,但对于似乎应该可行的事情来说,这似乎是一大笔开销 有人知道一个可行的选择吗?啊,我不知道我怎么忘记

我正在编写一个Chrome扩展,它需要通知所有的点击和按键事件,而不管消费代码中是否调用了
stopPropagation
/etc。这意味着
document.addEventListener
不在表中

我尝试了以下方法:

尝试1:钩住
addEventListener
尝试2:钩住
stopPropagation
尝试3:钩住偶数构造函数 作为最后的手段,我可以在每个DOM元素上添加我自己的
单击
事件监听器,但对于似乎应该可行的事情来说,这似乎是一大笔开销


有人知道一个可行的选择吗?

啊,我不知道我怎么忘记了
useCapture
。这项工作:

document.addEventListener('click', function() {}, true /* <--- this */);
document.addEventListener('click',function(){},true/*
const _stopPropagation = Event.prototype.stopPropagation;
Event.prototype.stopPropagation = function() {
    console.log('Stop Propagation:', this);
    return _mouseEvent.apply(this, arguments);
};
const _mouseEvent = MouseEvent;
MouseEvent = function() {
    console.log('Mouse Event:', this);
    return _mouseEvent.apply(this, arguments);
};

const _keyboardEvent = KeyboardEvent;
KeyboardEvent = function() {
    console.log('Keyboard Event:', this);
    return _keyboardEvent.apply(this, arguments);
};
document.addEventListener('click', function() {}, true /* <--- this */);