【发布时间】:2013-06-25 18:04:41
【问题描述】:
HTML5 postMesssage API 允许在 window opener 和 openee 之间发送消息。但是,它需要引用/链接到接收器窗口。
是否有一种纯客户端 JavaScript 方式向所有窗口订阅者广播事件,在同一域名下,由用户(例如重复选项卡)同一会话打开,无需服务器帮助?
目前,我想出一些想法
- 服务器端通道(通过 $_SESSION)和轮询
- JS Cooking 更新和轮询(hard cookie play)
- 本地存储更新和轮询(甚至最差)
- WebRTC? (浏览器支持不佳)
有没有我错过的 API?
顺便说一句,不需要跨域。我正在考虑同一个域,用户可以多次打开。
【问题讨论】:
-
只需使用
window.postMessage("whatever", "whatever");。如果你使用window.,它会广播……如果你使用另一个窗口引用,它只针对那个。我相当确定。你有没有打扰测试?这可能比实际规范更容易理解:developer.mozilla.org/en-US/docs/Web/API/window.postMessage -
其实我撒了谎。我不知道我为什么这么认为。我想我从来没有真正测试过它,但是看起来你不能广播。我不确定它是否有帮助,但您可以查看:stackoverflow.com/questions/1100336/… - 第二个答案表明一个非常酷的库,它利用了
Storage事件
标签: javascript html postmessage