如何将消息从 Safari 扩展弹出窗口传递到全局页面



我目前正在构建一个Safari扩展。我有一个简单的弹出页面,有 3 个按钮。单击这些按钮后,我需要在全局页面上执行一些操作,这些操作涉及操作 localStorage 和其他一些事情。

我似乎找不到任何方法将消息从弹出窗口发送到全局页面。似乎有一堆关于从弹出框调度到内容脚本的主题,但没有发送到全局页面。

这可能非常简单,我只是错过了一些东西。将不胜感激任何帮助。

您无需在弹出框和全局页面之间使用消息传递。它们共享safari.extension对象,因此您可以从另一个对象访问其中一个的上下文。

从弹出框中,您可以通过 safari.extension.globalPage.contentWindow 访问全局页面的功能和其他对象。例如,如果您在全局页面中foo了一个函数,则可以使用 safari.extension.globalPage.contentWindow.foo() 从弹出框中调用它。

在全局页面中,您可以通过 safari.extension.popovers[i].contentWindow 访问弹出框的对象,其中i是弹出框的索引。

顺便说一下,弹出框和全局页面共享同一个localStorage对象,因此无需使用例如来自弹出框的safari.extension.globalPage.contentWindow.localStorage; localStorage本身将访问全局页面使用的同一存储。

最新更新