如何从 background.js 访问变量以在 chrome 扩展中弹出

Posted

技术标签:

【中文标题】如何从 background.js 访问变量以在 chrome 扩展中弹出【英文标题】:How to access variables from background.js to pop up in chrome extension 【发布时间】:2017-09-27 15:55:37 【问题描述】:

在 chrome 扩展中,我正在通过 background.js 创建一个新的 html 页面作为弹出窗口。查看下面的 background.js 代码,

 chrome.contextMenus.create(
title: "share this",
contexts: ["selection"],
onclick: myFunction

);

var test0 = "Testing content Outside the myfunction";

function myFunction(data) 
  var theSelection = data.selectionText;
      console.log(theSelection);

      chrome.tabs.query('active': true, "lastFocusedWindow":true, function(tabs) 
              var sourceURL = tabs[0].url;

                                chrome.windows.create(
                  url: chrome.runtime.getURL('redirect.html'), type: 'popup',
              function(tab)
                            

                               );
                return record;
            )

    

我已经完成了给定here 的getbackgroundpage 函数。我可以使用它访问变量 test0 但不能访问 sourceURL (因为它不在窗口范围内)。

通过重定向弹出窗口代码如下,

var bg = chrome.extension.getBackgroundPage();
var sourceURL = bg.sourceURL;
var testvariable = bg.test0;

sourceURL 未定义。

不知道如何将变量定义为全局变量以便在弹出窗口中访问。

有没有更好的方法,我们可以做到吗?

【问题讨论】:

使用消息传递或 chrome.storage.local 或 localStorage 或其他全局变量。 如何使用全局变量选项。非常感谢如果给出语法。 test0 是一个全局变量。 【参考方案1】:

伙计,尝试使用Gogle message passing。

前面链接的小例子

背景脚本

 var myFunc = function()
 //some code
 
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) 
        if (request.messageType == "callSomeFunc") 
            myFunc();
            sendResponse(
                status: "Function myFunc called."
            );
        
        //use return true for async response
        return true;
    );

内容脚本

  chrome.runtime.sendMessage(
        messageType: "callSomeFunc"
    ,    
    function(response) 
        // response contain status: "Function myFunc called."
        console.log(response);    
    );

【讨论】:

以上是关于如何从 background.js 访问变量以在 chrome 扩展中弹出的主要内容,如果未能解决你的问题,请参考以下文章

如何在 foreach 循环中设置变量以在 PHP 中进行外部访问?

mod_auth_openidc 如何访问用户变量以在 PHP 中使用

如何在构造函数中访问类变量以在不使用 C++ 中的 this 指针的情况下分配它们

如何从另一个模块访问测试类以在 junit 测试中使用?

如何从网站中提取数据计数器以在另一个 HTML 项目中用作 JS 变量

如何通过按下按钮从 tkinter 输入字段返回变量以在另一个函数中使用?