【问题标题】:Chrome tabs.onActivated updating only current tabChrome tabs.onActivated 仅更新当前标签
【发布时间】:2016-05-06 06:27:55
【问题描述】:

我有一个基本的 chrome 扩展,当用户切换到新的活动标签时会触发。在后台页面中会检查 URL,扩展图标会根据 URL 发生变化。

chrome.tabs.onActivated.addListener(function(tabInfo) {
  chrome.tabs.get(tabInfo.tabId, function(tab) {
    update_tab(...)
  });
});

这很好用,但我面临的问题是,当函数触发并决定更新图标时,用户可以再次切换选项卡,但图标会根据前一个选项卡更改。

我怎样才能提高可靠性?

【问题讨论】:

  • 如果您正在谈论 browserAction 图标(以及刷新过程缓慢),我建议您使用 pageAction 构建您的逻辑(根据我的经验更快)。现在,当页面操作从地址栏移动到工具栏时,不确定它的行为方式(从速度的角度来看)
  • 我很想看到一个包含所有现代浏览器的解决方案

标签: google-chrome google-chrome-extension


【解决方案1】:

您可以拥有每个标签的浏览器操作图标,因此您无需跟踪标签切换。

如果您使用chrome.browserAction.setIcon 更新您的图标,它需要一个可选的tabId 参数。同样适用于setTitle

如果您这样做,则无需担心标签激活; onUpdated 将通知您 URL 更改。

【讨论】:

    【解决方案2】:

    您也可以尝试添加onUpdated 监听器:

    chrome.tabs.onUpdated.addListener(function(tabInfo) {
      chrome.tabs.get(tabInfo.tabId, function(tab) {
        update_tab(...)
      });
    });
    

    当窗口中的活动选项卡更改时触发。请注意选项卡的 URL 触发此事件时可能未设置,但您可以收听 设置 URL 时要通知的 onUpdated 事件。 https://developer.chrome.com/extensions/tabs

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-22
      相关资源
      最近更新 更多