Расширение Chrome - передача сообщений - PullRequest
5 голосов
/ 08 июня 2010

Я пытаюсь получить информацию, заданную на странице параметров, чтобы изменить поведение моего расширения.

По сути, если флажок на OptionsPage установлен в true, расширение работает, в противном случае это не так. Я возвращаю истину в background.html для целей тестирования, но, тем не менее, он не работает.

Не могли бы вы, ребята, помочь мне? Спасибо!

Код вводится на страницу:

if(chrome.extension.sendRequest() == 'true')
    alert("checkbox set to true");
else
    alert("it is disabled");

background.html

<script>
chrome.extension.onRequest.addListener(function(){
    return true;
    }
</script>

1 Ответ

14 голосов
/ 08 июня 2010

Если у вас есть страница настроек и вы хотите связаться с фоновой страницей , вы можете просто сделать, chrome.extension.getBackgroundPage ()

Страница параметров, взаимодействующая с фоновой страницей


options.html

var bkg = chrome.extension.getBackgroundPage()
bkg.startExtension();
bkg.stopExtension();

background.html

function startExtension() {
  console.log('Starting Extension');
}

function stopExtension() {
  console.log('Stopping Extension');
}

Скрипт контента, взаимодействующий с фоновой страницей


Когда вы ссылаетесь на «Код, внедряемый на страницу», это какой-нибудь веб-сайт? Если это так, вам нужно будет использовать скрипт содержимого с Message Passing . Для этого вы можете сделать это.

content_script.js

chrome.extension.sendRequest({action:'start'}, function(response) {
  console.log('Start action sent');  
});

background.html

function onRequest(request, sender, sendResponse) {
 if (request.action == 'start')
   startExtension()
 else if (request.action == 'stop')
   stopExtension()

 sendResponse({});
};
chrome.extension.onRequest.addListener(onRequest);

В любом случае, передача сообщений - хорошее чтение для всех, кто входит в расширения.

...