2012-01-30 163 views

回答

6

postMessage()函数是异步的,意味着它将立即返回。所以你不能与它进行同步通信。

在您的示例中,发布的消息将在void中消失,因为postMessage()函数执行时没有侦听器消息事件。

如果您先加载iframe,然后调用postMessage(),那么可能会出现计时问题。 (从我的经验来看,没有,父代码总是先执行,但我不确定这一点。)

下面是我不知道iframe何时准备好的问题的解决方案。

在父窗口中:

  1. 加载的iframe(这是异步的,太)
  2. 设置消息监听器
  3. 帖子消息的iframe(只是想在这里)
  4. 等待更多的消息来

在ifram E:

  1. 设置消息监听器
  2. 张贴消息到父窗口(只是想在这里)
  3. 等待更多的消息来

谁从另一个接收的第一个消息然后开始真正的沟通。

根据我的经验,从父级到iframe的消息总是会丢失,所以当父级从iframe接收消息时,通信开始。但在这种设置中,哪一个先开始并不重要。

相关问题