Javascript 在后台脚本中,侦听新打开的选项卡

Javascript 在后台脚本中,侦听新打开的选项卡,javascript,google-chrome-extension,Javascript,Google Chrome Extension,在我的背景脚本中,或者除了内容脚本之外的任何地方,我都在尝试侦听活动选项卡或新打开的选项卡 我有这个,但这显然是不正确的: 我试图做的是将内容脚本注入活动选项卡。我不想让我的内容脚本为每个选项卡/窗口运行,只为选择的选项卡运行 有人知道如何为某些选项卡注入内容脚本吗?我想不出来。我认为注入内容脚本的最佳方式是从后台脚本。一些我们无法在内容脚本中访问的chrome API在这种情况下,在background.js中执行代码,并从后台js执行相应的操作。如果要在内容脚本中执行某些操作,则需要使用发

在我的背景脚本中,或者除了内容脚本之外的任何地方,我都在尝试侦听活动选项卡或新打开的选项卡

我有这个,但这显然是不正确的:

我试图做的是将内容脚本注入活动选项卡。我不想让我的内容脚本为每个选项卡/窗口运行,只为选择的选项卡运行


有人知道如何为某些选项卡注入内容脚本吗?我想不出来。我认为注入内容脚本的最佳方式是从后台脚本。

一些我们无法在内容脚本中访问的chrome API在这种情况下,在background.js中执行代码,并从后台js执行相应的操作。如果要在内容脚本中执行某些操作,则需要使用发送消息进行通信

我缺少:

 "webNavigation"
manifest.json中的权限。添加该权限后,我现在拥有:

chrome.webNavigation.onDOMContentLoaded.addListener(function (details) {

    const tabId = details.tabId;

    chrome.tabs.executeScript(tabId, {
      file: 'inject.js'
    });

});

现在它可以工作了。

如果要在已激活的选项卡()中运行代码:

如果要将文件插入每个新激活的选项卡():

确保检查是否已注入文件,以防止多次注入


对于这两种情况,权限应包括
选项卡

如果有更好的方法来确定活动选项卡而无需轮询,请让我知道谢谢,我如何知道最近单击了哪个选项卡?我能听到标签点击吗?@Olegzandr,我认为chrome.tabs.onActivated就是这样。是吗?是的,我想是的,让我试试,如果有效的话,我会接受答案的!顺便问一句,你在哪里看到激活的API文档?我没见过before@Olegzandr,我在答案中加入了链接。
chrome.tabs.query({active: true, currentWindow: true}, function(foundTabs) {
    const activeTabId = foundTabs[0].id;

    chrome.tabs.executeScript(activeTabId, {
      file: 'inject.js'
    }); 
})
chrome.tabs.onActivated.addListener(function(activeInfo) {
    chrome.tabs.executeScript(activeInfo.tabId, {
        file: 'inject.js'
    }); 
});