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

swift - 登录成功后将电子邮件保存到 Safari 本地存储

我正在尝试使用 swift safari 服务开发 safari 扩展。该项目是从 mac os 和 safari 扩展创建的。我是 javascript 开发人员,但开发 safari 扩展需要使用 swift,但我不知道如何将数据保存在 safari 本地存储中。我查看了以下文档,但无法从中受益

https://developer.apple.com/documentation/safariservices/safari_app_extensions

这是代码

不:我没有使用 IOS。我正在使用 safariservices。

0 投票
1 回答
1119 浏览

swift - 如何在运行时更改 Safari 应用程序扩展中的工具栏图标?

我在文档中找到了这个。

https://developer.apple.com/documentation/safariservices/sfsafaritoolbaritem

这使我能够使用toolbarItemClicked函数中的window变量来获取对工具栏项的引用,就像这样。

一旦我引用了工具栏项,我就可以运行此代码并据推测更改图标的图像。

但是,这不起作用。没有可见的错误,但由于某种原因,图标不显示新图像。

0 投票
2 回答
696 浏览

safari - 如何在 Safari 应用程序扩展中收听“beforeNavigate”事件

我正在开发一个 Safari 应用程序扩展。我必须像在旧的 Safari JS 扩展中一样收听“beforeNavigate”事件,我们可以使用Safari 的 Windows & Tabs API来收听这些事件。

我浏览了How to create Safari App Extension,但遗憾的是在那里找不到与这些事件相关的任何内容。

任何人都可以帮助我使用与旧 Safari JS 扩展中类似的 Safari 应用扩展 API。

0 投票
8 回答
7215 浏览

google-chrome-extension - 将 Web 扩展转换为 Safari 应用扩展

我有目前在 Chrome、Firefox 和 Opera 上运行的 Web 扩展。现在我想知道是否有一种方法可以使用相同的代码来构建 Safari 应用程序扩展,可能类似于 PhoneGap(将所有现有的 JS 代码包装在 Safari 应用程序扩展项目中),或者有一些限制,比如 javascript 的标签处理和一些事情只需要用本机代码编写。

谢谢

0 投票
4 回答
1618 浏览

javascript - 如何在 safari 应用程序和从 safari 应用程序扩展资源文件夹加载的 html 页面之间进行通信

我正在尝试构建一个简单的 Safari 应用程序扩展。在about:blank我从扩展的资源文件夹中加载一个 html 页面。以下是它的代码。

我想要这个加载的页面和 Safari 应用程序之间的通信。显然注入的脚本script.js在加载的 html 页面上不可用

我尝试将script.jshtml 页面内联链接,但safari对象本身不可用于safari.extension.dispatchMessageor safari.self.addEventListener

编辑:
有了这个(注入的脚本 script.js 在加载的 html 页面/选项卡上不可用)我的意思是在资源选项卡中打开网络检查器时,我们看不到任何extension scripts

0 投票
1 回答
455 浏览

safari-extension - Safari 12 扩展和 NativeMessaging

随着 Safari 12 的发布,Safari 将不再支持 NPAPI 插件。我的用例是能够从浏览器扩展启动位于客户端的 java 应用程序,我目前可以在 Chrome 和 Firefox 中使用 NativeMessaging 执行此操作。根据我的研究,我看不到在 Safari 12 中执行此操作的方法。我能看到的最接近的是他们的“Safari App Extension”项目,但这看起来需要您将本机应用程序与扩展程序一起打包并通过它分发应用商店。我根本不是 Mac 开发人员,所以我正在寻找一些建议。有谁知道 Safari 是否支持我的用例?

0 投票
1 回答
599 浏览

safari-app-extension - 如何从包含的 macOS 应用程序中获取 Safari 应用程序扩展的状态(启用/禁用)?

我正在开发一个 Safari 应用程序扩展,它必须包含在包含 macOS 应用程序中。当用户安装此应用程序时,该扩展程序会添加到 Safari,但默认情况下是禁用的。我可以用来SFSafariApplication.showPreferencesForExtension将用户引导至 Safari 偏好设置。

我还想检测扩展程序的状态(启用/禁用),仅在它实际上被禁用时才要求启用扩展程序,并且在启用后更改包含应用程序中的视图。我的扩展程序不是内容拦截器,所以我认为我不能使用SFContentBlockerManager.getStateOfContentBlocker. 我怎样才能做到这一点?

0 投票
2 回答
912 浏览

xcode - 需要将旧版 Safari 扩展程序转换为 Safari 应用程序扩展程序。在 Xcode 上搜索文档、开始步骤和教程

我有一个旧版 Safari 扩展程序,我需要将其转换为 Safari 应用程序扩展程序以提交到扩展程序库。因此,我是 Xcode 的新手,不熟悉它的构建和运行过程。我尝试从 developer.apple.com 查看官方文档,但它太抽象了。

  1. 为什么我们需要在创建 safari 扩展目标之前在 Xcode 中创建父应用程序?

  2. 如果是这样,我应该选择哪个父应用模板?可可应用?

  3. 我在哪里可以找到关于 Xcode 的入门教程?
  4. Extension Gallery 的提交流程是什么?
  5. 如何通过 xcode 将正在开发的扩展添加到我的 safari 中进行测试?
  6. 我听说他们需要 URL 来批准扩展,当我们通过开发者帐户提交扩展时,为什么要在 URL 上托管呢?

上述问题的任何文档或答案都会非常有帮助。谢谢你。

0 投票
2 回答
1454 浏览

swift - hello world 项目的 safari 应用程序扩展在几秒钟后崩溃

  1. 打开xcode

  2. 文件 > 新建 > 项目 > Cocoa 应用程序

  3. 文件 > 新建 > 目标 > Safari 扩展

  4. 编译并运行扩展

  5. 选择野生动物园。

  6. xcode 编译没有错误。

Safari 打开几秒钟然后崩溃。

这是调试窗口的输出。

2018-10-10 15:27:18.039905-0700 Safari[1020:16719] [SQLiteStore] 无法在 /Users//Library/Safari/Favicon Cache/favicons.db-lock: [35: Resource暂时不可用] 2018-10-10 15:27:18.040155-0700 Safari[1020:16719] [SQLiteStore] 无法在 file:///Users//Library/Safari/Favicon%20Cache/favicon 获取对数据库的独占访问权限。 D b。2018-10-10 15:27:18.041141-0700 Safari[1020:16719] [SQLiteStore] 无法在 /Users//Library/Safari/Favicon Cache/favicons.db-lock: [35: Resource暂时不可用] 2018-10-10 15:27:18.041226-0700 Safari[1020:16719] [SQLiteStore] 无法获得对文件:///Users//Library/Safari/Favicon%20Cache/favicons 的数据库的独占访问权限。 D b。2018-10-10 15:27:18.041331-0700 Safari[1020: 16719] [SQLiteStore] 回退到内存存储 2018-10-10 15:27:18.042877-0700 Safari[1020:16719] [FaviconPersistence] 对数据库 /Users//Library/Safari/Favicon 使用内存表示Cache/favicons.db 2018-10-10 15:27:18.125466-0700 Safari[1020:16771] [SQLiteStore] 无法在 /Users//Library/Caches/com.apple.Safari/TabSnapshots/ 获取数据库存储协调锁Metadata.db-lock:[35:资源暂时不可用] 2018-10-10 15:27:18.125660-0700 Safari[1020:16771] [SQLiteStore] 无法在 file:///Users// 获取对数据库的独占访问权限库/缓存/com.apple.Safari/TabSnapshots/Metadata.db。2018-10-10 15:27:18.235987-0700 Safari[1020:16718] 群未能锁定地图文件:errno = 35 2018-10-10 15:27:18.236343-0700 Safari[1020:16718] 群未能锁定地图文件:errno = 35 2018-10-10 15:27:18.293614-0700 Safari[1020:16718] 无法获得对 AutoFillCorrections.db 中自动填充更正 SQLite 存储的独占访问权限。无法获得对 AutoFillCorrections.db 上的 AutoFill 更正 SQLite 存储的独占访问权限。2018-10-10 15:27:18.299481-0700 Safari[1020:16718] 无法在 CloudAutoFillCorrections.db 上获得对 AutoFill 更正 SQLite 存储的独占访问权限。无法获得对 CloudAutoFillCorrections.db 中自动填充更正 SQLite 存储的独占访问权限。2018-10-10 15:27:18.300530-0700 Safari[1020:16718] 无法获得对 AutoFillCorrections.db 中自动填充更正 SQLite 存储的独占访问权限。无法获得对 AutoFillCorrections.db 上的 AutoFill 更正 SQLite 存储的独占访问权限。2018-10-10 15:27:18.304153-0700 Safari[1020: 16718] 无法在 CloudAutoFillCorrections.db 上获取对 AutoFill 更正 SQLite 存储的独占访问权限。无法获得对 CloudAutoFillCorrections.db 中自动填充更正 SQLite 存储的独占访问权限。2018-10-10 15:27:18.620185-0700 Safari[1020:16763] 无法获得对 AutoFillCorrections.db 中自动填充更正 SQLite 存储的独占访问权限。无法获得对 AutoFillCorrections.db 上的 AutoFill 更正 SQLite 存储的独占访问权限。2018-10-10 15:27:18.623032-0700 Safari[1020:16773] [CrowdsourcedAutoFill] 无法读取云自动填充校正集,错误:错误域 = NSCocoaErrorDomain 代码 = 260“文件无法打开,因为它没有不存在。” 2018-10-10 15:27:18.629453-0700 Safari[1020: 16763] 无法在 CloudAutoFillCorrections.db 上获取对 AutoFill 更正 SQLite 存储的独占访问权限。无法获得对 CloudAutoFillCorrections.db 中自动填充更正 SQLite 存储的独占访问权限。2018-10-10 15:27:18.675086-0700 Safari[1020:16765] [CloudBookmarks] 获取远程迁移状态时出错:Error Domain=com.apple.SafariBookmarksSync.CloudBookmarksErrorDomain Code=0 "(null)" 2018-10-10 15:27:18.771588-0700 Safari[1020:16718] [RemotePlistController] 下载的 plist 无法加载:错误 Domain=NSCocoaErrorDomain Code=260“无法打开该文件,因为它不存在。” 2018-10-10 15:27:19.161007-0700 Safari[1020:16773] 无法获得对 AutoFillCorrections.db 中自动填充更正 SQLite 存储的独占访问权限。无法获得对 AutoFillCorrections.db 上的 AutoFill 更正 SQLite 存储的独占访问权限。2018-10-10 15:27:19.167933-0700 Safari[1020:16773] 无法在 CloudAutoFillCorrections.db 上获得对 AutoFill 更正 SQLite 存储的独占访问权限。无法获得对 CloudAutoFillCorrections.db 中自动填充更正 SQLite 存储的独占访问权限。2018-10-10 15:27:19.279743-0700 Safari[1020:16763] [RemotePlistController] 下载的 plist 无法加载:错误域 = NSCocoaErrorDomain 代码 = 260“无法打开文件,因为它不存在。” 2018-10-10 15:27:20.064438-0700 Safari[1020:16763] 无法获得对 AutoFillCorrections.db 中自动填充更正 SQLite 存储的独占访问权限。无法获得对 AutoFillCorrections.db 上的 AutoFill 更正 SQLite 存储的独占访问权限。2018-10-10 15:27:20.081337-0700 Safari[1020:16763] 无法在 CloudAutoFillCorrections.db 上获得对 AutoFill 更正 SQLite 存储的独占访问权限。无法获得对 CloudAutoFillCorrections.db 中自动填充更正 SQLite 存储的独占访问权限。2018-10-10 15:27:20.084003-0700 Safari[1020:16763] [CrowdsourcedAutoFill] 本地和云分类校正数据库都无法打开程序以退出代码结束:0

我试过重新启动我的电脑。

我试过清理项目。

我试过删除元数据

我已经同时尝试了所有三个。

0 投票
1 回答
420 浏览

safari - 从 Safari 应用程序扩展中关闭选项卡

我很难找到从 Safari 应用程序扩展中关闭选项卡的方法。

我可以打开一个标签

然而,返回的 SFSafariTab 和 SFSafariWindow 都没有close()(或performClose())。

我可以向扩展的 JS 端发送友好消息并运行window.close();,但这仅限于也通过 Javascript 创建的选项卡。用户打开的任何选项卡,或被target="_blank"阻止。

第三个选项似乎是已弃用的 Safari JS Extension API。我还没有成功地完成这项工作,在这样的死胡同上投入时间感觉很恶心。