我正在构建一个Record / Playback chrome扩展程序,用户可以单击浏览器操作来开始记录他的操作。这会将内容脚本插入当前活动选项卡,并开始将操作发送到后台脚本。具有挑战性的部分是当用户单击打开新窗口/选项卡和脚本的链接时,background.js
会跟踪使用chrome.tabs.onCreated.addListener
创建的新选项卡,并将内容脚本插入到新创建的选项卡中如果其Opener Tab ID, openerTabId
与起始标签的ID相同。
整个方法对我来说似乎有点笨拙。这是最好的方式吗?
答案 0 :(得分:1)
Programmatic injection讨论了当您的JavaScript或CSS代码不应被注入到与模式匹配的每个页面时,以编程方式将代码插入页面非常有用 - 例如,如果您希望脚本运行仅当用户点击浏览器操作的图标时才会显示。
要将代码插入页面,您的扩展程序必须具有该页面的跨域权限。它还必须能够使用chrome.tabs
模块。设置权限后,可以通过调用tabs.executeScript
将JavaScript注入页面。并且如上所述,不是直接插入代码,而是通常通过将代码放在如下文件中来完成:
chrome.tabs.executeScript(null, {file: "content_script.js"});
除此之外,这个SO帖子 - Chrome extension: create tab then inject content script into it可能有所帮助。 :)
答案 1 :(得分:1)
我认为你应该将content_script.js添加到 并使用
检查该选项卡是否为新选项卡if(history.length == 1){
// TODO: something
}