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

safari-app-extension - 如何在 Safari App Extension 中识别选项卡(或获取其 ID)?

我正在开发一个 Safari 应用程序扩展,我想识别打开的选项卡。我发现没有 id 或没有办法做到这一点。

Chrome 有一个很棒的 AP​​I 可以做到这一点:https ://developer.chrome.com/extensions/tabs 。如何使用 Safari 应用程序扩展(在 Swift 中)做到这一点?

Safari 选项卡 API 很差,不包含 ID(https://developer.apple.com/documentation/safariservices/sfsafaritab

0 投票
1 回答
66 浏览

macos - Safari 应用程序扩展:更改首选项窗格中的 FROM 字段

你知道我可以在 safari 应用程序扩展项目中在哪里更改此字段吗?

在此处输入图像描述

(我不是在写 1password 扩展名,这只是一个示例图像)

根据我的发现,它看起来像名字是name of containing app. 但我想改变这一点。可能吗?是否可以设置任何 plist.info 键?还是构建设置/项目设置?

以前在画廊扩展中有一个名为DeveloperIdentifier. 但这不起作用。

编辑:

我需要发生这种情况的原因是:

  • 我想要一个以一种方式命名的进程(长文本)

  • 所以我重命名了项目以符合它

  • 然后我意识到扩展名从包含应用程序中取出

非常感谢

0 投票
1 回答
120 浏览

macos - 当我从电子加载它时,如何调试我的 Safari 应用程序扩展?

我有一个电子应用程序,它在 Safari 浏览器中加载一个 Safari 应用程序扩展。当我打开浏览器时,我可以看到我的扩展名列在Safari -> Preferences... -> Extensions. 一旦启用它,我就会看到工具栏图标出现然后消失。当我从 Electron 加载扩展时,有没有办法调试它?

0 投票
1 回答
217 浏览

ios - 向 WKWebView 发送消息会引发错误

我正在使用 WKWebView 在我的 Safari 应用程序扩展的弹出窗口中加载 HTML。我正在尝试使用向此页面发送消息,webView.evaluateJavaScript("myFunction()")但失败并显示错误消息EXC_BREAKPOINT (code=EXC_I386_BPT, subcode=0x0)

我认为该页面最初没有加载到 webView 中,因此会引发此错误,但这里不是这种情况。该页面完全加载,但由于某种原因我收到此错误。这是我的代码。

我尝试在 completionHandler 中检查错误,但它没有去那里。有任何想法吗?

0 投票
1 回答
49 浏览

safari-app-extension - Safari App Extensions 问题,可能是授权

有一些我不明白的地方:我在 macOS 选项卡中创建了一个带有 Safari 扩展应用程序的新项目。我允许在 Safari 中安装未签名的扩展。因此,当我运行扩展程序时,我打开 Safari 首选项并启用扩展程序。但是什么都没有... 栏没有添加按钮(目标中默认有一个),没有触发断点,并且扩展程序似乎没有从网页读取、修改和发送内容的权限。在有关 Safari App Extension 的 WWDC 视频中,它可以直接运行。有人有想法吗?我正在使用 Xcode 11.2.1、Safari 13.0.3 和 macOS 10.15.1。

0 投票
1 回答
480 浏览

swift - 如何调用弹出框以显示在 Safari 应用程序扩展中?

我正在 xcode 中使用 swift 开发一个 safari 应用程序扩展。
在我的SafariExtensionHandler.swift中,我声明了一个函数:

在我的SafariExtensionViewController.swift,

但是,当我单击 Safari 工具栏中的图标时,什么都没有显示,也没有错误。有人帮忙吗?我对 safari 应用程序扩展和苹果系列开发很陌生。

0 投票
1 回答
20 浏览

swift - 无法使用 Calendar.current.dateComponents 检查经过的时间

我想检查从一个时间戳到现在经过了多少秒。我有这个:

但我收到了这个错误:

类型“任何”没有成员“第二”

将代码更改为:

将错误消息更改为:

无法使用类型为“([Calendar.Component],from:Any?,to:Date)”的参数列表调用“dateComponents”

我确实有这个:

这段代码在内部被调用SafariExtensionHandler(如果重要的话)。知道是什么原因造成的吗?

0 投票
1 回答
622 浏览

javascript - 如何在 WKWebview 中监听网页 postMessage 事件?

我让我的 WKWebview 加载这样的网页:

在我的 localhost web 服务 js 文件中,我添加了一个发布消息事件

现在我尝试在我的快速代码中收听这个事件,这可能吗?

0 投票
0 回答
185 浏览

safari-extension - 我是否应该担心 Safari 在构建和运行我的应用程序扩展后大约 30 秒后关闭?

我正在将逻辑从 Chrome/Firefox Web 扩展的后台脚本移植到 Safari 应用扩展。我对 Xcode 很陌生,所以需要一些时间来学习如何解释和面对我遇到的问题。

我已经启动并运行了一个测试项目,我的内容脚本已成功注入 Safari,并且我更新了消息传递逻辑以说明 Safari App Extensions 中使用的不同 API。在 Swift 和 Javascript 之间来回发送消息是有效的。我正准备开始将 Javascript 逻辑迁移到 Swift,但是在我将方案切换到我的应用程序扩展以使用 Xcode 的控制台后,开始出现错误,并且 Safari 现在在我运行项目大约 30 秒后关闭,如果我在浏览器中什么都不做。如果我单击扩展的工具栏项或设置一个计时器来向 Safari 主体类发送消息,浏览器将保持打开几分钟,然后最终关闭。

通过大量搜索,我只找到了一些可能与我正在经历的事情相关的线程,所以我不知道从这里去哪里。StackOverflow 上的一篇文章提到“如果 Xcode 调试器没有收到来自内容脚本的任何事件,它倾向于终止扩展进程”(对于 hello world 项目,safari 应用程序扩展在几秒钟后崩溃),但我不是确定这是否是我这边发生的事情。

让这更令人困惑的一件事是我看到最多的错误消息是:“Safari[2803:95905] [Process] kill() 返回了意外错误 1。” 这很令人困惑,因为我在网上发现了很多帖子提到这是 WKWebViews 的一个已知错误,但这些帖子都没有提到 Safari 应用程序扩展。看起来大多数遇到该错误的开发人员都在为 iOS 应用程序编写代码。

是否有其他人遇到此错误消息和其他错误消息,这些错误消息似乎正在杀死他们的 Safari 应用程序扩展进程,从而关闭,甚至可能崩溃,运行他们的 Xcode 项目后创建的 Safari 实例?如果是这样,有没有找到解决问题的方法以及解决方案是什么?我尝试使用全新的 Safari App Extension 项目从头开始,并且出现了相同的错误。这都是正常的行为吗??

这是我每次 Safari 关闭/崩溃时看到的控制台日志的一部分(目前不确定是哪个)。有时信息更多,有时信息更少,但显示的错误大多始终相同:

控制台中的最后一行(上面的日志片段中未显示)始终显示“程序以退出代码结束:0”。这也让我感到困惑,因为我相信这告诉我扩展程序已关闭而没有任何错误。对于该行上方的所有错误消息,我不确定如何解释似乎是一个很大的差异。

任何人都可以提供的任何帮助将不胜感激!

0 投票
1 回答
97 浏览

javascript - 为 Safari 应用程序扩展设置全局设置的最佳方法是什么?

正如这个官方文档所说,我输入safari.extension.settings.test = "test"了我注入的脚本,它没有工作并出现错误:

而且我注意到这个设置api可能已经贬值了?苹果论坛

那么现在通过注入的脚本或其他地方读取/写入全局设置的最佳方法是什么?