我正在构建一个记录/回放 Chrome 扩展,用户可以单击浏览器操作来开始记录其操作。这会将内容脚本插入到当前事件选项卡中,并开始将操作发送到后台脚本。具有挑战性的部分是当用户单击打开新窗口/选项卡和脚本的链接时,background.js
跟踪使用 chrome.tabs.onCreated.addListener
创建的新选项卡并将内容脚本插入新创建的选项卡(如果其 Opener Tab ID, openerTabId
)与起始标签的ID相同。
整个方法对我来说似乎有点笨拙。这是最好的方法吗?
最佳答案
Programmatic injection讨论了当您的 JavaScript 或 CSS 代码不应注入(inject)到与模式匹配的每个页面中时,以编程方式将代码插入页面非常有用 - 例如,如果您希望脚本仅在用户单击浏览器操作的图标时运行。
要将代码插入页面,您的扩展程序必须具有该页面的跨源权限。它还必须能够使用 chrome.tabs 模块。设置权限后,您可以通过调用 tabs.executeScript 将 JavaScript 注入(inject)页面。如上所述,通常不是直接插入代码,而是将代码放入如下文件中:
chrome.tabs.executeScript(null, {file: "content_script.js"});
除此之外,这篇文章 - Chrome extension: create tab then inject content script into it可能有帮助。 :)
关于javascript - 在从特定选项卡打开的所有新选项卡中插入内容脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36882214/