将值background.js返回给content.js

问题描述 投票:0回答:1

Helo,这个用于chrome扩展的javascript,如何从内容js获取值background.js的值。

    {
  "manifest_version":2,
  "permissions": [
  "storage",
  "activeTab",
  "contextMenus" 
  ],
  "content_scripts": [
    {
      "matches": ["*://*/*"],
      "js": ["jquery.js","content.js"],
      "css": ["style.css"]
    }...
  "background": {
      "persistent": false,
      "scripts": ["background.js"]
  }
}

那是我的json文件,我有问题这个和我的background.js

chrome.contextMenus.removeAll(function() {
  chrome.contextMenus.create({
    id: "right_down",
      title: "Grab-Image to Content Creator",
      contexts: ["image"],
      onclick: cow
      });
});

var cow = chrome.contextMenus.onClicked.addListener(function(info,tab) {
    // return
     cow =  info['srcUrl'];// i want Displays "url image" and proces it to content.js.
     console.log(url);
});

这对于content.js

chrome.runtime.getBackgroundPage(function (backgroundPage) {
    console.log(backgroundPage.cow); //get value url image
});

我运行它但没有得到任何东西,如何获得返回表格背景到其他文件?

javascript jquery json google-chrome-extension
1个回答
0
投票

在你的background.js中,你可以像下面这样使用chrome.tabs.sendMessage

chrome.contextMenus.onClicked.addListener((info, tab) => {
  chrome.tabs.sendMessage(tab.id, {
    url: info['srcUrl'],
  });
});

它会将对象数据(包含您的url)发送到给定的选项卡(由tab.id指定)。您可以通过循环发送到所有选项卡。

在内容脚本中,您可以通过以下方式从后台接收数据:

chrome.runtime.onMessage.addListener((request) => {
  let {
    data,
  } = request;
  console.log(data);
});
© www.soinside.com 2019 - 2024. All rights reserved.