2013-11-22 5 views
0

Я пытаюсь настроить простую связь сообщений между родительским окном и iframe, содержащимся внутри него. Я получил этот код на материнской стороне:Parent-Iframe postMessage communication

var ifr = document.getElementById("ifr"); 

ifr.contentWindow.postMessage('hello child, this is parent', '*'); 

window.addEventListener('message', function (e) { console.log(e.data) }); 

А на стороне ребенка у меня есть:

window.parent.postMessage('hello parent, this is child', '*') 

window.addEventListener('message', function (e) {console.log(e.data) }); 

Я получаю сообщение, отправленное фрейм, но не тот, отправленный родителем, я ve проверен, и элемент iframe правильно выбран get. Это просто для тестирования, чтобы использовать что-то еще.

+0

Установить имя iframe и отправить сообщение iframe с использованием window.frames [] –

ответ

3

Когда вы отправляете сообщение в iframe, оно еще не загружено. Используйте событие «onload», чтобы начать общение с iframe.

ifr.onload = function() { 
    this.contentWindow.postMessage('hello child, this is parent', '*'); 
};