我正在撰写Chrome扩展程序,需要通知所有点击&密钥事件,无论是否在使用代码时调用dirname
/ etc。这意味着stopPropagation
不在桌面上。
我尝试了以下内容:
document.addEventListener
addEventListener
const _addEventListener = EventTarget.prototype.addEventListener;
EventTarget.prototype.addEventListener = function(eventName, eventHandler) {
console.log('DOM Event', eventName);
_addEventListener.call(this, eventName, eventHandler);
};
stopPropagation
const _stopPropagation = Event.prototype.stopPropagation;
Event.prototype.stopPropagation = function() {
console.log('Stop Propagation:', this);
return _mouseEvent.apply(this, arguments);
};
作为最后的手段,我可以在每个 DOM元素上添加我自己的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);
};
事件监听器 - 但这似乎是一些看似应该可行的事情的开销。
任何人都知道可行的选择吗?
答案 0 :(得分:1)
Gah,我不知道我忘了useCapture
。这有效:
document.addEventListener('click', function() {}, true /* <--- this */);