【问题标题】:How Can I Return A Value From A postMessage() call asynchronously?如何从 postMessage() 异步调用中返回值?
【发布时间】:2017-04-18 02:52:41
【问题描述】:

我正在尝试从通过 iframe 加载的站点上的本地存储中获取值。我可以通过 postMessage 向 iframe 中的站点发送消息,但还没有弄清楚如何从 postMessage 调用返回数据。我已经研究过承诺,但还没有弄清楚如何让它发挥作用。

有人有想法吗?

【问题讨论】:

  • 如果postMessage是异步的,那么就没有办法得到同步响应
  • @Harry 你应该在你的问题中添加“异步”

标签: javascript asynchronous promise postmessage


【解决方案1】:

我的iframe窗口需要监听“message”事件,处理消息,然后给messenger的窗口发回postMessage。

您可以在此处阅读有关 API 的信息:window.postMessage()

David Walsh 还写了一篇很好的 tutorial 来说明如何做到这一点。

我希望这会有所帮助!

【讨论】:

  • 我还没有尝试过回复,这可能有效。谢谢!
  • 不客气!据我所知,这是唯一的方法:)
  • 不是最优雅的解决方案,但它确实有效。再次感谢。
  • 没有人问怎么同步。不同窗口之间没有同步通信。
  • 我意识到这个问答已经完成很久了,但是坚持在这里以防其他人来寻找解决方案:“Postmate 是一个基于 postMessage 的基于 Promise 的 API。它允许父页面以最小的努力与跨来源的儿童 iFrame 交谈。” github.com/dollarshaveclub/postmate
猜你喜欢
  • 2012-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-14
相关资源
最近更新 更多