详见:http://pea3nut.blog/e224
(怎么感觉他这网站要挂。。。没关系,加了webarchive存档了)
分两步:在最前面(油猴里是添加// @run-at document-start
尽可能注入)
(()=>{
const addEventListener = Element.prototype.addEventListener;
Element.prototype.addEventListener = function() {
if(!this.eventList) this.eventList={};
if(!this.eventList[arguments[0]]) this.eventList[arguments[0]]=[];
this.eventList[arguments[0]].push(arguments[1]);
addEventListener.apply(this,arguments);
};
})();
哦,闭包是我加的。。。不要污染window嘛。。。
添加完就可以直接在适当的时候remove了,比如我移除所有点击事件的代码:
const dom = document.querySelector('.useThis');
dom?.eventList?.click?.map((a) => dom.removeEventListener('click',a));
当然理论上可以继续封装。。。
没必要