问题标签 [chrome-extension-manifest-v3]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2346 浏览

google-chrome-extension - 事件处理程序中的错误:ReferenceError:未使用清单 v3 定义窗口 chrome 扩展

我正在使用清单版本 3 进行 chrome 扩展我在后台 js 中遇到这个错误: 事件处理程序中的错误:ReferenceError: window is not defined chrome extension with manifest v3

"manifest_version":3, "permissions":["contextMenus","storage", "activeTab","tabs","scripting","webRequest"],

var posLeft = ( window.width - winWidth ) / 2 ;

0 投票
0 回答
238 浏览

javascript - 尝试在清单 v3 中使用内联代码

我想问的第一件事是:这可能吗?如果没有,当我使用 webGL 时,还有什么替代方案。

我在 index.html 文件中收到 3 个错误,原因似乎与我正在制作的 chrome 扩展中的弹出窗口相同。

完整代码:

错误是:

(第 28 行)拒绝执行内联脚本,因为它违反了以下内容安全策略指令:“script-src 'self'”。启用内联执行需要“unsafe-inline”关键字、哈希(“sha256-3JCafC5bWxhIvW3rJktB1iscJ+3ZX4DuRi2p1U7DmbQ=”)或随机数(“nonce-...”)。

(第 30 行)拒绝执行内联脚本,因为它违反了以下内容安全策略指令:“script-src 'self'”。启用内联执行需要“unsafe-inline”关键字、哈希(“sha256-3JCafC5bWxhIvW3rJktB1iscJ+3ZX4DuRi2p1U7DmbQ=”)或随机数(“nonce-...”)。

(第 25 行)

拒绝执行内联脚本,因为它违反了以下内容安全策略指令:“script-src 'self'”。启用内联执行需要“unsafe-inline”关键字、哈希(“sha256-3JCafC5bWxhIvW3rJktB1iscJ+3ZX4DuRi2p1U7DmbQ=”)或随机数(“nonce-...”)。

这是我的 manifest.json 文件:

0 投票
2 回答
188 浏览

google-chrome-extension - 在开发过程中使用 CI/CD 和 update.xml 自动更新 Chrome 扩展

我在本地开发了一个 Chrome 扩展程序,它是一个 React 应用程序。

我已经设置了一个 CI/CD 管道,以便构建 React 应用程序yarn build以生成dist包含应用程序文件和manifest.json. 然后,管道使用此 npm 包创建文件并将其与已使用新版本号和新文件 URL 更新.crx的文件一起上传到公共存储位置。update.xml.crx

我在本地创建了一个私钥 ( key.pem) 并存储在密钥库中,这样 CI 管道中的“打包”作业每次都使用相同的私钥。公钥已添加到 ,manifest.json以便应用 ID 每次都保持相同。

更新2.xml

清单.json

安装和更新步骤:

  1. 转到chrome://extensions/> 开发人员模式 > 加载解压 > 选择本地dist目录。
  2. 解压后的扩展出现在带有 app id 的扩展列表中:blahblahooaejaldnohkhmaedknkfogn
  3. 选择扩展并单击“更新”

预期结果:

Chrome 查询远程update.xml文件,查看比最初安装的版本更高的版本,crx从指定位置下载并安装新文件。

实际结果:

扩展未更新。

注意:我crt从存储位置下载了 CI/CD 生成的并上传到这里。该在线工具显示的公钥与keymanifest.json 中的值匹配,计算出的应用程序 ID 与update.xml.

为了更深入地挖掘,我打开了 Fiddler4 并嗅探了 Chrome 发出的调用。尽管我不明白所有内容,但其中一个回复是:

那个“应用程序 ID”不是我的(或者是 Chrome 应用程序 ID?),但“错误未知应用程序”的状态可能会提示正在发生的事情。

0 投票
0 回答
46 浏览

google-chrome-extension - 如何跳过私有 Chrome 扩展的手动测试?

我正在构建一个私有的扩展,只有一些测试用户可以访问。

它使用我拥有的页面创建 iFrame。iFrame 是一个拼图或单词拼图,在一段时间或点击页面后生成。所以扩展做了一些通常不应该做的事情。好吧,如果以未打包的形式导入,它可以在 DEV 浏览器上运行。我想在普通浏览器上执行测试,并可能更改策略以对用户隐藏扩展。

该扩展也可以在不声明主机 (http/s) 的情况下工作,但我必须添加 content_scripts,并且 content_scripts 可能会触发额外的测试/评论。脚本可以以不同的方式内联吗?

Welll..有没有办法跳过私人/有限用户扩展的手动审查?

ps 我不想等待一个星期(我的第一次延期,所以我不知道需要多长时间)才能获得不会公开分发的内容。因为我已经等了几个小时并且没有审查 - 我想它将被手动审查。阅读我的临时代码不是一件令人愉快的任务。

编辑:我删除了一些不需要的权限。我正在修改 content_script,但它仍然会进行人工审核。

清单是

0 投票
2 回答
356 浏览

javascript - 如何分配键盘快捷键以在 Chrome 扩展清单 v3 中运行功能

我一直在尝试实现Action 命令,以便键盘快捷键将触发background.js中的功能。当前代码在按下键盘快捷键时不会发生任何事情。

理想情况下,键盘快捷键会触发background.js中的函数reddenPage

我假设一些代码需要放在background.js中,我只是不确定代码应该在哪里或应该是什么。任何帮助深表感谢!

Manifest.json

background.js

0 投票
0 回答
32 浏览

google-chrome - 仅在刷新后加载 Chrome 扩展程序

我正在尝试制作一个 chrome 扩展,以帮助我完成我正在玩的足球经理游戏。我遇到的问题是该扩展仅在我刷新它应该工作的页面后才能工作。它是这样的:我去页面,没有扩展。我刷新页面,扩展程序按应有的方式工作。我如何使它第一次工作?任何帮助是极大的赞赏 :)

背景.js:

这是 manifest.json:

0 投票
0 回答
78 浏览

google-chrome - 如何获取从 chrome 扩展运行的 PWA(以及相关的启动 URL)列表?

我有一个 chrome 扩展。任务是获取在操作系统上运行的 PWA(从 Chrome 安装)的列表,并获取所有这些 PWA 的启动 URL。我找不到 chrome 扩展提供的任何 API 来实现这一点。如果有人可以引导我朝着正确的方向前进,那将非常有帮助

0 投票
1 回答
352 浏览

google-chrome-extension - Chrome 扩展清单 V3 远程托管代码

Chrome 扩展清单 v3 中,不再允许远程托管代码。迁移文档有两种解决方案。

配置驱动的特性和逻辑——在这种方法中,您的扩展在运行时加载远程配置(例如 JSON 文件)并在本地缓存配置。然后,扩展使用此缓存配置来决定启用哪些功能。

使用远程服务将逻辑外部化——考虑将应用程序逻辑从扩展程序迁移到您的扩展程序可以调用的远程 Web 服务。(本质上是消息传递的一种形式。)这使您能够保持代码的私密性并按需更改代码,同时避免重新提交到 Chrome 网上应用店的额外开销。

有人看过这两种配置的样本吗?

起初,鉴于此错误,我试图弄乱 CSP,但现在认为这甚至不可能,因此该错误首先有点误导。

这是我试图开始工作的 CSP 政策,现在怀疑是否会奏效。

这有一个非常好的堆栈溢出线程,但它是针对 manifest v2.2 的。

谢谢

0 投票
3 回答
1256 浏览

javascript - Chrome 扩展 - 尝试使用清单 v3 从后台脚本中获取()时出现 CORS 错误

当我尝试从 Chrome 扩展程序的后台脚本发出请求时,我收到了 CORS 错误。后台脚本与 webpack 捆绑在一起。

注意:如果我转换manifest.json为版本 2 - 一切正常。但是对于 v3,它给出了

CORS 策略已阻止从源“chrome-extension://exampleid”获取“https://example.com/api/user/login”的访问权限:不存在“Access-Control-Allow-Origin”标头在请求的资源上。如果不透明的响应满足您的需求,请将请求的模式设置为“no-cors”以获取禁用 CORS 的资源。

manifest.json

background.js

0 投票
0 回答
104 浏览

google-chrome - Chrome 权限:System.display

我正在尝试在我的 chrome 扩展中获取显示信息。我非常成功地在具有“system.display”权限的清单版本 2 中获得它。我使用的 API,

我在清单版本 3 中尝试相同,但它给了我错误。

我的清单文件,

请帮助我找出我在哪里犯错。

还有一件事,我在chrome.system.display API的文档中读到了诸如可用性:仅前台之类的内容。如果有人可以解释这究竟意味着什么,那么您与我分享这将是很棒的知识。

谢谢