【问题标题】:Google chrome extension - toggle icon for all tabs simultaneously?谷歌浏览器扩展 - 同时切换所有标签的图标?
【发布时间】:2017-03-12 01:15:38
【问题描述】:

之前我能够为单个活动标签切换我的扩展程序图标:

chrome.browserAction.onClicked.addListener(function(tab) {
  toggle = !toggle;
  if(toggle){
    active_tab=tab.id;
    chrome.browserAction.setIcon({path: "on.png", tabId:tab.id});
  }
  else{
    chrome.browserAction.setIcon({path: "off.png", tabId:active_tab});
  }
});

但是如何一次更改所有标签的图标...包括新标签?

有没有简单的方法可以做到这一点?

【问题讨论】:

    标签: javascript google-chrome google-chrome-extension tabs icons


    【解决方案1】:

    您可以通过在传递给browserAction.setIcon() 的对象上不提供tabId 属性来做到这一点。 documentation for tabId 声明它是可选的,如果指定它:

    将更改限制在选择特定选项卡时。​​strong>关闭选项卡时自动重置。

    如果您不提供tabId,那么您为pathimageData 指定的内容适用于所有选项卡。这是 browserAction 的方法(更改按钮的属性)的标准方式。

    因此,在您的情况下,它将是:

    chrome.browserAction.onClicked.addListener(function(tab) {
      toggle = !toggle;
      if(toggle){
        active_tab=tab.id;
        chrome.browserAction.setIcon({path: "on.png"});
      }
      else{
        chrome.browserAction.setIcon({path: "off.png"});
      }
    });
    

    【讨论】:

    • 大声笑,我自己也想通了……但是这样会好很多
    • 一旦使用参数tabId: 调用chrome.browserAction.setIcon,在没有tabId: 的情况下调用.setIcon 将不会更改此类选项卡上的图标。有没有办法重置此类选项卡的状态以恢复与默认设置同步,因此在没有tabId: 的情况下调用.setIcon 也会更改其图标?请指教。
    【解决方案2】:

    通过添加另一个在切换选项卡时激活的侦听器来解决。

    chrome.browserAction.onClicked.addListener(function(tab) {
        toggle = !toggle;
        if(toggle){
            chrome.browserAction.setIcon({path: "on.png", tabId:tab.id});
        }
        else{
            chrome.browserAction.setIcon({path: "off.png", tabId:tab.id});
        }
    });
    
    chrome.tabs.onActivated.addListener(function (tab) {
        if(toggle){
            chrome.browserAction.setIcon({path: "on.png", tabId:tab.id});
        }
        else{
            chrome.browserAction.setIcon({path: "off.png", tabId:tab.id});
        }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-15
      • 2022-10-08
      • 1970-01-01
      • 2011-06-04
      • 2018-03-06
      • 2013-08-05
      • 1970-01-01
      相关资源
      最近更新 更多