我目前正在构建Safari扩展程序。我有一个简单的弹出窗口,有3个按钮。单击这些按钮后,我需要在全局页面上执行一些涉及操作localStorage和其他一些操作的操作。
我似乎找不到任何方法将邮件从popover发送到全局页面。从弹出窗口到内容脚本的调度似乎有很多主题,但对全局页面没有任何内容。
这可能非常简单,我只是遗漏了一些东西。非常感谢任何帮助。
答案 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
本身将访问全局页面使用的同一商店。