Javascript 如何在Chrome extension develop中获取已删除的选项卡Url

Javascript 如何在Chrome extension develop中获取已删除的选项卡Url,javascript,google-chrome,google-chrome-extension,Javascript,Google Chrome,Google Chrome Extension,我正在尝试做一些谷歌浏览器的扩展 我想记住最近删除的选项卡信息。但我有个问题。 每次我用chrome.tabs.get方法获取被删除的标签信息,如URL、标题等,但有一个错误称为“tabs.get期间出错:没有id为的标签” 我想这是因为在tabs.get方法获取tabs信息之前,tabs已经被删除了。 但我如何获得最近删除的标签URL 这是我的代码: chrome.tabs.onRemoved.addListener(getRemovedTabs); function getRemovedTa

我正在尝试做一些谷歌浏览器的扩展 我想记住最近删除的选项卡信息。但我有个问题。 每次我用
chrome.tabs.get
方法获取被删除的标签信息,如URL、标题等,但有一个错误称为
“tabs.get期间出错:没有id为的标签”

我想这是因为在tabs.get方法获取tabs信息之前,tabs已经被删除了。 但我如何获得最近删除的标签URL

这是我的代码:

chrome.tabs.onRemoved.addListener(getRemovedTabs);
function getRemovedTabs(tabId, removeInfo) {
    chrome.tabs.get(tabId, function (tab) {
        //do stuffs
    });
}
该事件在选项卡被移除时触发,而不是在“它即将被移除”时。移除选项卡后,无法获取有关该选项卡的信息

删除选项卡之前必须收集信息。该活动是这方面最方便的活动:

// Background script
var tabToUrl = {};
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
    // Note: this event is fired twice:
    // Once with `changeInfo.status` = "loading" and another time with "complete"
    tabToUrl[tabId] = tab.url;
});

chrome.tabs.onRemoved.addListener(function(tabId, removeInfo) {
    do_stuff_with( tabToUrl[tabId] );

    // Remove information for non-existent tab
    delete tabToUrl[tabId];
});
显然,您不局限于只在
tabToUrl
对象中存储URL。每个
选项卡
类型都包含基本值(布尔值、整数和字符串),因此存储
选项卡
对象不会导致严重的内存消耗。
但是,这些属性可能不准确,因为只有在页面(重新)加载时才会触发
onUpdated
。如果其他属性相关,请确保还将事件侦听器绑定到