问题标签 [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 回答
66 浏览

javascript - 如何使用 chrome 扩展更改网站文本?

我正在尝试更改网站上的一些文本。当我尝试使用 innerText 时,没有任何变化。这是我要更改的文本的 HTML:<div class="styles__tokenBalanceText___2eYY7-camelCase">742</div>

这是我的清单:

这是我的 Content.js:

0 投票
1 回答
106 浏览

chrome-extension-manifest-v3 - 如何在 MV3 Chrome 扩展弹出图标中添加上下文菜单?

我想在我的弹出图标内容菜单上添加分享到 FB/Twitter 和 Facebook 页面链接。

在 MV2 扩展中这样做非常方便。

但是我如何在 MV3 中做到这一点?

在此处输入图像描述

0 投票
1 回答
574 浏览

javascript - 使用 Chrome 扩展清单 V3,如何执行代码字符串?

我正在使用 Manifest V3 编写一个 Chrome 扩展,并试图找到一种动态执行代码字符串的方法(类似于用户脚本)。有执行代码字符串的方法(eval、setTimeout、new Function等);但是,它们似乎在 Manifest V3 中被禁止。虽然 setTimeout 仍然有效,但 Chrome 团队表示,当提交到 Chrome 网上应用店时,将不再接受执行代码字符串。提交时,代码需要成为扩展的一部分。在下面的“远程托管代码”下的链接中也有说明:

https://developer.chrome.com/docs/extensions/mv3/intro/mv3-migration/

看到一些关于这个问题的论坛帖子和 crbugs,但它们似乎都已经过时,没有明确的答案。与上面的链接一样,较早的帖子声明将不再可能执行代码字符串。较新但仍然过时(2020 年)的帖子指出,Manifest V3 将有一些用例(例如 TamperMonkey),其中用户脚本可以动态注册,但只有在给用户一个提示之后。我看到的让扩展动态运行脚本的唯一两种方法是“chrome.scripting.registerContentScripts”和“chrome.scripting.executeScript”。这两种方法都从文件执行代码,而不是字符串。旧方法“chrome.tabs.executeScript”用于允许执行代码字符串,但现在已弃用。

Chrome网上应用店是否允许使用某种方法或对此问题进行任何更新?

编辑1:

如果从文件动态执行脚本是唯一的方法:

  1. Chrome 扩展程序是否允许将文件保存在扩展程序目录中?或者它会使扩展无效(由于某些安全策略,扩展会自动卸载)?
  2. 如果允许扩展将文件保存在扩展目录之外,那么当前的两种方法(上面提到的)可以执行这些文件吗?

编辑2:

重新措辞 2(在编辑 1 下)。

编辑3:

感谢所有回复的人。似乎还没有解决此问题的方法。我没有听到或读过关于如何(如果可能的话)脚本代码字符串可以动态执行(Chrome 网上应用店不会拒绝)的公开公告。

自 2021 年 11 月 13 日起,您可以执行以下操作之一:

  • 根据您的用例,从@wOxxOm 或@hashed 番茄那里获得建议。
  • 降级到 Manifest V2 并使用“chrome.tabs.executeScript”。这只是临时修复,因为 Manifest V2 将在指定时间后停止工作。
  • 不确定在向 CWS 提交扩展时这是否会被拒绝。允许用户通过扩展保存脚本。在我写这篇文章的时候,我不知道有一种方法可以保存文件,使保存的文件能够通过其他两种方法“chrome.scripting.registerContentScripts”和“chrome.scripting”之一执行.executeScript”。需要进行测试,否则,我会在这里说明。

感谢大家。

0 投票
1 回答
167 浏览

google-chrome-extension - Chrome 扩展 - declarativeNetRequest 删除 requestHeader “origin” 不起作用

我正在尝试使用 declarativeNetRequest 删除 requestHeader 'origin'。它不起作用,因为仍在通过 SharePoint 休息 api 调用发送源。我们如何确保规则是否被触发?我们如何解决问题?

这是我的 manifest.json 和 rules.json

规则.json

0 投票
0 回答
24 浏览

reactjs - 铬扩展:chrome.scripting.addListener 不工作

我正在尝试在我的项目中运行 chrome.scripting.executeScript API。但是,它根本不起作用。

这是我的背景文件:

当然,我在清单文件中添加了权限和主机权限。

怎么了?

0 投票
0 回答
61 浏览

google-chrome-extension - fetch request in chrome extension stuck in pending state with manifest V3

We have a chrome extension that's been working fine with manifest V2, which we've recently tried to migrate to manifest v3 (https://developer.chrome.com/docs/extensions/mv3/intro/) We got everything working (as in, it runs, and almost everything works). However, we have a single issue, where we're listening for a Chrome event (printerProvider.onPrintRequested(https://developer.chrome.com/docs/extensions/reference/printerProvider/#event-onPrintRequested) to be more exact) performs a few Ajax requests,and then tries to upload a document, however, the upload request will sometimes, seemingly randomly, stay in pending state, and the result callback will never trigger. The minimum example I've been able to reproduce the issue on, is the below.

This will work some of the time (something like 50/50 success) and sometimes the fetch request will just stay pending and the code never completes, so I'm pretty sure it must be something I'm misunderstanding wrt. the way promises work, or the fact that Manifest V3 runs everything in a webworker instead of in a background page as V2 did.

0 投票
0 回答
27 浏览

reactjs - CHROME 扩展:消息传递 - chrome.runtime.sendMessage 或 onMessage 不起作用

我正在研究谷歌扩展。我正在尝试处理我的 popup.tsx 和 background.ts 之间的消息传递

在从我的 background.ts 发送消息之前,我打印数据。数据存在。但是,在我的 popup.tsx chrome.runtime.onMessage 中没有触发。我不明白哪个功能不起作用以及问题出在哪里。我检查了很多示例,但结果仍然相同。问题是什么?我正在添加我的消息传递代码..

这是我的 background.ts runtime.sendMessage 函数。该函数位于另一个名为“collectData”的函数中。当我打开新标签或更新标签时,此功能会触发并起作用。每次这个数据工作稳定。我可以看到每一页的数据。

然后,我尝试使用 runtime.onMessage 在我的 popup.tsx 中接收数据。当我重置扩展时,它有时只工作一次,然后 onMessage 函数根本不起作用:

每次,我都会更改请求数据状态。如果它发生变化,我想用 useEffect 更新弹出窗口。

结果,首先,主要问题是消息传递。为什么它不工作?

0 投票
0 回答
52 浏览

javascript - 如何在 V3 的 chrome 扩展中将用户重定向到新页面/弹出窗口

我的 chrome 扩展中有 2 个 html 文件。一个是 login.html,另一个是 popup.html 当用户输入正确的凭据并按下登录按钮时,我想将用户重定向到 popup.html 文件。

我已经找到了该操作的代码并在 login.js 中编写了此代码

当我切换选项卡并再次单击扩展时,上面的代码有效,即它不会立即发生。

我正在寻找一种功能,一旦用户单击登录按钮,用户就必须立即重定向到另一个页面。

0 投票
1 回答
72 浏览

javascript - 地理位置权限不适用于 Manifest 版本 3 Chrome 扩展

我想开发一个与 Manifest 版本 3 兼容的 Chrome 扩展程序,但我在获取当前用户的地理位置坐标时遇到了问题,该坐标适用于 Manifest 版本 2,但对于 Manifest 版本 3,它会抛出navigator.geolocation未定义的问题。

这是我的 manifest.json 和 background.js 文件:

清单.json:

背景.js:

0 投票
0 回答
34 浏览

javascript - Chrome 扩展程序 - 消息传递问题

我已经对 Google Chrome Extensions APIs 感到头疼了。我有清单 v3。这是我的代码:

背景.js

内容.js

这就是控制台中的内容

所以我的问题是传sendRequst回后台。