Поддерживает ли HTML5 обмен сообщениями между окнами? - PullRequest
4 голосов
/ 14 марта 2012

В спецификации сказано, что я должен иметь возможность использовать postMessage () для объекта окна. Mozilla говорит , я тоже смогу сделать это в открытом () окне.

Однако я взял пример postMessage Роберта Наймана и попытался заставить его работать в окнах . Однако ни IE10, ни Chrome не предоставляют функцию postMessage для вновь открытого окна.

var target = … // original declaration
popoutbutton.onclick = function(evt) {
    realWin = window.open(iframeWin.frameElement.src, "window1", "width=600,height=400,status=yes,scrollbars=no,resizable=yes");
    target = realWin;
    target.focus();
};

// …snip…

target.postMessage(myMessage.value, expectorigin); // <-- fails because target.postMessage() is undefined

Я что-то упустил или эта функция просто еще не существует?

- обновление ниже -

Предварительный просмотр разработчика, похоже, этого не делает. Я попробовал еще раз с потребительским предварительным просмотром. IE10 (сборка 8250) делает это, как и ожидалось. Спасибо за вашу помощь!

Ответы [ 2 ]

1 голос
/ 19 апреля 2012

Есть лучший способ, чем postMessage, см. Это:

http://carlosaguayo.posterous.com/html5-localstorage-events-cross-window-messag

0 голосов
/ 14 марта 2012

Я могу заставить его работать в Chrome 15.0.874.121, хотя в вашем примере вы звоните target.postMessage до того, как откроете окно, хотя вы пропустили любой код, изначально установленный target.

Вы также можете столкнуться с проблемой вызова postMessage до загрузки содержимого в новом окне (или, по крайней мере, загрузки, достаточной для подключения прослушивателя событий). Таким образом, событие может быть запущено, когда на самом деле ничего не слушается. В этом сценарии может потребоваться добавить ожидание, чтобы убедиться, что загружено только что открытое окно.

В Internet Explorer 10 я получаю сообщение об ошибке SCRIPT16388: операция прекращается при каждой попытке сценария - даже если я жду 10 секунд.

...