addEventListener(“ beforeload”)缺少事件

clo*_*018 0 javascript jquery google-chrome google-chrome-extension

我正在尝试制作一个简单的Chrome插件,以删除域x中的每个事件。我调查了一下,发现了有关“ beforeload”事件侦听器的信息,这显然是adblock之类的东西用来完全阻止广告加载。我已经在插件中实现了这一点,并添加了诸如console.log(“ addon load”)之类的内容,以确保它实际上正在加载javascript,但是问题是,它仅捕获了少数事件,例如在50个事件,仅捕获1-2个。它错过了明显的其他事情。

twitch.js

document.addEventListener("beforeload", function(event) {
    event.preventDefault();
    $(event.target).remove();
}, true);
Run Code Online (Sandbox Code Playgroud)

manifest.json

...
"content_scripts": [ {
    "js": [ "js/jquery.js", "js/twitch.js" ],
    "css": [ "css/twitch.css"],
    "matches": ["*://*/*"], 
    "run_at": "document_start",
    "all_frames" : true
}],
...
Run Code Online (Sandbox Code Playgroud)

有人有什么想法吗?

Thi*_*iff 5

beforeload对于网页上的每个脚本,iframe,图片和样式表,仅调用一次,而不是针对每个事件调用一次(您是说元素吗?)。您是否期望其他因素来引发这一事件?

本文档“ 阻止不需要的内容 ”提到了一项要求:

要阻止内容,您的脚本必须作为启动脚本运行,以便在内容显示之前执行。

所以检查一下。另外,您不需要该.remove()行,只需调用event.preventDefault()将停止资源的创建。

document.addEventListener( 'beforeload', function( event ) {
    event.preventDefault();
}, true );
Run Code Online (Sandbox Code Playgroud)