问题标签 [safari-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 投票
6 回答
28991 浏览

google-chrome-extension - 将 Google Chrome 扩展程序转换为 Firefox 或 Safari 扩展程序

是否可以将 Google Chrome 扩展程序转换为 Firefox 或 Safari 浏览器扩展程序?

0 投票
1 回答
84 浏览

javascript - 如何检测是否正在使用任何网络扩展

如果最终用户完全启用了任何网络扩展,我想使用 vanilla javascript 进行检测。有没有办法查询启用浏览器的 webextensions 列表?希望除了检查页面从未打算加载的注入脚本、css 和图像标签之外,还有另一种方法。

由于没有输入足够的安全原因,此问题已关闭。我可以理解为什么这是一个问题,但这不是解决技术问题的理由。无论如何,以下是想要从网站中删除 Web 扩展的安全原因:

网络扩展允许人们打破 CSP https://chrome.google.com/webstore/detail/disable-content-security/ieelmcmcagommlceebfedjlakkhpden

抓取您的业务数据,安装密钥记录器以获取密码和其他信息,安装图像跟踪信标以跟踪私人和敏感的最终用户信息——所有这些都是您的普通最终用户所不知道的。

此外,故意或自制的网络扩展程序可以自动抓取您的业务数据,尝试欺骗验证码登录和其他恶意目的。

0 投票
1 回答
242 浏览

google-chrome-extension - Safari中的选项页面onMessage未收到sendMessage

我已经移植了 Chrome/FireFox 扩展。不起作用的一件事是从后台接收消息到选项页面(safari-web-extension:///page.html)

我没有从承诺中收到错误消息或任何详细信息。知道这哪里出错了吗?

背景:

选项页面:

0 投票
0 回答
80 浏览

google-chrome-extension - Safari Web 扩展使用 Google 登录

Safari 现在可以使用网络扩展。

但是browser.identityorchrome.identity不被支持。所以launchWebAuthFlow不工作。

在他们刚刚说的文档中。

身份不支持。在新选项卡中启动 OAuth 流程。

我该怎么做?有什么例子吗?

0 投票
1 回答
104 浏览

swift - Safari Web 扩展程序非常慢

所以我创建了一个 Safari Web 扩展。我没有更改任何代码,而是运行了 Xcode 提供的模板代码。我单击工具栏项,然后弹出一个空白弹出窗口。加载“Hello World!”大约需要 5 秒钟。屏幕(这是 Xcode 提供的模板的一部分的屏幕)。之后,每当我再次单击工具栏项目时,“Hello World!” 屏幕立即弹出,但 Safari 直到大约 5 秒后才响应。

这是Apple的错误还是我错过了什么?我正在使用 Xcode 12.2 和 Safari 14.0.1

注意:这不会发生在 Safari 应用程序扩展上

0 投票
1 回答
150 浏览

safari-web-extension - (新的)Safari Web 扩展中的 OAuth 重定向 URL

我正在将我的 chrome 扩展程序移植到 Safari。该扩展程序需要用户登录,我使用 OAuth 代码流,它需要重定向 url。

在 Chrome 中,我可以将chrome.runtime.getURL('/mypage.html')其用作重定向 url,因为在 chrome 中,扩展 ID 永远不会更改。

然而,在 Safari 中,扩展 ID 在每个 (xcode) 构建中都会不断变化。这类似于 Firefox 的行为,但在 Firefox 中,我可以使用browser.identity.getRedirectURL(). 虽然无法访问,但它保证保持不变。

就像在 Safari 中一样,没有browser.identity并且safari-web-extension://<extension-id>被 Safari 阻止,我可以使用什么 url 作为重定向 URL?

0 投票
1 回答
403 浏览

swift - 在范围内找不到“SFExtensionMessageKey”

我正在尝试构建本机消息传递测试项目,但它一直无法使用Cannot find 'SFExtensionMessageKey' in scope. 我该如何解决?

错误来自这段代码:

SafariWebExtensionHandler.swift

它失败了,因为它在范围内找不到SFExtensionMessageKey,但是当我查找它时,我发现它应该包含在Safari Services中。

当我直接在 Xcode 中检查 Safari 服务文件时,我没有看到任何提及SFExtensionMessageKey——这可能只是我的困惑。但似乎这被重命名了,也许?

另一个想法是,我需要将 SafariServices 框架添加到各种应用程序目标的构建阶段(在“将二进制文件与库链接”部分下)。这也没有解决问题。

我在 Xcode 12.1 和 Swift 5 上。

0 投票
2 回答
290 浏览

javascript - NSExtensionRequestHandling 不处理本机消息

我正在尝试为我的本机应用程序创建一个 Safari Web 扩展。我想要一个带有按钮的弹出窗口,单击该按钮将与我的本机应用程序进行通信。在我开始这部分之前,我在发送本机消息并在beginRequest符合NSExtensionRequestHandling协议的类的函数中处理它时遇到问题。我没有做太多,因为我依赖于 Xcode 生成的代码。

manifest.json我添加了nativeMessaging这样的权限:

popup.js其中包含事件侦听器:

当我检查弹出元素时,我可以看到Hello Worldclick消息,但正如我之前提到的 -beginRequest没有被调用。有什么遗漏吗?我还观看了 WWDC20 的Meet Safari Web Extensions 会议,但没有找到答案。

0 投票
1 回答
112 浏览

swift - 将订阅应用内购买添加到 Safari Web 扩展

我已经创建了一个 Safari Web 扩展,现在我想将订阅应用内购买添加到这个应用中。

由于 Safari Web Extension 有两部分:Mac App 和 Extension。

我想问我可以将IAP代码添加到扩展部分吗?因此,可以根据最新的订阅状态以编程方式启用或禁用扩展。

0 投票
0 回答
43 浏览

archive - 以编程方式归档当前从 Safari Web 扩展在 Safari 中打开的页面(Chrome 中 chrome.pageCapture API 的替代方案)

我很想找到一种以编程方式归档当前在 Safari 中打开的网页的方法。在 Chrome 中,它是在 pageCapture API 的帮助下实现的,该 API 使用 MHTML 格式来存档网页。但 Safari 不支持 MHTML 格式。我正在 Safari 中寻找类似的功能