@SavaLLL

Как сделать обмен сообщениями в Chrome Extension?

Мне нужно реализовать обмен сообщениями в расширении. От 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
}

Что я делаю не так?
  • Вопрос задан
  • 1012 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы