问题标签 [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 投票
1 回答
46 浏览

google-chrome-extension - 谷歌浏览器扩展清单 v3 中的弹出设置在哪里

我正在使用清单 v3 开发 google chrome 扩展,我从这里阅读了清单文档,但发现不包含弹出设置,在清单的 v2 中,我们可以像这样设置弹出窗口:

如何在谷歌浏览器扩展清单 v3 中设置默认弹出页面?

0 投票
0 回答
143 浏览

javascript - 如果将相应的资源注入到文件 URL 页面中,则会忽略“web_accessible_resources”清单键

最近我的 MV3 扩展停止工作(虽然它之前工作)。经过一些研究,我发现注入的脚本/CSS 无法加载,尽管它们已列在web_accessible_resources清单键中。这些必要的资源由我的内容脚本通过document.createElement. 值得注意的是,只有在将这些资源注入到file://打开了本地文件( )的页面中时,才会出现此问题;页面没有问题http://

我收到net::ERR_BLOCKED_BY_CLIENT所有注入资源的错误: 被阻止的错误消息

下面是我清单中的“web_accessible_resources”键:

AFAIU 是正确的,否则我会收到另一条这样的错误消息: 在此处输入图像描述

扩展名的“允许访问文件 URLS”复选框被选中: 在此处输入图像描述

我没有安装类似 adblock 的扩展。我也尝试清除浏览器缓存,但没有运气。

那么它是一个错误还是一个功能?当前的 Chrome 开发文档没有提到这种行为。

我制作了一个重现问题的MCVE

0 投票
1 回答
30 浏览

google-chrome-extension - 是否有任何简单的方法来更改选项卡、组、chrome 的窗口以进行扩展?

是否有任何简单的方法来更改选项卡、组、chrome 的窗口以进行扩展?

当这些行为之一:

创建或关闭或移动选项卡或更改选项卡的 url 或从选项卡组中添加或删除

或创建或关闭或释放选项卡组或更改选项卡组的颜色或标题或移动选项卡组

我知道我可以通过 chrome.tabs.oncreate & chorme.tabs.onupdate 等来一一判断。

但我想知道天气有没有一个动作可以一次判断所有的变化?

谢谢你

0 投票
1 回答
97 浏览

javascript - 在 chrome 扩展中使用内容脚本插入 DOM 元素

我正在尝试为 twitter 做一个扩展,我被困在本节中插入 div 块(有点像 btn) 我要添加保存 btn 的 Twitter 栏

清单.json

内容.js

我研究了一些像MutationObserver这样的东西, 但在这里我得到了错误,因为参数不是节点

Twitter在向下滚动时删除以前的帖子添加新帖子,并在滚动回顶部时添加以前的帖子删除新帖子

0 投票
1 回答
335 浏览

google-chrome - 如何在 Google Chrome 扩展程序中为 webRequest 事件 onBeforeRequest 执行脚本

按照 Chrome Extension Manifest V3 规则,我想创建一个扩展程序,它监听特定的网络请求,首先,只需将它们记录到当前打开的选项卡的控制台(稍后我想在页面中添加自定义脚本和样式当前选项卡)。

为此,我尝试使用 chrome.scripting.executeScript。

当我从https://github.com/GoogleChrome/chrome-extensions-samples/blob/main/examples/page-redder/manifest.json实现示例时,它的工作方式与 chrome.action.onClicked 侦听器的预期一样。

一旦我尝试在 chrome.webRequest.onBeforeRequest 侦听器中执行脚本,就会弹出此错误:

事件处理程序中的错误:TypeError:调用 scripting.executeScript 时出错(scripting.ScriptInjection 注入,可选函数回调):参数“注入”错误:属性“目标”错误:缺少必需的属性“tabId”。在 chrome.webRequest.onBeforeRequest.addListener.urls ()

缺少必需的属性 tabId?我认为它与生命周期有关,但我不知道该怎么做。这是我的清单:

这是我的脚本,我只是稍微修改了“redden”示例:

0 投票
0 回答
54 浏览

javascript - Mac 上用于扩展的 Chrome 通知 API 不起作用

这是一个 Chrome 扩展。

以下文档已考虑在内: Chrome Notification API

以下 3 个文件为例的问题:

显现:

内容.js

bg_page.js

以上适用于 Windows 上的 Chrome,但不适用于 95 版 chrome(可能还有其他版本)的 Mac。

所以我的问题是:

为什么这在装有新版 Chrome 的 Mac 上不起作用?

在此测试用例中,每次访问站点时,扩展程序都应显示桌面通知。

注意:已在 3 台单独的 Mac 上进行了测试。

它也可能不适用于旧版本,尚未经过测试,但我只关注较新版本/最新版本的 Chrome。

以下内容已经过测试和讨论:

  • Chrome 和 Mac 之间的权限问题 - 已在 3 台不同的 Mac 上进行了测试,结果均相同,但无法正常工作。
  • Chrome 和站点之间的权限问题 - 但由于它应该适用于上述测试代码中的所有站点,因此不应该是这种情况。也经过测试确认,问题依旧存在。

所以我没有想法。

0 投票
0 回答
148 浏览

google-chrome - 使用 declarativeNetRequest 进行动态重定向

我想使用 declarativeNetRequest 将域中的所有 URL 重定向到以发起方 URL 作为编码参数的 URL,例如

就像是...

这可能吗?如果没有,还有其他方法可以实现这一目标吗?

0 投票
1 回答
95 浏览

javascript - Chrome 扩展开发:chrome.storage.local vs Indexeddb

我目前正在开发一个数字钱包应用程序作为 chrome 扩展,并试图找出我应该使用什么作为我的持久存储层:chrome.storage.localindexedDb。我研究过其他类似的开源项目,似乎大多数使用前者而不是后者。

我想了解使用其中一个是否有任何优势。目前,我倾向于使用chrome.storage.local的原因是:

  • 在官方 chrome 扩展文档中建议作为存储 API
  • 它在应用程序重新启动时是持久的。(Indexeddb 似乎也是,但我没有发现它在任何文档中被明确提及为持久存储,所以我不确定)
  • 两者都是异步的
  • 简单的 API(与 indexeddb 不同)

我知道我的用例和数据形状可能是一个重要因素:就我的应用而言

  • 我正在存储简单的 JSON 类型(字符串、数字、布尔值、对象、数组)
  • 对象数组可以任意增长,例如存储地址列表或交易历史。(这确实是让我认为 IndexedDb 是否会提供任何优势的主要原因)

基于上述情况,是否有任何理由可以比另一个更好地为我的应用程序提供服务?还有什么我应该考虑的吗?提前致谢!

0 投票
1 回答
71 浏览

google-chrome-extension - 从 chrome 扩展打开 chrome:// UI 页面时不允许加载本地资源

我有一个 MV2 Chrome 扩展,在弹出页面上我添加了一个“快捷方式”链接,以便用户可以chrome://extensions/shortcuts通过单击它来访问。

但是,升级到 MV3 后,链接不起作用。

在此处输入图像描述

我应该简单地删除此功能吗?

0 投票
1 回答
68 浏览

javascript - 如何执行针对另一个扩展的脚本?

在 Chrome 扩展中,有什么方法可以将脚本执行到另一个打开的扩展中?每当打开不同的扩展程序时,我只想单击特定按钮。

我尝试使用chrome 脚本 API

起初我得到了错误:

启用chrome:// URLs标志 ( chrome://flags/#extensions-on-chrome-urls) 上的扩展后,我现在得到:

这是我的清单权限,应该允许所有网址:

我也尝试过*://*/*chrome-extensions://*/*但没有成功。

相关问题:thisthis

有什么办法吗?或者有没有其他方法可以自动单击另一个正在运行的扩展程序中的按钮?

谢谢!