Chrome扩展程序:获取上次使用的标签

时间:2011-12-31 15:20:08

标签: javascript google-chrome-extension

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

那么,有没有办法获得最后一个使用过的标签?

4 个答案:

答案 0 :(得分:6)

您可以尝试在选项卡的onSelected事件中添加一个钩子,只需保存该变量......如下所示:

var curTabID = 0;
var curWinID = 0;

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

然后您始终拥有窗口ID和标签ID。

答案 1 :(得分:2)

注意:这个答案对提问者没什么帮助,但我认为这可能对即将到来的Firefox开发者有所帮助,因为Firefox现在与Chrome共享相同的api。

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时间戳。因此,此方法不是完全防弹的,因为在后台打开的选项卡将被视为最后访问的选项卡。

答案 2 :(得分:0)

我认为您应该使用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)
      }
    ); 
  }
);

答案 3 :(得分:0)

对于 V3

let lastTabID = 0
let lastWindowID = 0

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

onActivated parameter

<块引用>

它需要一个activeInfo,它是一个对象,包含属性tabIdwindowId

并且您可以使用 Object restructuring 来帮助您(即 {tabId, windowID} = activeInfo


V2 到 V3

<块引用>

Manifest V3 required due to the use of Promises and chrome.tabs.onActivated(), replacing chrome.tabs.onSelectionChanged()