Chrome 扩展程序 - 消息传递

Chrome extension - Message Passing

提问人:Felipe Barreiros 提问时间:6/8/2010 更新时间:6/9/2010 访问量:3068

问:

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

基本上,如果 OptionsPage 上的复选框设置为 true,则扩展将运行,否则不会运行。 出于测试目的,我在后台 .html 上返回 true,但它仍然不起作用。

你们能帮我吗?谢谢!

注入到页面的代码:

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

背景:.html

<script>
chrome.extension.onRequest.addListener(function(){
    return true;
    }
</script>
浏览器 谷歌浏览器扩展程序 chromium

评论


答:

14赞 Mohamed Mansour 6/9/2010 #1

如果你有一个选项页面,并且你想与后台页面进行通信,你可以简单地做,chrome.extension.getBackgroundPage()

与后台页面通信的选项页面


选项:.html

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

背景:.html

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

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

与后台页面通信的内容脚本


当您提到“代码被注入页面”时,这是任何网站吗?如果是这样,则需要将内容脚本消息传递一起使用。为此,您可以这样做。

content_script.js

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

背景:.html

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

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

无论如何,对于任何进入扩展的人来说,消息传递都是一个不错的阅读。