実現したいこと
backgroundページから popup ページへ,メッセージ通信を行いたいです.
試したこと
以下のようなpopup.jsで,メッセージを送信します.
Javascript
1window.addEventListener('load', init); 2 3function init() { 4 5 chrome.runtime.onMessage.addListener(function(message, sender, sendResponse){ 6 alert(message); 7 var response = {data: "Response"}; 8 sendResponse(response); 9 return true; 10 }); 11}
以下のようなbackground.jsでメッセージを受信します.
Javascript
1chrome.runtime.sendMessage("Message", function (response){ 2 console.log("Send message from background.js"); 3 if(response){ 4 console.log("Got response from popup.js"); 5 }else{ 6 console.log("Failed to get response from popup.js"); 7 } 8});
検証結果
メッセージ送信は成功しているが,受信に失敗しているようです.原因がわからずに困っています.
補足情報
manifest.jsonは以下です.
JSon
1{ 2 "manifest_version": 2, 3 "name": "MassageTest", 4 "description": "Gather your browsing generously", 5 "content_security_policy": "script-src 'self' https://ajax.googleapis.com; object-src 'self'", 6 "version": "1.0", 7 "background": { 8 "scripts": [ 9 "background.js" 10 ], 11 "persistent": false 12 }, 13 "browser_action":{ 14 "default_title": "TestTitle", 15 "default_popup": "popup.html" 16 }, 17 "permissions": [ 18 "tabs", 19 "background", 20 "<all_urls>", 21 "http://*/*", 22 "https://*/*", 23 "activeTab" 24 ] 25}
追記(2020/3/22)
popupを立ち上げた状態だと,通信に成功しました.おそらく,popupページは常に立ち上がっているわけではないので,popupを展開させていない状態では,popupでメッセージを受信できなかったんだと思います.popupを展開させていないときでも,メッセージを受信できるようにするには,どのようにすればよいのでしょう.
あなたの回答
tips
プレビュー