Мне нужно реализовать обмен сообщениями в расширении. От content_script`а в background.js посмотрел в документации на способ обмена с помощью window.postMessage() и window.addEventListener(), но сообщения не отправляются. Через content_script у меня загружается js код в head.
Вот этот код в background.js :
window.addEventListener("message", function(event) {
// We only accept messages from ourselves
if (event.source != window)
return;
if (event.data.type && (event.data.type == "FROM_PAGE")) {
console.log("Content script received: " + event.data.text);
port.postMessage(event.data.text);
}
}, false);
Этот в content_script.js:
var s = document.createElement('script');
s.src = chrome.extension.getURL('inject.js');
(document.head||document.documentElement).appendChild(s);
s.onload = function() {
s.parentNode.removeChild(s);
};
Этот в inject.js:
window.postMessage({ type: "FROM_PAGE", text: "Hello from the webpage!" }, "*");
manifest.json:
{
"name": "SaveImg",
"description": "Shows some of the features of the Context Menus API",
"version": "1.0",
"content_scripts": [{
"matches": ["http://*/*"],
"js": ["contentscript.js"]
}],
"permissions": ["contextMenus", "storage","activeTab"],
"background": {
"scripts": ["sample.js"]
},
"web_accessible_resources": ["inject.js"],
"manifest_version": 2
}
Что я делаю не так?