我正在构建我的第一个Safari扩展程序——一个非常简单的扩展程序——但是我遇到了一些问题。该扩展程序归结为一个单一的注入脚本,试图绕过本地feed处理程序并重定向到http:// URI。到目前为止,我的问题有两个:
- “白名单”没有按照我预期的方式工作。由于所有的feed都在“feed://”协议下显示,我尝试在白名单中捕获它们,如“feed:/// *”(黑名单中没有任何内容),但我陷入了一个无法理解的请求循环中。如果我将黑名单值设置为"http://*/*"和"https://*/*",则一切正常。
- 我不知道如何从我的注入脚本中访问我的设置。该脚本创建了一个
beforeload
事件处理程序,但无法使用文档中指示的safari.extension.settings
路径访问我的设置。
我没有找到任何苹果公司的文档说明设置不能从我的脚本中获得。由于扩展是一个全新的功能,即使是Google也只返回有限的相关结果,其中大部分都来自官方文档。
我缺少什么?
更新
因此,我希望文档不完整,因为它几乎糟糕透顶,但是我了解了一些设置。事实证明,从注入脚本中,SafariExtensionSettings
对象不可用。注入脚本只能访问SafariContentExtension
对象(根本没有用处),但它的别名与之完全相同(safari.extension.settings
)——在我看来这是个坏主意。如文档中所述:注入脚本文档:
重要提示:当你在注入脚本中使用safari.extension时,你实际上是在调用SafariContentExtension类而不是SafariExtension类。
你需要使用消息传递系统与一个可以访问设置的全局HTML文件进行通信。虽然有点绕,但我正在发送一条消息到一个名为global.html
的文件上,该文件将检索设置,并在我想出如何操作之后向我的注入脚本发送一条消息回复。
由于我所有的工作都是在文档加载前完成的,所以我找到的所有发送消息的方法都依赖于一个我没有的页面对象来进行消息的回传。