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'
});
});