如何将消息从 Safari 扩展弹出窗口传递到全局页面?
-
11-12-2019 - |
题
我目前正在构建 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
本身将访问全局页面使用的同一存储。
不隶属于 StackOverflow