1

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

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

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

4

1 回答 1

7

您不需要在弹出框和全局页面之间使用消息传递。它们共享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本身将访问全局页面使用的同一存储。

于 2012-09-30T22:12:49.327 回答