javascript - Chrome 将脚本注入(inject)上一个选项卡?

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

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

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

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 中,将脚本注入(inject)该选项卡 id,并使用新事件选项卡的 id 更新变量。

关于javascript - Chrome 将脚本注入(inject)上一个选项卡?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31414897/

相关文章:

javascript - 有没有一种方法可以使用 rgba 颜色 [0, 15, 31, 0.4 ] 在 vue js 中设置 TD 元素的样式

google-chrome - 如何通过命令行安装 crx Chrome 扩展?

javascript - 无法使用 jquery 访问通过 google chrome 内容脚本注入(inject)的 iframe 内容

c++ - PNACL——使用 winscard 库

javascript - 在不破坏 CSS/JS 的情况下将旧的静态页面添加到 Rails 应用程序中

javascript - 在 MustacheJs 中切换大小写

javascript - 如何在提交时使用 jquery 验证来验证表单?

css - Chrome 在切换标签时隐藏 HTML5 视频

google-chrome - Chrome崩溃了,我的简单GWT应用程序

javascript - Chrome 插件 - 从窗口的一部分生成 PNG/JPG