Chrome 扩展:获取上次使用的选项卡

问题描述 投票:0回答:4

我正在尝试为 Google Chrome 创建一个简单的插件。其中一个功能是返回上次使用的选项卡,但我不知道该怎么做。

那么,有什么方法可以获取最后使用的选项卡吗?

javascript google-chrome-extension
4个回答
7
投票

您可以尝试在选项卡的 onSelected 事件中添加一个钩子,然后保存该变量...像这样:

var curTabID = 0;
var curWinID = 0;

chrome.tabs.onSelectionChanged.addListener(function(tabId, selectInfo) {
   curTabID = tabId;
   curWinID = selectInfo.windowId;
});

然后您就始终拥有窗口 id 和选项卡 id。


3
投票

Chrome 121+ 或 Firefox Webextension 程序员 不必自己跟踪选项卡。由于 lastAccessed 属性,他们可以像这样查询它:

  chrome.tabs.query({
    active: false
  }, (tabs) => {
    let tab = tabs.reduce((previous, current) => {
      return previous.lastAccessed > current.lastAccessed ? previous : current;
    });
    // previous tab
    console.log(tab);
  });

编辑:值得一提的是,如果在后台创建新选项卡,也会设置 LastAcessed 时间戳。所以这个方法并不完美,因为在后台打开的选项卡将被视为最后访问的选项卡。


1
投票

我认为您应该使用 chrome.windows.getCurrent 函数来获取当前窗口,并使用 chrome.tabs.query 函数来获取此窗口中的活动选项卡。

这是一个示例(来自后台页面的脚本):

chrome.windows.getCurrent(
  function(win) { 
    // win is a Window object referencing the current window
    chrome.tabs.query({'windowId': win.id, 'active': true}, 
      function(tabArray) { 
        // tabArray is a Tab Array referencing active tab(s)
      }
    ); 
  }
);

1
投票

对于V3

let lastTabID = 0
let lastWindowID = 0

chrome.tabs.onActivated.addListener(({tabId, windowId}) => {
  lastTabID = tabId
  lastWindowID = windowId
})

onActivated 参数

它需要一个 activeInfo,它是一个 object,其中包含属性

tabId
windowId

并且您可以使用对象重组来帮助您(即

{tabId, windowID} = activeInfo


V2 至 V3

由于使用 Promises 和

chrome.tabs.onActivated()
,需要 Manifest V3,取代
chrome.tabs.onSelectionChanged()

© www.soinside.com 2019 - 2024. All rights reserved.