【问题标题】:Send variables from "browser_action" to "content_scripts"将变量从“browser_action”发送到“content_scripts”
【发布时间】:2016-01-11 08:38:20
【问题描述】:

我对制作 Chrome 扩展程序很陌生,我会尝试一些东西:

我会将 JS 变量从“browser_action”发送到“content_scripts”


"browser_action": {
    "default_popup": "src/browser_action/index.html"
},
"content_scripts": [
   {
      "matches": ["<all_urls>"],
      "js": ["src/inject/inject.js"]
   }
]

示例:如果...

src/browser_action/main.js : (browser_action)

var MyVar = "Hello world";

以及如何将MyVar 发送到 src/inject/inject.js ?喜欢..

// What function I should do before to alert()?
if (typeof MyVar !== 'undefined') {
   alert(MyVar);
}

【问题讨论】:

    标签: javascript google-chrome-extension


    【解决方案1】:

    如果你想从后台发送消息(或数据)到内容脚本,你可以使用chrome.tabs.sendMessage()。但是您需要指定将其发送到哪个选项卡(使用tabId)。你应该阅读message passing in extensions

    示例:

    向选定选项卡中的内容脚本发送消息

    ma​​in.js

    chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
      chrome.tabs.sendMessage(tabs[0].id, {greeting: "hello"}, function(response) {
        console.log(response.farewell);
      });
    });
    

    在接收端,需要设置一个chrome.runtime.onMessage事件监听器来处理消息

    inject.js:

    chrome.runtime.onMessage.addListener(
      function(request, sender, sendResponse) {
        if (request.greeting == "hello")
          sendResponse({farewell: "goodbye"});
      });
    

    【讨论】:

    【解决方案2】:

    我用chrome.storage #ref 做到了

    示例:

    ma​​nifest.json

    上添加“存储”权限
    "permissions": [
       "storage"
    ]
    

    在 main.js 上 (browser_action)

    chrome.storage.sync.set({'user':{email:'hello@world.com'}});
    

    inject.js (content_scripts)

    chrome.storage.onChanged.addListener(function(c,a){
       chrome.storage.sync.get('user',function(o){
          if(!$.isEmptyObject(o)){ // Check via jQuery function
              // Do somethings...
              console.log(o.user.email);
          }
       });
    });
    

    【讨论】:

      猜你喜欢
      • 2016-07-25
      • 2011-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多