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

时间:2012-09-30 18:15:44

标签: popover safari-extension

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

我似乎找不到任何方法将邮件从popover发送到全局页面。从弹出窗口到内容脚本的调度似乎有很多主题,但对全局页面没有任何内容。

这可能非常简单,我只是遗漏了一些东西。非常感谢任何帮助。

1 个答案:

答案 0 :(得分: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本身将访问全局页面使用的同一商店。