我目前正在构建一个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
本身将访问全局页面使用的同一存储。