【问题标题】:chrome extension get active tab id in browser action popupchrome 扩展在浏览器操作弹出窗口中获取活动选项卡 ID
【发布时间】:2016-10-03 21:17:53
【问题描述】:

我正在编写一个扩展程序,旨在通过背景页面捕获任何类型的重定向,跟踪每个选项卡的重定向,并在每个选项卡的浏览器操作中概述它们。 因此,我希望动作弹出脚本获取活动选项卡的 Id,以便在动作弹出窗口中仅显示与此活动选项卡相关的数据。

我已经在清单中声明了权限“activeTab”。

我尝试了chrome.tabs.getCurrent(function(tab){}),然后在文档中注意到浏览器操作被提及为未定义tab 的上下文实例。 https://developer.chrome.com/extensions/tabs#method-getCurrent

我考虑过向内容脚本发送消息以获取选项卡 ID,但我没有找到合适的方法来连接内容脚本和操作弹出窗口。

如果可能,我如何在浏览器操作弹出窗口中获取活动选项卡的 ID?

【问题讨论】:

    标签: google-chrome-extension


    【解决方案1】:

    你需要tabs.query:

    chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
      var currTab = tabs[0];
      if (currTab) { // Sanity check
        /* do stuff */
      }
    });
    

    “罕见情况”主要限于作为当前窗口的分离的 DevTools 窗口(看起来这种情况已修复);在正常操作期间不应发生。

    【讨论】:

      【解决方案2】:

      动态获取活动标签 ID

      function onUpdatedListener(tabId, changeInfo, tab) {
          chrome.tabs.get(tabId.tabId, function(tab){
              console.log('New active tab: ' + tab.id);
          });
      }
      // Subscribe to tab events
      chrome.tabs.onActivated.addListener(onUpdatedListener);
      // End tabs listeners-----------
      

      【讨论】:

      • 一个作为背景标签打开的标签,就像用鼠标中键点击一样,在您的代码中显示为活动状态,但不是。
      • 我认为这不需要内部函数(即,不需要chrome.tabs.get)。只需 console.log 来自外部函数的 tabId。
      猜你喜欢
      • 1970-01-01
      • 2017-07-11
      • 1970-01-01
      • 2022-01-05
      • 2018-12-16
      • 2017-12-23
      • 2014-11-02
      • 2015-11-19
      • 2014-11-19
      相关资源
      最近更新 更多