postMessage из внешнего скрипта в родительский GWT - PullRequest
2 голосов
/ 01 сентября 2011

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

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

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

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

То, как я понял, работает так:

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

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

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

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

Ответы [ 2 ]

4 голосов
/ 17 января 2012
У

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

вот решение

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

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

0 голосов
/ 07 сентября 2011

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

...