Chrome 将脚本注入到上一个选项卡?

Chrome inject script into previous tab?

我正在开发一个 Chrome 扩展,其中包含一个 background.js 文件和一个 script.js 文件,可将一些元素注入页面的 DOM。当用户 离开 选项卡时,我想将 script.js 文件注入用户刚刚离开的选项卡(现在不可见)。换句话说,用户从选项卡 A 切换到选项卡 B,并且 script.js 被注入选项卡 A。

我有代码在选项卡更新时注入 script.js 文件,但它注入活动选项卡而不是用户刚刚导航离开的选项卡。有什么想法吗?

chrome.tabs.onActivated.addListener(function(activeInfo) {
    chrome.tabs.get(activeInfo.tabId, function (tab) {
        injectScript(tab.id);
    });
});

chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, updatedTab) {
    chrome.tabs.query({'active': true}, function (activeTabs) {
        var activeTab = activeTabs[0];
        if (activeTab == updatedTab) {
            injectScript(activeTab.id);
        }
    });
});

function injectScript(id) {
    chrome.tabs.executeScript(id, {
            file: "script.js"
    }, function() {
        if (chrome.runtime.lastError) {
            console.error(chrome.runtime.lastError.message);
        }
    });
}

您似乎可以将最近激活的标签页的 ID 保存在全局变量中。在 onActivated 中,将脚本注入该选项卡 ID,并使用新活动选项卡的 ID 更新变量。