私のコードでは、現在、バックグラウンドスクリプトにメッセージを送信するコンテンツスクリプトがあり、それに応じてアラートが生成されます。 https://www.google.com
にアクセスすると、example.js
とbackground.js
の場合に有効です。しかし、popup.js
と私のコンテンツスクリプトの間の通信を確立しようとしたとき、私はエラーメッセージコンテンツスクリプトはバックグラウンドスクリプトに接続できますが、popup.jsはコンテンツスクリプトに接続できません
Could not establish connection. Receiving end does not exist.
を取得する私は、現在持っていることは、ポップアップ上のボタンがクリックされると、私はpopup.jsからのメッセージを送っています。それから、コンテンツ・スクリプトexample.js
からコンソール・メッセージを表示する必要がありますが、コンテンツ・スクリプトのリスナーに到達していないように見えます。
window.onload=function(){
document.getElementById('highlight').addEventListener('click', sendHighlightMessage, false);
}
function sendHighlightMessage() {
chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
console.log("going through tabs " + tabs[0].url); //this actually occurs
chrome.tabs.sendMessage(tabs[0].id, {highlight: true}, function(response) {
if (chrome.runtime.lastError) {
// An error occurred :(
console.log("ERROR: ", chrome.runtime.lastError);
}
else{
console.log(response.message);
}
});
});
}
example.js:
chrome.runtime.sendMessage('Hello World');
chrome.tabs.onMessage.addListener(function(response, sender, sendResponse){
console.log("received " + response); //never gets to this point
sendResponse({message : "Response Received"});
});
background.js:ここでのコードは、
popup.jsだ
chrome.runtime.onMessage.addListener(function(response, sender, sendResponse){
alert(response);
});
chrome.tabs.onMessage.addListener(function(response, sender, sendResponse){
console.log("received " + response);
sendResponse({message : "Response Received"});
});
私は答えの多くを試してみたが、これまでに働いた人はいません。
「見た目にも届かない」と思われますが、「見える」とはどういう意味ですか?何が起こるかを正確に知るために、devtoolsにデバッガがあります。コンテンツスクリプトリスナー(devtools - ソースパネル - コンテンツスクリプト)にブレークポイントを設定し、ポップアップのためにdevtoolsを開き、コードをステップ実行するか、ブレークポイントを設定します。これは1分以上かかりません。 – wOxxOm