postMessage от внешнего скрипта к родителю GWT

Я только что получил удовольствие от общения от одного iframe к другому, используя postMessage html5.

Однако проблема, с которой я сталкиваюсь, заключается в том, что я запускаю приложение GWT, которое загружает iframe (с внешним доменом). Теперь из этого внешнего домена я хочу отправить сообщение обратно в приложение GWT. Наивно я сначала попробовал:

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

из внешнего скрипта, прослушивая события сообщений в моем приложении GWT. Это не работает, потому что javascript GWT запускается в iframe.

То, как я это сделал, это сделать:

document.getElementById(myGwtModuleName).postMessage('hello', '*');

Здорово, что это работает, но что, если я решу изменить имя моего модуля Gwt? Весь процесс сломался бы, и через год, вероятно, пришлось бы долго ломать голову, чтобы понять, почему...

Есть ли лучший способ отправить сообщение обратно в приложение GWT? Или, в качестве альтернативы, как я могу выяснить, какое имя модуля Gwt во время выполнения? В этом случае я мог бы передать его как параметр iframe.

Спасибо за любую помощь!


person Rene    schedule 01.09.2011    source источник


Ответы (2)


была та же проблема, и мне потребовалось некоторое время, но вы должны позвонить, чтобы она заработала :)

вот решение

    public final native void doPost() /*-{
    $wnd.parent.postMessage("Hello parent from your GWT iFrame!", '*');
}-*/;

С уважением, Стефан

person Stefan    schedule 17.01.2012

Как вы добавляете слушателей в текущее окно (например, окно, в которое включен скрипт GWT). Вы должны использовать переменные $doc или $wnd в качестве цели для слушателей. Переменная $doc всегда является ссылкой на документ, содержащий скрипт начальной загрузки для приложения GWT.

person jusio    schedule 07.09.2011