0

ドメイン x からすべてのイベントを削除する単純な Chrome アドオンを作成しようとしています。私はそれを調べて、「beforeload」イベントリスナーについて知りました。これは明らかに、adblock のようなものが広告の読み込みを完全にブロックするために使用するものです。これをアドオンに実装し、 console.log("addon loaded") のようなものを追加して、実際にJavaScriptをロードしていることを確認しましたが、問題は、たとえば次のページで、ほんの一握りのイベントしかキャッチできないことです50 個のイベント、おそらく 1 ~ 2 個しかキャッチできません。それは明らかな他のものを見逃しています。

twitch.js

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

マニフェスト.json

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

誰にもアイデアはありますか?

4

1 に答える 1

5

beforeloadイベントごとではなく、ページ上のスクリプト、iframe、画像、スタイルシートごとに 1 回呼び出されます (要素のことですか?)。他の要素がこのイベントを発生させることを期待していましたか?

このドキュメント、Blocking Unwanted Contentでは、次の要件について言及しています。

コンテンツをブロックするには、コンテンツが表示される前にスクリプトが実行されるように、スクリプトを開始スクリプトとして実行する必要があります。

それを確認してください。また、行は必要ありません。.remove()呼び出すだけevent.preventDefault()で、リソースの作成が停止します。

document.addEventListener( 'beforeload', function( event ) {
    event.preventDefault();
}, true );
于 2012-07-08T23:50:36.537 に答える