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

google-chrome-extension - chrome 扩展中的通知 (MV3)

所以情况如下:

  • 我正在尝试从chrome 扩展中的服务人员发送通知
  • 我拥有清单 3 文件中指定的通知 权限
  • 它不起作用,所以我尝试了最简单的方法:创建一个在弹出窗口打开时执行的通知;即使那样也行不通
  • 该图标工作正常,控制台中没有显示错误,但是当弹出窗口打开时,我的 console.log 命令确实显示,所以发生了一些事情

这是我在 service worker 中的 background.js 代码(旁注,我也在 popup.js 文件中的 service worker 之外尝试了这个并且得到了完全相同的结果,它没有显示任何错误并且似乎可以执行):

这是我已经完成的:

我花了很多时间来简化我的代码,并确保其他事情没有错。API 文档似乎没有任何答案,据此判断,我认为我正确地实现了这一点。我什至甚至重置了我的 chrome 设置,因为我担心我只是在抑制通知。

我希望我只是错过了一些简单的事情。我读过一些东西,听起来好像 MV3 中的通知有问题,但我不完全确定,因为其中大部分可能是陈旧的答案。

0 投票
0 回答
108 浏览

javascript - Chrome 扩展 - 通过后端快速服务器进行 oauth 身份验证

我已经构建了一个 Web 应用程序,该应用程序具有一个后端快速服务器,该服务器通过护照处理 oauth 身份验证。

我现在正在尝试构建一个随附的浏览器扩展程序,它将通过快速服务器与 Web 应用程序共享会话。

我有一种方法似乎可行,实际上是在新窗口中打开网络应用程序的 oauth 流。从技术上讲,身份验证是通过 Web 应用程序完成的,但扩展最终能够从服务器获取身份验证状态,因此这“有效”。

};

我不喜欢这个解决方案的地方在于它最小化了扩展。

我尝试使用 chrome.identity.launchWebAuthFlow 执行以下操作并调用我将从 webapp 使用的相同 oauth 端点。

这将打开 oauth 登录页面,但在尝试登录后,我在扩展端收到此错误:

未经检查的 runtime.lastError:无法加载授权页面。

在我的服务器上,我得到了一个

TokenError:未经授权

以下是我的特快路线和护照策略:

注意:当使用 windows.create 方法时,我会为我的网络应用程序使用谷歌客户端 ID。对于 launchWebAuthFlow 方法,我使用我的 google 扩展客户端 ID(Web 应用程序和扩展都在同一个 google 项目下)。

我一直试图弄清楚这一点,但一直无法弄清楚。我想要做的甚至可能吗?我有使用谷歌的 getAuthToken 吗?

编辑:

如果我将我的网络应用程序客户端 ID 用于护照策略,则 oauth 流程可以正常工作,并且我的 /auth/google-ext/callback 正在接收req.user. 但是,会话似乎没有被保存在任何地方,即req.user以空/未定义的形式检索结果的后续请求。

这是我的服务器index.js

0 投票
1 回答
615 浏览

javascript - 在 Chrome 扩展程序中获取选定的文本

我正在尝试创建一个 Chrome 扩展,允许用户在单击按钮后获取网页的选定文本,然后在控制台中记录此文本。

但我的代码只有在从 HTML 弹出窗口中选择文本时才有效。如果我从随机网页中选择文本,然后单击“保存”按钮,则会在控制台中打印一个空白行。

我想我的content.js文件在显示扩展弹出窗口时无法与网页交互,但我不知道如何解决。我知道还有其他类似的问题,但我没有尝试过(例如在不同的 .js 文件之间传递消息)。

这是我的文件:

清单.json:

索引.html:

内容.js:

0 投票
0 回答
171 浏览

google-chrome-extension - 有没有办法通过使用 declarativeNetRequest 的重定向来允许请求?

我正在尝试使用从清单 V2 到 V3 的 webRequest API 迁移阻止请求并仅按需加载它们的 chrome 扩展。当我想允许具有特定 url 的单个请求通过时,我只需添加一个具有更高优先级的会话范围规则来允许它。但这不适用于带有重定向的请求,因为重定向的 url 没有什么不同,并被视为新请求。有没有办法使用 declarativeNetRequest 允许通过所有重定向请求?

例子:

这适用于直接请求,但不适用于具有重定向的请求。有没有办法来解决这个问题?

0 投票
0 回答
108 浏览

content-security-policy - 在不违反 CSP 和拦截标头的情况下包含第三方库作为内容脚本

我目前正在编写一个支持 Manifest-v2 和 v3 的浏览器扩展,为了方便起见,它需要 CashJS 库(JQuery 的轻量级版本)。我希望我的内容脚本content/index.js能够使用此库content/cash.min.js,但我收到 CSP 违规声明:

这是我的 manifest.json(适用于 v3):

我尝试过content_security_policy以各种方式使用(哈希和启用unsafe-inline),但 Chrome 拒绝它:

Invalid value for 'content_security_policy'.尝试加载扩展时出现错误。我已阅读Mozilla 的此页面以及讨论此问题的其他帖子,但尚未找到适合我需要的解决方案。

Chrome 文档中的这篇文章提到了使用他们的sandboxing功能,但它似乎只适用于网页,而不是脚本本身。

我真的不想截取此处建议的标头。

任何帮助将非常感激!

0 投票
0 回答
123 浏览

google-chrome-extension - 在后台服务人员中加载本地化文本/获取浏览器语言 - Chrome 扩展清单 v3

我目前正在将我的 Chrome 扩展程序从清单 v2 迁移到 v3。我的扩展在后台创建上下文菜单选项。

该扩展对一系列事件做出反应,例如在添加的选项卡上、在创建的窗口上

等在回调函数中,扩展尝试创建/刷新使用创建的上下文菜单选项chrome.contextMenus

到目前为止,一切都很好。现在,当在清单的第 2 版中使用后台脚本时,我可以chrome.i18n.getMessage(...)用来获取本地化文本,但是在我转移到后台服务人员之后,我不再可以使用这个 API,因为它只是前台

这让我想到了我的问题:

  1. 如何从后台服务人员获取本地化文本?

  2. 我至少可以找出messages.json手动加载正确的当前语言设置是什么吗?

window.navigator.language也不可用。

  1. 如果那不是一条路,那么您能想到其他选择吗?

任何帮助表示赞赏。我还是 Chrome 扩展的新手,我想避免任何 hacky 解决方案。也许有正确的方法来做到这一点。

0 投票
0 回答
12 浏览

google-chrome-extension - 2021 年在 chrome 扩展中模板化有哪些不错的选择

探索为内容脚本创建模板和 DOM 操作的选项。我们是否仅限于使用原生 js 进行 dom 操作,还是有更好的选择。

考虑使用将包装反应组件的 Web 组件,但看起来 Web 组件在没有 polyfill 的情况下不可用。还在考虑这个选项

已经使用 webpack 设置了环境。很想听听我没有考虑过的任何其他选择

0 投票
1 回答
344 浏览

google-chrome-extension - javascript点击功能导致内容安全策略错误

我的 chrome 扩展内容脚本之一是在这样的元素上执行点击功能

var currencySelectorLink = document.getElementById('switcher-info'); currencySelectorLink.click();

但是最后一行导致以下错误:

拒绝运行 JavaScript URL,因为它违反了以下内容安全策略指令:“script-src 'self'”。启用内联执行需要“unsafe-inline”关键字、哈希(“sha256-...”)或随机数(“nonce-...”)。请注意,哈希不适用于事件处理程序、样式属性和 javascript: 导航,除非存在 'unsafe-hashes' 关键字。

我现在花了几个小时试图解决这个问题,也许你们中的一些人会知道如何解决它。我绝对要触发这个点击事件,没有办法解决

编辑:经过更多调查后,我发现它发生了,因为链接具有带内联 javascript 的 href 属性:

有人知道如何绕过它吗?如果我这样做:

然后错误消失了,但它破坏了网站功能,并且不完全预期的行为来自此点击事件

0 投票
1 回答
213 浏览

google-chrome-extension - 将选项卡导航到 URL 并在其中执行脚本

我正在努力让这个简单的 f-ty 工作......我的情况是:

  1. 获取当前网址
  2. 修改它
  3. 导航/重定向到它
  4. 在那里执行自定义 JS 代码

我遇到的最大问题是 4)

清单.json

背景.js

页面被重定向但我的 js 函数没有执行!你知道为什么以及如何解决它吗?

PS:这是我第一次创建我的 chrome 扩展,也许我做错了什么......

0 投票
0 回答
50 浏览

google-chrome-extension - Chrome 扩展程序 - 在后台使用正文数据监控网络流量

我想在任何带有响应正文数据的页面上监控来自 background.js(或内容脚本)的网络流量。
我之前尝试过这些:
  chrome.devtools.network,它允许我们仅在 devtool 打开时监控网络。(我需要在后台执行此操作,或者可能是注入脚本)

  chrome.webRequest 它为我们提供了关于请求的有限信息,而没有它们的主体。

我还检查了这个
Chrome 扩展 - 如何获取 HTTP 响应正文?

出于安全性或其他原因,是否不可能,或者是否可以通过响应主体以某种方式观察网络流量?