Chrome将脚本注入上一个标签?

时间:2015-07-14 18:48:14

标签: javascript google-chrome google-chrome-extension content-script

我正在使用带有background.js文件和script.js文件的Chrome扩展程序,该文件将一些元素注入到页面的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);
        }
    });
}

1 个答案:

答案 0 :(得分:1)

似乎您可以在全局变量中保存最近激活的选项卡的ID。在onActivated中,将Script注入到该选项卡ID中,并使用新激活的选项卡的id更新变量。