0

目前,我有一个包含 extension.js 和 background.js 的 crossrider 插件

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

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

现在,问题是我想要它,以便每次用户更改他们的选项卡时,浏览器插件图标和呈现给用户的数据(例如 browserAction 图标标签)都会根据 他们当前所在的域而改变,在那个标签。

例如:

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

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

非常感谢

4

1 回答 1

1

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

  1. 要检测选项卡更改,请使用appAPI.tabs.onTabSelectionChanged
  2. 要监控 URL 更改,请使用appAPI.webRequest.onBeforeNavigate

为了简化代码,我会使用一个通用函数来更新按钮。例如,在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 的员工]

于 2014-03-03T06:56:34.717 回答