代码之家  ›  专栏  ›  技术社区  ›  Felipe Barreiros

Chrome扩展-消息传递

  •  5
  • Felipe Barreiros  · 技术社区  · 16 年前

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

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

    你们能帮我吗?谢谢!

    正在注入到页面的代码:

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

    背景技术

    <script>
    chrome.extension.onRequest.addListener(function(){
        return true;
        }
    </script>
    
    1 回复  |  直到 16 年前
        1
  •  14
  •   Mohamed Mansour    16 年前

    如果你有 options page 你想和 background page 你可以简单地做, chrome.extension.getBackgroundPage()

    选项页与背景页通信


    opth.HTML

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

    背景技术

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

    与背景页通信的内容脚本


    当你提到“代码被注入页面”时,那是什么网站?如果是这样,您需要使用 content script 具有 Message Passing . 要做到这一点,你可以做到。

    内容脚本.js

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

    背景技术

    function onRequest(request, sender, sendResponse) {
     if (request.action == 'start')
       startExtension()
     else if (request.action == 'stop')
       stopExtension()
    
     sendResponse({});
    };
    chrome.extension.onRequest.addListener(onRequest);
    

    无论如何, message passing 对于任何进入扩展的人来说都是一个很好的读物。