Chrome扩展程序如何在浏览器操作弹出窗口中获取当前选项卡的ID

10
我正在编写一个扩展程序,旨在通过后台页面捕获任何类型的重定向,并为每个选项卡跟踪它们,并在浏览器操作中为每个选项卡概述它们。 因此,我希望操作弹出窗口脚本获取活动选项卡的ID,以便仅显示与该活动选项卡相关的数据。
我已经在清单中声明了“activeTab”权限。
我尝试了chrome.tabs.getCurrent(function(tab){}),但注意到文档中将浏览器操作作为上下文实例进行了提及,其中tab未定义。 https://developer.chrome.com/extensions/tabs#method-getCurrent 我考虑通过消息传递来获取选项卡ID,但是我没有找到适合连接内容脚本和操作弹出窗口的方法。
如果可能的话,如何在浏览器操作弹出窗口中获取活动选项卡的ID?
2个回答

25

您需要使用tabs.query

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

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


0

动态获取当前激活的选项卡 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-----------

您的代码显示了一个作为后台标签页打开的选项卡,就像使用中间鼠标键一样,但实际上它并没有被激活。 - Evgeniy
我认为这不需要内部函数(即,不需要chrome.tabs.get)。只需从外部函数中console.log tabId即可。 - Wide Awake

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接