Как вызвать функцию из фонового скрипта в скрипт на веб-странице? - PullRequest
1 голос
/ 29 февраля 2020

Я сейчас пишу расширение chrome. Теперь я хочу вызвать функцию внутри скрипта, который загружается с веб-страницы.

Я уже пытался отправить простое сообщение из фона. js на мою веб-страницу.

chrome.runtime.sendMessage({ test: 'hello' }, function (response) {
    console.log(response);
});

Выдает ошибку: «Не проверено runtime.lastError: Не удалось установить sh соединение. Не получен конец.»

На моем скрипте веб-страницы:

chrome.runtime.onMessageExternal.addListener(function (callback) {
    console.log(callback);
});

Выдает ошибку : «Ошибка типа: Не удается прочитать свойство« addListener »с неопределенным значением»

Как отправлять сообщения из моего фона. js на someWebPageScript. js?

Заранее спасибо.

1 Ответ

0 голосов
/ 02 марта 2020

Первый вопрос: Является ли сценарий someWebPageScript js вашим содержимым. js или что-то объявлено в вашем манифесте (что также может быть полезно увидеть)?

Если так, и Вы пытаетесь передать сообщение из фонового сценария в свой контент-сценарий. Возможно, вы захотите внимательно прочитать Chrome Документы для передачи сообщений здесь . Передача сообщения в сценарий содержимого выглядит примерно так:

chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
  chrome.tabs.sendMessage(tabs[0].id, {greeting: "hello"}, function(response) {
  console.log(response.farewell);
  });
});

И принимающая сторона (в сценарии содержимого) должна выглядеть примерно так:

chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
  console.log(sender.tab ?
              "from a content script:" + sender.tab.url :
              "from the extension");
  if (request.greeting == "hello")
    sendResponse({farewell: "goodbye"});
});

chrome.runtime.onMessageExternal.addListener Используемый слушатель предназначен для получения сообщений от других добавочных номеров.

Надеюсь, это поможет. -brent

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...