Google chrome Chrome将数据从后台页面发送到浏览器操作

Google chrome Chrome将数据从后台页面发送到浏览器操作,google-chrome,google-chrome-extension,Google Chrome,Google Chrome Extension,所以我有一个背景页面,可以监听选项卡的更改 var tabHandler={ onTabUpdate:function(tabId, changeInfo, tab){ }, tabChanged:function(activeInfo) { function tabChanged(tab){ var parser = document.createElement('a');//To extract the hostname,

所以我有一个背景页面,可以监听选项卡的更改

var tabHandler={


    onTabUpdate:function(tabId,  changeInfo,  tab){


    },
    tabChanged:function(activeInfo) {
        function tabChanged(tab){

        var parser = document.createElement('a');//To extract the hostname, we create dom element 
        parser.href = tab.url;

        var regex=/^(www\.)?([^\.]+)/
        var matches=regex.exec(parser.hostname)//This gives us the hostname, we extract the website name
        var website=matches[2];
        var data=getDataForWebsite(website);//Data is a json array
            //TRANSFER 'data' to Browser popup so that it can be displayed.
        }

        chrome.tabs.get(activeInfo.tabId,tabChanged);
    },

    init:function(){
        chrome.tabs.onActivated.addListener(this.tabChanged);

    }



}

tabHandler.init();

这段代码获取网站的nam,并获取基于网站的参数列表。现在我有了这些数据,我想知道如何在浏览器操作弹出窗口中显示这些数据。我想将此数据传递给浏览器操作adn,然后在那里解析它以替换现有内容。如何做到这一点?

您需要记住的一点是,当弹出窗口关闭时,弹出页面不活动(与背景页面不同)。这意味着您不能仅仅将数据传输到弹出页面,因为它在任何时候都不存在。相反,每当弹出窗口打开时,您需要做的第一件事是从存储器中请求信息,并以您想要的方式显示它

在您的后台页面中,当您收到当前域的数据时,您应该将其保存在某个地方:可以在、或或中(查看文档,看看哪一个在您的用例中更有意义)。您可能希望将其保存在域上,以便在需要时从所有打开的选项卡保存信息


然后,每当弹出窗口打开时,从您使用的存储器中获取当前选项卡的数据,并以您想要的任何方式显示数据。

您可以通过从弹出窗口直接访问后台
窗口

当用户打开弹出窗口时,您也可以从后台直接访问它的
窗口


使用这些方法,您可以在弹出窗口和后台之间实现消息传递。

但是,如果弹出窗口仍然打开怎么办?那么如何向它传递消息呢?您只需在扩展内部使用常规消息传递: