0
thisを読んで他の場所で検索しましたが、この問題を解決できません。私は長寿命の接続を使用しています。私はコンテンツスクリプトからバックグラウンドにメッセージを送り、その後、バックグラウンドからコンテンツスクリプトにメッセージを送りたい。Chrome拡張機能長期間接続:背景からコンテンツへのメッセージの取得
var port = chrome.runtime.connect({name: "my-channel"});
// receive messages
port.onMessage.addListener(function(msg) {
console.log(msg); // doesn't log anything
});
document.addEventListener('DOMContentLoaded', function() {
document.getElementById('alertButton').addEventListener('click', function() {
// send message
port.postMessage({myProperty: "value"});
});
});
背景:
chrome.runtime.onConnect.addListener(function(port) {
if(port.name == "my-channel"){
port.onMessage.addListener(function(msg) {
// do something
// then send message to the content
port.postMessage({myProperty: "value"});
});
}
});
EDIT:私のmanifest.jsonを
しかし、私は...コンテンツスクリプト何らかの理由でコンテンツファイルにメッセージを受信することはできませんよ
{
"manifest_version": 2,
"name": "Test extension",
"version": "1.0",
"browser_action": {
"default_popup": "main_ui.html",
"default_title": "Test Extension"
},
"content_scripts": [{
"matches": ["<all_urls>"],
"js": ["logic.js"]
}],
"background": {
"scripts": ["background.js"],
"persistent": true
},
"permissions": [
"tabs",
"activeTab"
]
}
@wOxxOmボタンをクリックすると、バックグラウンドでメッセージを受け取ることができます。 – DigitalEvolution
ええと、投稿されたコードの断片だけでは原因を明らかにすることができません。デバッグを試してください:バックグラウンドページのport.postMessageにブレークポイントを設定し、それがまったく動作するかどうかを確認してください。 – wOxxOm
トピックになる質問を編集してください:問題を複製する[mcve]を含めてください。 Chrome拡張機能やFirefox WebExtensionsの場合は、* manifest.json *や背景/コンテンツ/ポップアップスクリプト/ HTMLの一部を含むことがほとんどです。 (1)望ましい動作、(2)特定の問題またはエラー、(3)それを再現するために必要な最短のコードを含める必要があります。質問自体に*。また、[ここで私はどのような話題を聞くことができますか?](http://stackoverflow.com/help/on-topic)、[ask]を参照してください。 – Makyen