javascript - окно.postmessage - событие.данные всегда равны нулю


У меня есть iframe, и я хочу отправить данные из iframe в родительское окно.

Внутри JS-кода iframe у меня есть следующее утверждение

window.parent.postMessage('hello', '*');

Соответствующий обработчик сообщений в Родительском окне выглядит следующим образом

$(window).bind('message', function (event) {
    console.log(event.data);
    console.log(event.origin);
    console.log(event.source);
    console.log('received');
});

Я загружаю код с localhost, и источник iframe также загружается с localhost. Я запускаю код в firefox 21.

Проблема в том, что event.data всегда null и event.orign and event.source являются undefined. Как мне решить эту проблему проблема?

2   3   2013-06-19 15:55:18

2 ответа:

window.parent.postMessage('hello', '*');   
window.addEventListener("message", receiveMessage, false);
       function receiveMessage (event) {
            console.log(event.data);
            console.log(event.origin);
            console.log(event.source);
            console.log('received');
        }

Это будет работать по назначению; Возможно, есть проблема в привязке события ("сообщение") с jQuery Обновлю, когда получу что-то по этому поводу.

Смотрите Ответ Фредерика Хамиди на этот вопрос. Произошло то, что jQuery инкапсулировал исходное событие в соответствующий jQuery.тип объекта события. Итак, чтобы получить исходное событие, вам просто нужно:

$(window).on("message", function(e) {
  console.log("Orignal:", e.originalEvent);
});