javascript - 在从特定选项卡打开的所有新选项卡中插入内容脚本

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

我正在构建一个记录/回放 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/

相关文章:

google-chrome-extension - 如何在 chrome 扩展中获取与 cookie 关联的 url?

google-chrome - 通过popup修改本地存储,并在contentscript中使用存储值

javascript - 为什么点表示法返回具有添加属性的对象,而展开运算符则不返回?

javascript - 如何在边框中心对齐两个元素?

javascript - 如何在浏览器上抓取 'about to'下载文件的URL

javascript - 从 Chrome 扩展发送 AJAX

javascript - $.removeCookie 不会删除 Chrome 中的 cookie

google-chrome-extension - 如何为 manifest v3 调试 chrome 扩展服务工作线程?

javascript - 添加 tsParticles 作为背景

javascript - Nodejs npm-migration 通过一次迁移创建多个表