私は、バックグラウンドスクリプトを使用して、拡張子を持っている:background.jsとpopup.jsの間の通信はどうすればできますか?
"background": {
"scripts": ["scripts/background.js"]
},
とコンテンツスクリプト:
"content_scripts": [
{
"matches": ["*://*/*"],
"js": ["scripts/content_script.js"]
}
],
ポップアップウィンドウ(popup.html)
、ポップアップスクリプト(popup.js)
。 popup.jsはマニフェストに登録されておらず、popup.htmlの外観を扱い、ボタンをクリックするなど、popup.htmlで行われたユーザーの操作を待ち受けます。
私が何電子メール現在のタブのページ、拡張子を作りたい、そしてこのために、私はbackground script
にデータ(DOM)を通過し、content_script
でページのDOMを取得する必要があります。この後、ユーザーがpopup.htmlでイベントをトリガーすると、popup.jsがこのイベントをキャッチし、popup.jsが渡されたデータ(DOM)をbackground.jsから取得できるようにします。どうすればこのことができますか?ですから、私の質問は、background.jsとpopup.jsのやりとりはどうすればいいのですか?
私は自分の質問への答えが見つかりました:
おかげでエルビスを、私は問題を解決したと思います。私は、コンテンツのスクリプトでサイトのDOMを取得する必要があるだけではなく、私の質問のソリューションは、このでした:
content_script.js
// SEND DOM structure to the background page
chrome.extension.sendRequest({dom: "page DOM here"});
background.html
<html>
<head>
<script>
chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
if(request.dom != "")
var theDOM = request.dom;
console.log(request.dom); // page DOM here -> works
chrome.extension.sendRequest({theDOM: theDOM}); // theDOM : "page DOM here"
});
</script>
</head>
<body>
</body>
</html>
ポップアップ.js
var dom;
chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
if(request.theDOM != ""){
console.log("popup request: "+request.theDOM);
dom = request.theDOM;
}
});
// HANDLE TAB_1 REQUESTS (EMAIL PAGE)
// ---------------------------------
$("#send").click(function(){
console.log(dom); // page DOM here
}
助けてくれてありがとう;)
おかげで、私はすでにドキュメントのこの記事を読んですでに私のコードに挿入されていますが、まだ存在する2つの問題 は、 'backcounts 'と' popup.js'の間ではなく 'contentscript'と' backgroundscript'の間のメッセージだけです。注意:3つのスクリプト、1つのコンテンツ、1つのバックグラウンド、1つのpopup.htmlを表示するためのものがあります。 - コンソールでは警告/テキストが表示されないので、メッセージの解析ができません。 - >リクエストを送信するためにイベントをトリガーする必要がありますか? –
ポップアップでイベントがトリガされると、回答に記載されているのと同じ方法で(つまりchrome.extension.sendRequestを使用して)背景と通信することができ、背景は必要なデータを返すことができます。 –
ああ、background.jsをbackground.htmlに変更すると、メッセージの解析が始まりました。問題が解決しました:) ** Elvis **:試してみてください。 –