background - 如何从后台页面获取数据到谷歌浏览器扩展中的内容脚本

标签 background google-chrome-extension

我一直在尝试将数据从我的背景页面发送到我的 chrome 扩展中的内容脚本。我似乎无法让它工作。我在网上看了几篇文章,但不是很清楚,看起来水平很高。我已经设法使用 Chrome 示例上的 Oauth 联系人示例使 oauth 正常工作。身份验证有效,我可以通过打开一个新选项卡获取数据并将其显示在 html 页面中。

我想将此数据发送到内容脚本。

我在这方面遇到了很多麻烦,如果有人可以概述您需要遵循的明确步骤,以便将数据从 bg 页面发送到内容脚本甚至更好的一些代码,我将不胜感激。有接盘侠吗?

我的背景页面的代码如下(我已经排除了 oauth 参数和其他)

` function onContacts(text, xhr) {
    contacts = [];
    var data = JSON.parse(text);
    var realdata = data.contacts;
    for (var i = 0, person; person = realdata.person[i]; i++) {
      var contact = {
        'name' : person['name'],
        'emails' : person['email']
      };


      contacts.push(contact); //this array "contacts" is read by the 
 contacts.html page when opened in a new tab

    }

    chrome.tabs.create({ 'url' : 'contacts.html'}); sending data to new tab
    //chrome.tabs.executeScript(null,{file: "contentscript.js"});
    may be this may work?

  };

  function getContacts() {
    oauth.authorize(function() {
      console.log("on authorize");
      setIcon();
      var url = "http://mydataurl/";
      oauth.sendSignedRequest(url, onContacts);

    });
  };

  chrome.browserAction.onClicked.addListener(getContacts);`

由于我不太确定如何将数据放入内容脚本中,因此我不会费心发布我失败的内容脚本的多个版本。如果我能获得一个关于如何从我的内容脚本请求“联系人”数组以及如何从 bg 页面发送数据的示例,那就太好了!

最佳答案

遵循穆罕默德的观点。

如果您想在初始化时将数据从后台脚本传递到内容脚本,您可以生成另一个仅包含 JSON 的简单脚本并预先执行它。

那是你要找的吗?

否则,您将需要使用消息传递接口(interface)

在后台页面:

// Subscribe to onVisited event, so that injectSite() is called once at every pageload.
chrome.history.onVisited.addListener(injectSite);

function injectSite(data) {
    // get custom configuration for this URL in the background page.
    var site_conf = getSiteConfiguration(data.url);

    if (site_conf)
    {
        chrome.tabs.executeScript({ code: 'PARAMS = ' + JSON.stringify(site_conf) + ';' });
        chrome.tabs.executeScript({ file: 'site_injection.js' });
    }
}

在内容脚本页面 (site_injection.js)
// read config directly from background
console.log(PARAM.whatever);

关于background - 如何从后台页面获取数据到谷歌浏览器扩展中的内容脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4700254/

相关文章:

Android:完全在后台上传文件

ios - Voip 应用程序 IOS 出现错误 Error Domain=NSPOSIXErrorDomain Code=61 "The operation couldn’ 无法完成。连接被拒绝

javascript - Chrome 扩展程序在安装时的新标签中不显示背景图片

javascript - Chrome 中的SQLite

css - 自定义背景图片

video - OpenCV:如何对GMM计算的概率进行分类

google-chrome-extension - Chrome 扩展程序未在 YouTube 的浏览器导航中加载

google-chrome - 从 Emacs 远程控制 Chrome/Chromium 浏览器?

python / Selenium : How can I emulate extensions such as uBlock or AdBlock using a headless Chrome driver?

iOS:如何让定时器应用程序在后台播放自定义声音?