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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top