@zkrvndm
Софт для автоматизации

Как передавать сообщения со страницы в контент-скрипт и обратно?

Подскажите, каким образом проще всего будет наладить общение JavaScript-кода из контент-скрипта и JavaScript-кода со страницы сайта? Как передавать сообщения между ними НЕ используя фоновый процесс расширения, как посредника?

Проблема у меня в том, что вызов методов Chrome API работает только из контекста контент-скрипта, а хотелось бы иметь возможность вызывать эти методы со вставленного на страницу кода, а для это нужно с ним как-то взаимодействовать.

P. S. Мне примеры кода не нужны, достаточно будет подсказки, чтобы я понимал возможные варианты реализации.
  • Вопрос задан
  • 75 просмотров
Решения вопроса 1
dollar
@dollar
Делай добро и бросай его в воду.
Так контент-скрипт - это часть расширения. Так что не получится его не использовать. Поэтому только через сообщения.
spoiler
Контент-скрипт:
var port = chrome.runtime.connect();

window.addEventListener("message", function(event) {
  if (event.source != window) return;
  if (event.data.type == "FROM_PAGE") {
    console.log("Получено сообщение от страницы: " + event.data.text);
    port.postMessage(event.data.text);
  }
}, false);

Страница:
document.getElementById("theButton").addEventListener("click",
    function() {
  window.postMessage({ type:"FROM_PAGE", text:"Сообщение со страницы!" },"*");
}, false);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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