2017-02-23 20 views
0

私はChrome拡張機能(そして正直なところはjavascript)を使い新しいもので、いくつかのDOM要素をページからコピーしてそれらを含むページを起動する単純なスクリプトを作成していますページの読み込み中の要素。それはすべて正常に動作しますが、データのソースとなるページはユーザーの入力に基づいて変更できます。つまり、何らかのフィルタを適用するとします。ボタンをクリックして拡張機能を実行できない

ページが最初に読み込まれたときにスクリプトを実行するのではなく、拡張アイコンをクリックして1回実行することができます。したがって、ユーザーはフィルタを適用し、そのページに対して拡張機能を実行し、新しいポップアップウィンドウで新しい情報を取得できます。もちろん、現時点では、ボタンのクリックで起こることすべてが、私は警告ボックスを取得することです

chrome.browserAction.onClicked.addListener(function(tab) { 

    alert("Hello! I am an alert box!!"); 

}); 

:background.jsで

"content_scripts": [ 
    { 
    "matches": ["https://www.oddsmonkey.com/*"], 
    "js": ["content.js"], 
    "all_frames": true 
    } 
    ], 
"background": { 
"scripts": ["background.js"] 

:マニフェストファイルの

私は多くのことを見てきましたが、content.jsを実行するには、background.jsページ(これはボタンをクリックするために必要なことを理解しています)を取得する方法を見つけることができませんでした。私はメッセージングのコンセプトを見ていますが、私は何かを与える必要はありません、またはコンテンツのスクリプトから何かを得る必要はありません、私はそれを実行したい!

誰かが答えてくれることを願っています。あなたは[コンテンツスクリプト](https://developer.chrome.com/extensions/content_scripts)を必要とするWebページにアクセスするには

乾杯

+0

、WebページのDOMにアクセスする方法[も参照のではなく、拡張ページDOM?](// stackoverflow.com/q/4532236)おそらく[JavaScript/jQuery DOMの変更リスナーはありますか?](// stackoverflow.com/a/39508954) – wOxxOm

+0

@wOxxOm私はコンテンツを持っていますスクリプト(これは既に正常に動作しています)。ユーザーがボタンをクリックしたときに再び実行する必要があります。 DOMの変更を検出してメッセージを使用することは、非常に単純な作業であると私が疑うところはあまりにも複雑に思えます。 – reti

+0

ユーザーが「browserAction」ボタンをクリックしてユーザーのやりとりが始まる*場合、コンテンツスクリプトには['chrome.tabs.executeScript()'](https://developer.chrome.com/extensions/)を挿入する必要がありますtabs#method-executeScript)を* manifest.json *の 'content_script'エントリの代わりに使用します。そうすれば、あなたのコンテンツスクリプトは、使用されるのを待つだけですべてのページに注入されてブラウザに負担をかけることはありません。 'chrome.tabs.executeScript()'を使うと、スクリプトは、[必要に応じてデータが渡された状態で]注入されたときに機能し始めることができます(http://stackoverflow.com/a/40815514/)。 3773011)。 – Makyen

答えて

0
chrome.browserAction.onClicked.addListener(function(tab){ 
    chrome.tabs.executeScript(tab.id, { file: 'content.js' }) 
}); 
// this needs an "activeTab" permission. 
+0

このコードスニペットは質問を解決するかもしれませんが、[説明を含めて](// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)本当にあなたの投稿の質を向上させるのに役立ちます。将来読者の質問に答えていることを覚えておいてください。そうした人々はあなたのコード提案の理由を知らないかもしれません。あなたのコードに説明的なコメントを詰め込まないようにしてください。これは、コードと説明の両方の可読性を低下させます! – Makyen

+0

何らかの理由でこれを私は望み通りに動作させることができませんでした。このアイコンをクリックしても、これは私の問題の共通の解決策であるにもかかわらず、Javaスクリプトが実行されることにはなりませんでした。 – reti

関連する問題