addEventListener(“beforeload”)缺少事件

时间:2012-07-08 20:04:50

标签: javascript jquery google-chrome google-chrome-extension

我正在尝试制作一个简单的Chrome插件来删除域x中的每个事件。我调查了一下并发现了“beforeload”事件监听器,这显然是adblock用来阻止广告加载的东西。我已经将它实现到插件中并添加了诸如console.log(“addon loaded”)之类的内容以确保它实际上正在加载javascript,但是问题是,它只捕获了一些事件,例如一个50个事件的页面,它只能捕获1-2个。它忽略了其他明显的事情。

twitch.js

document.addEventListener("beforeload", function(event) {
    event.preventDefault();
    $(event.target).remove();
}, true);

的manifest.json

...
"content_scripts": [ {
    "js": [ "js/jquery.js", "js/twitch.js" ],
    "css": [ "css/twitch.css"],
    "matches": ["*://*/*"], 
    "run_at": "document_start",
    "all_frames" : true
}],
...

有没有人有任何想法?

1 个答案:

答案 0 :(得分:4)

每个脚本,页面上的iframe,图像和样式表都会调用

beforeload,而不是每个事件(你的意思是元素吗?)。您是否期望其他元素引发此事件?

本文档Blocking Unwanted Content提到了一项要求:

  

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

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

document.addEventListener( 'beforeload', function( event ) {
    event.preventDefault();
}, true );