Chrome扩展程序 - 消息传递

Fel*_*ros 5 google-chrome chromium google-chrome-extension

我正在尝试获取在选项页面上设置的信息来改变我的扩展的行为.

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

你能帮助我吗?谢谢!

代码被注入页面:

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

background.html

<script>
chrome.extension.onRequest.addListener(function(){
    return true;
    }
</script>
Run Code Online (Sandbox Code Playgroud)

Moh*_*our 14

如果您有一个选项页面并且想要与后台页面进行通信,那么您可以这样做,chrome.extension.getBackgroundPage()

选项页面与背景页面通信


options.html

var bkg = chrome.extension.getBackgroundPage()
bkg.startExtension();
bkg.stopExtension();
Run Code Online (Sandbox Code Playgroud)

background.html

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

function stopExtension() {
  console.log('Stopping Extension');
}
Run Code Online (Sandbox Code Playgroud)

内容脚本与后台页面通信


当你提到"代码被注入页面"是任何网站?如果是这样,您将需要使用带有消息传递内容脚本.为此,您可以这样做.

content_script.js

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

background.html

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

 sendResponse({});
};
chrome.extension.onRequest.addListener(onRequest);
Run Code Online (Sandbox Code Playgroud)

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