Chrome扩展程序 - 消息传递

时间:2010-06-08 15:27:38

标签: google-chrome google-chrome-extension chromium

我正在尝试获取在“选项”页面上设置的信息,以改变我的扩展程序的行为。

基本上,如果OptionsPage上的复选框设置为true,则扩展名会运行,否则不会。 我在background.html上返回true用于测试目的,但仍然无效。

你能帮帮我吗?谢谢!

代码被注入页面:

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 个答案:

答案 0 :(得分:14)

如果您有options page并希望与background page进行沟通,则可以执行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');
}

与背景页面通信的内容脚本


当您提到“代码被注入页面”时,是指任何网站?如果是这样,您需要使用content scriptMessage 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);

在任何情况下,对于任何进入扩展程序的人来说,message passing都是一个很好的读物。