2017-01-24 11 views
1

iframeをブロックするchrome拡張機能を作成しようとしています。私はcontent.jsファイルにjavascriptコードを持っていますが、実行されません。ここで は私のmanifest.jsonを次のとおりです。拡張機能のjavascriptが機能しない

{ 
"manifest_version":2, 
"name":"Ad Killer", 
"description":"A Basic program for blocking ads", 
"version":"0.1", 
"background":{ 
    "scripts":[ 
    "background.js" 
    ] 
}, 
"content_scripts":[ 
    { 
     "matches":[ 
     "<all_urls>" 
     ], 
     "js":[ 
     "jquery.js" 
     ] 
    } 
], 
"browser_action":{ 
    "default_icon":"ad128.png", 
    "default_title":"Ad Killer" 
} 
} 

Cotent.js:

var elems = document.getElementsByTagName("iframe"); 

for (var i = 0, max = elems.length; i < max; i++) { 
    elems[i].hidden = true; 

私の質問は、それがcontent.js仕事でJavaScriptを作成するどのような方法があるのですか?どんな助けもありがとう。

+0

※** **に必要な場合を除いて、** **すべての**ページ(あなたの 'matches'で' content_scripts')にjQueryをロードしないでください。 jQueryは最小化されたコードの85キロバイトです。これは、すべての単一ページ*に鞍を打つことに重大な負担です。タブが100個開いている私たちの何人か?実際にjQueryをロードする必要があるかもしれませんが、バニラJavaScriptを使用しないことで、あなた自身のコードに数百/数百文字を保存する便宜のためにそうしている可能性が高くなります。そのような場合(私たちは知る方法がありません)、そうすることは、あなたのユーザーの視点からは非常に貧弱なトレードオフです。 – Makyen

答えて

3

あなたのマニフェストは現在、訪問したすべてのページにjquery.jsを追加しています。 content.jsを "content_scripts"配列に追加するだけです。 content.jsと仮定すると、あなたのmanifest.jsonを同じ場所にあります。

"content_scripts":[ 
    { 
     "matches":[ 
     "<all_urls>" 
     ], 
     "js":[ 
     "jquery.js", 
     "content.js" 
     ] 
    } 
], 

また、あなたはDOMの準備ができたとき、コードが実行されることを確認したいと思います。あなたはjQueryの使用しているので:

$(document).ready(function() { 
    //your code here 
}) 

をスクリプトが実行したときに定義するマニフェストのためのオプションがありますが、私は彼らと多くの成功を収めていたことがありません、あなたはここでそれらを探索することができます:https://developer.chrome.com/extensions/content_scriptsrun_at属性を参照してください。

また、広告コンテンツが読み込まれた後に非同期に作成される可能性があるため、iframeのクエリにタイムアウトまたはポーリングを設定することもできます。

関連する問題