我正在使用带有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);
}
});
}
答案 0 :(得分:1)
似乎您可以在全局变量中保存最近激活的选项卡的ID。在onActivated中,将Script注入到该选项卡ID中,并使用新激活的选项卡的id更新变量。