Hay*_*iff 8 javascript javascript-events google-chrome-extension
在Chrome的开发工具中,有一个可爱的界面,您可以在其中查看附加到给定DOM元素的所有事件侦听器,并根据您的需要删除其中任何一个.这是一个截图(为强调添加了箭头):
我想编写一个Chrome扩展程序,可以自动从任何网页中删除事件监听器(我正在尝试编写Chrome扩展程序以禁用任何试图强制它的网站上的平滑滚动 - 我想删除'轮'听众<body>
是最直接的做法).是否有任何JavaScript API可用于从Chrome扩展程序访问和修改此事件侦听器列表,还是仅限于开发工具GUI?
要清楚,我知道removeEventListener(),但是该方法要求您具有对原始侦听器对象的引用 - 我没有这样的引用,因此该方法不适合我的目的.
遗憾的是,eholder0的回答在事件监听器注册时没有帮助window
(如在您的问题中)或document
.为此,一种方法是大多数代码和库通常在冒泡阶段注册事件监听器,通过传递false作为第三个useCapture
参数addEventListener
(或者根本不传入它).由于捕获阶段首先发生,因此可以通过注册停止进一步传播的捕获阶段侦听器来阻止调用事件侦听器.
例如,在某个代码评论网站上(以"r"开头,以"eviewable.io"结尾),删除了使用鼠标中键单击通过文档上的mousedown事件滚动的功能,扩展内容中的以下内容脚本有效:
document.addEventListener("mousedown", function (event) {
event.stopPropagation();
}, true);
Run Code Online (Sandbox Code Playgroud)
请注意,第三个参数是true
注册捕获阶段事件侦听器.还要注意,它并没有调用event.preventDefault()
,所以浏览器的内置滚动功能被保留.
归档时间: |
|
查看次数: |
2897 次 |
最近记录: |