根据活动选项卡更改浏览器加载项图标和数据

时间:2014-03-03 04:26:52

标签: crossrider browser-addons

目前,我有一个crossrider add on,包含extension.js和background.js

在extension.js中,我向用户当前所在的页面发送GET请求。在这个GET请求中,我正在收集一些数据。

我将域名(协议+域)存储在本地Crossrider数据库中,对于每个get请求,我确保所请求的域不存在于数据库中,如果在数据库中找到它,我阻止了请求的发生(出于优化目的)。

现在,问题在于我希望每次用户更改其标签时,向用户显示的浏览器附加图标和数据(例如browserAction图标标签)都会更改各自到该选项卡中的当前域名。

例如:

标签1 - https://www.google.com 标签2 - https://www.yahoo.com

当用户在选项卡1上时,浏览器加载项图标和详细信息将分别更改为该URL。一旦他/她切换到选项卡2,细节就会再次更改为它们所在的URL。如果用户访问同一标签中的新网站,则浏览器插件的详细信息应该再次与他们访问过的新网址相对应。

非常感谢

1 个答案:

答案 0 :(得分:1)

我对您的要求的理解,正如您所描述的那样,由两个组件组成,可以使用以下Crossrider方法在后台范围内解决:

  1. 要检测标签更改,请使用appAPI.tabs.onTabSelectionChanged
  2. 要使用appAPI.webRequest.onBeforeNavigate
  3. 监控网址更改

    为简化代码,我会使用常用功能进行按钮更新。例如,在 background.js 文件中,您的代码如下所示:

    appAPI.ready(function($) {
        // Monitor tab selection changes
        appAPI.tabs.onTabSelectionChanged(function(tabInfo) {
            // tabInfo.Id = Tab Id
            // tabInfo.tabUrl = URL in tab
            updateButton(tabInfo.tabUrl);
        });
    
        appAPI.webRequest.onBeforeNavigate.addListener(function(details, opaqueData) {
            // details.pageUrl = URL of the tab requesting the page
            // opaqueData = data passed to the context of the callback function
            updateButton(details.pageUrl);
        });
    
        function updateButton(url) {
            // Your code to update the button based on URL
        }
    });

    [披露:我是Crossrider员工]

相关问题