使用了别人的平台,发现平台对 body 自带了 touchmove 事件监听,
我该怎么获取对应的 事件函数 并移除?
在 chrome console 调用getEventListeners可以获取,但是代码中并不能~
求大佬指教~
使用了别人的平台,发现平台对 body 自带了 touchmove 事件监听,
我该怎么获取对应的 事件函数 并移除?
在 chrome console 调用getEventListeners可以获取,但是代码中并不能~
求大佬指教~
看源码先看一下他的事件是怎么侦听上的。标准方式两种,ontouchmove = xxx
和 addEventListener('touchmove', xxx)
,更常使用后者。对于前者,重新赋值为 null
就好。对于后者,addEventListener
系列 API 是不会自己暴露 listener 的,也没有提供全部清除的功能,只能看这个函数是否另外以某种方式声明为了全局变量或某全局变量的某个属性然后找它,然后 removeEventListener
。
找不到就需要如其他回答所说,hack 一下 addEventListener
,或重新生成对应 DOM。
当然上述一切都只是原生 JS API 上的通用方法。如果:
匿名没办法。可以考虑一些变态办法。
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答5.2k 阅读✓ 已解决
1 回答3.4k 阅读✓ 已解决
3 回答1.5k 阅读✓ 已解决
什么叫“使用了别人的平台”?
匿名事件句柄无法移除。
P.S. 比较 hack 一点的做法是重写
HTMLElement.prototype.addEventListener
方法,但这要求你覆写的代码要在绑定之前执行,而如果你是通过注入等方式的话并不能控制执行时序。