В chrome.tabs.executeScript, как вы можете вызвать функцию, параметры которой находятся в ContentScript? - PullRequest
3 голосов
/ 29 марта 2011

Рассмотрим этот код:

function SwapColumns() {
  chrome.tabs.executeScript(null,
      {code:"SwapNameAndSurname();"});
}

Приведенный выше код находится в popup.html, метод SwapNameAndSurname () находится в сценарии содержимого с именем js.js, который не содержит ничего, кроме библиотеки, полной функций.Когда я вызываю функцию SwapColumns из popup.html, функция SwapNameAndSurname () в js.js вызывается для изменения чего-либо в DOM исходной страницы с помощью скриптов содержимого.

Однако моя проблема здесь.Я подготовил объект с именем employee в popup.html, который мне нужно отправить в функцию SwapNameAndSurname () в качестве параметра:

var employee = {'Name' : 'John', 'Surname' : 'Doe', 'Qualifications' : [{'Title':'MCAD', 'Date':'Jan 2008'},{'Title':'MCSA', 'Date':'Feb 2008'}]};

function SwapColumns() {
  chrome.tabs.executeScript(null,
      {code:"SwapNameAndSurname(**???employee???**);"});
}

Как я могу это сделать?Поскольку в chrome.tabs.executeScript вы должны писать код непосредственно в строку, вы не можете отправлять параметры.Я прочитал Chrome tabs.executeScript - передача параметров и использование библиотек? , но все еще не могу понять, что происходит.

1 Ответ

1 голос
/ 30 марта 2011

Я нашел ответ на свой вопрос.На страницах расширения необходимо вызвать метод chrome.tabs.sendRequest, а из сценариев содержимого - добавить прослушиватель с помощью метода chrome.extension.onRequest.addListener.Метод отправки запроса вызовет событие, обнаруженное в сценариях содержимого, что позволит вам отправить любую форму данных в сценарий содержимого.

Подробнее см. http://aarongusman.wordpress.com/2011/03/30/communication-between-chrome-extension-content-scripts-and-extension-pages/

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