2012-01-30 160 views

回答

6

postMessage()函數是異步的,意味着它將立即返回。所以你不能與它進行同步通信。

在您的示例中,發佈的消息將在void中消失,因爲postMessage()函數執行時沒有偵聽器消息事件。

如果您先加載iframe,然後調用postMessage(),那麼可能會出現計時問題。 (從我的經驗來看,沒有,父代碼總是先執行,但我不確定這一點。)

下面是我不知道iframe何時準備好的問題的解決方案。

在父窗口中:

  1. 加載的iframe(這是異步的,太)
  2. 設置消息監聽器
  3. 帖子消息的iframe(只是想在這裏)
  4. 等待更多的消息來

在ifram E:

  1. 設置消息監聽器
  2. 張貼消息到父窗口(只是想在這裏)
  3. 等待更多的消息來

誰從另一個接收的第一個消息然後開始真正的溝通。

根據我的經驗,從父級到iframe的消息總是會丟失,所以當父級從iframe接收消息時,通信開始。但在這種設置中,哪一個先開始並不重要。

相關問題