我正在构建我的第一个 Safari 扩展程序——一个非常简单的扩展程序——但我遇到了一些问题。该扩展归结为一个单一的注入脚本,该脚本试图绕过本机提要处理程序并重定向到 http:// URI。到目前为止,我的问题有两个:
- “白名单”没有按我预期的方式工作。由于所有提要都显示在“feed://”协议下,我试图在白名单中将其捕获为“feed://*/*”(黑名单中没有任何内容),但我最终收到了一个请求我无法理解的循环。如果我设置“ http://*/* ”和“ https://*/* ”的黑名单值,一切都会按预期工作。
- 我不知道如何从注入的脚本中访问我的设置。该脚本创建了一个
beforeload
事件处理程序,但无法使用safari.extension.settings
文档中指示的路径访问我的设置。
我在 Apple 的文档中没有发现任何内容表明我的脚本中不应提供设置。由于扩展是一个新功能,即使是谷歌也返回有限的相关结果,其中大部分来自官方文档。
我错过了什么?
更新
所以我希望文档不完整,因为它非常糟糕,但我已经了解了一些关于设置的知识。事实证明,从注入脚本中,该SafariExtensionSettings
对象不可用。注入脚本只能访问该SafariContentExtension
对象(这根本没有用),但它的别名方式完全相同(safari.extension.settings
)——IMO 是个坏主意。如注入脚本文档中所述:
重要提示:当您在注入脚本中使用 safari.extension 时,您并没有解决 SafariExtension 类。您正在解决 SafariContentExtension 类。
您必须使用消息系统与可以访问设置的全局 HTML 文件对话。这有点循环,但是我有一条消息被发送到一个global.html
文件中,该文件检索设置,一旦我弄清楚如何去做,就会将一条消息发送回我的注入脚本。
由于我在加载文档之前完成了所有工作,因此我发现的所有发回消息的方法都依赖于我没有的页面对象。