gpt4 book ai didi

javascript - 如何在 Chrome 扩展程序开发人员中获取已删除的标签页 Url

转载 作者:搜寻专家 更新时间:2023-11-01 04:58:00 24 4
gpt4 key购买 nike

我正在尝试制作一些 Google Chrome 扩展程序我想记住最近删除的选项卡信息。但是我遇到了一个问题。每次我使用 chrome.tabs.get 方法获取已删除的标签信息,如 URL、标题等,但有一个错误说 'Error during tabs.get: No tab带有 id'.

我认为这是因为在 tabs.get 方法获取选项卡信息之前选项卡已被删除。但是我怎样才能获得最近删除的标签 URL?

这是我的代码:

chrome.tabs.onRemoved.addListener(getRemovedTabs);
function getRemovedTabs(tabId, removeInfo) {
chrome.tabs.get(tabId, function (tab) {
//do stuffs
});
}

最佳答案

chrome.tabs.onRemoved标签被移除时触发事件,而不是“它即将被移除”时触发。选项卡被移除后,无法获取有关该选项卡的信息。

必须在删除选项卡之前收集信息。 chrome.tabs.onUpdated事件是最方便的事件:

// 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];
});

显然,您并不仅限于将 URL 存储在 tabToUrl 对象中。每个 tab 类型都包含原始值( bool 值、整数和字符串),因此存储 tab 对象不会导致严重的内存消耗。
但是这些属性可能不准确,因为 onUpdated 仅在页面(重新)加载时触发。如果其他属性相关,请确保您还将事件监听器绑定(bind)到 other chrome.tab events .

关于javascript - 如何在 Chrome 扩展程序开发人员中获取已删除的标签页 Url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12227164/

24 4 0