我正在尝试为Google Chrome创建一个简单的插件。其中一个功能是返回上一个使用的选项卡,但我不知道该怎么做。
那么,有没有办法获得最后一个使用过的标签?
答案 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
})
它需要一个activeInfo,它是一个对象,包含属性tabId
和windowId
并且您可以使用 Object restructuring 来帮助您(即 {tabId, windowID} = activeInfo
)
V2 到 V3
<块引用>