问题标签 [web-extension]

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 回答
190 浏览

javascript - 每次更改 crom 标签时,Chrome 扩展 postMessage 从后台脚本到内容脚本

再会。

我在将消息从后台脚本发送到内容脚本时遇到问题。每次用户在浏览器选项卡之间切换时,我都会尝试发送消息。

我得到这个错误。 Unchecked runtime.lastError: Could not establish connection. Receiving end does not exist.

下面是扩展程序本身的代码。

背景脚本:

内容脚本:

显现:

请告诉我我做错了什么?如何修复或跟踪此错误?

0 投票
0 回答
52 浏览

google-chrome-extension - documentUrlPatterns 不尊重路径名

在创建上下文菜单项时,我在 Safari 上尝试documentUrlPatterns与我的 Web 扩展一起使用时遇到了一些问题。

例子:

browser.contextMenus.create({id: "12354", title: "Test01",documentUrlPatterns:["https://www.linkedin.com/feed/"]});

documentUrlPatterns任何具有显式pathname(如上所示)的网站上使用时,不会匹配文档 url 创建上下文菜单项。

使用上面的代码,我希望看到一个https://www.linkedin.com/feed/带有 title的上下文菜单项Test01,但什么也没有出现。如前所述,似乎任何明确的路径名,例如/feed//someother/page/任何网站上都存在此问题。

我对匹配工作原理的理解使我认为显式路径名在模式中是有效的,但也许我遗漏了一些东西。

如果我删除最后一个斜杠/,上下文菜单项似乎按预期创建。

documentUrlPatterns我的预期结果是否有效,或者我所缺少的工作方式有什么独特之处?

上面的代码似乎在 Chrome 和 Firefox 中按预期工作。我想这可能是一个与 Apple Safari 相关的错误,但在报告它之前,我很好奇是否有我遗漏的东西。

0 投票
1 回答
207 浏览

google-chrome-extension - 适用于 Chrome、Firefox、Safari 标准参考和工具的 Web 扩展(浏览器插件)(2021 年)

据我所知,我们今天使用的浏览器插件的正确名称实际上称为“Web 扩展”。在每个浏览器都有自己的 API 之前,Chrome 和 Firefox 都同意了,现在是 Safari(2021 年 macOS 11 的 v14)见

但是,我找不到在所有 3 种主要浏览器中都可以使用的确切标准参考和示例。

或许我们可以深入挖掘很多相关链接

但是是否有工具/库可以跟踪兼容性并确保


请确认要使用哪些术语,指出将强制兼容性的规范和工具。

0 投票
0 回答
47 浏览

xcode - 从 git repo 转换 safari web 扩展不成功

我正在尝试将 chrome web 扩展转换为 safari 扩展。我的环境是带有 XCode 12.5.1 的 Big Sur VM。

当我克隆扩展程序的 git repo ( https://github.com/toobeeh/skribbltypo ) 并尝试使用“xcrun safari-web-extension-converter skribbltypo” (从父文件夹) 转换它时,它只会吐出错误“无法在 file:///... 解析清单”(路径正确指向清单所在的 repo 文件夹)。

网络研究表明,问题可能是文件夹是 zip(我尝试了多种方法将 repo 下载为 zip、解压缩、解压缩签名的 crx ......)或路径不正确(我还拖了文件夹到终端,并且 file:/// 路径是正确的),但没有成功。

这是否与我正在运行的虚拟机有关?我不敢相信我在很多方面都做错了。如果有人可以尝试这个过程,我会很高兴。提前致谢。

0 投票
1 回答
51 浏览

ios - iOS Safari Web 扩展 - 当我们添加新的所需权限时,当前用户会发生什么

我正在开发 iOS Safari Web 扩展,我想添加新的必需权限。

但是,我找不到任何地方解释当前用户会发生什么。

  • 扩展会继续像以前一样工作吗?

  • 在用户再次激活之前,扩展程序是否会被禁用?

从我们的测试来看,似乎一切都按预期工作。

我们要添加 nativeMessaging 权限。

有谁知道Apple是否在任何地方都有这些信息?或者会发生什么?

0 投票
0 回答
16 浏览

macos - 我可以直接从 Safari Web Extension 的后台页面向 Native App 发送消息吗?

我正在开发一个 Safari 网络扩展。我需要将数据从 Web Extension 的后台页面发送到本机应用程序。本机应用程序获取此消息并使用 USB 密钥对其进行签名以生成签名值。然后本机应用程序将签名值发送回后台页面。 向 Web 扩展的本机应用程序发送消息

首先,我在 background.js 中创建一个端口

在该端口上添加一个监听器以接收来自 Native App 的消息,如下:

在我的本机应用程序中,我可以使用以下代码向后台页面发送消息:

但是如何从后台页面向 Native App 发送消息?在“Messaging a Web Extension's Native App”演示中,消息通过以下代码发送:

但是没有代码显示如何在本机应用程序中接收此消息。

在原生应用程序中,如何从后台页面接收“postMessage”发送的消息?如果能提供object-C的demo,将不胜感激。谢谢!

0 投票
0 回答
44 浏览

firefox - 如何为需要 cookie/本地存储的 Firefox Web 扩展指定多帐户容器?

情况

我有一个可在基于 Chromium 的浏览器和 Firefox 中运行的 Web 扩展。该扩展依赖于来自特定网站的身份验证。为此,它会访问该特定网站的 cookie 或本地存储。

在 Firefox 中,当我使用多帐户容器时,该扩展程序不再工作,因为它无法读取我登录的特定网站的 cookie/本地存储。这可能是因为为扩展分配了另一个技术或匿名容器,该容器与网站分配的不同。

问题

  1. 作为最终用户,我可以在没有源代码的情况下更改 Web 扩展的分配容器吗?
  2. 如果没有,Web 扩展的开发人员是否可以包括与 Multi-Account-Containers 的兼容性以及如何实现?
0 投票
0 回答
15 浏览

javascript - Web 扩展的 Service Worker 的生命周期和范围是多少

我了解服务工作者的 PWA 范围取决于其在 Web 应用程序存储库中的位置,并且它控制该范围内的页面。但是,Web 扩展中服务工作者的范围是什么,它控制哪些页面?这是如何规定的?

使用清单版本 2 创建扩展时,您可以使用后台脚本,例如,可以在任何网页上生成上下文菜单,因此我理解在这种情况下,范围是任何网页。所以,我的问题是:使用清单版本 3 的 Web 扩展的服务工作者的范围如何?

0 投票
0 回答
18 浏览

google-chrome-extension - (Chrome 扩展程序)创建新标签时如何专注于多功能框?

我正在制作一个 chrome 扩展,每次打开新标签时都会将您重定向到特定的 url。我正在使用的代码在下面。然而,每当我打开一个新标签时,它确实可以将我重定向到 url,但它并没有突出显示多功能框,这真的很烦人!这意味着做我的搜索真的很令人沮丧,因为这个地址栏没有突出显示。我知道 Control + L 是一个选项,但我们都习惯于不这样做。

当我打开一个新标签时,我可以看到多功能框被突出显示,但之后它就消失了。有没有办法让这个地址栏在重定向之前、期间和之后突出显示?

我知道这是可能的,因为这个扩展,Tab for a Cause将您重定向到他们的自定义 url ,同时仍然保持 onmibox 突出显示

先感谢您!

我正在使用清单版本 2。

manifest.json

my.html

code.js

0 投票
0 回答
21 浏览

javascript - 如何使用一些 href URL 和搜索 cookie/参数重定向到一个新选项卡,它可以提供一些值,如 ID 或帐号?

**示例:**构建一个扩展程序,当单击按钮或链接到 URL 时重定向到新选项卡,并带有一些搜索 cookie 或参数,这些 cookie 或参数可以在 URL 栏中提供值,如 id 或帐号。

像这样的东西:1)https://example.com/index?id=1 2)https://example.com/index?account_no=2220