Вызов статического метода gwt из родительского элемента iframe - PullRequest
1 голос
/ 13 января 2011

Я хотел бы знать, как вызвать статический метод GWT из родительского элемента iframe, в который загружен модуль gwt.

В качестве простого примера предположим, что у меня есть следующий класс gwt:

public class Simple {
    public static void showWindow() {
        Window.alert("Hello from the iframe");
    }
}

Я создаю html-страницу под названием «iFrameHost.html», которая может запускать указанную выше функцию.Затем в другом модуле GWT на другой странице я вызываю:

Frame iFrame = new Frame("iFrameHost.html");
RootPanel.get().add(iFrame);

Как теперь вызвать метод showWindow() с родительской страницы?

Ответы [ 2 ]

2 голосов
/ 14 января 2011

Это основано на ответе Gipsy King:

Простой класс становится:

public class Simple {
    public static void showWindow() {
        Window.alert("Hello from the iframe");
    }
    public static final native void setWindowFunction() /*-{
        $wnd.jsniShowWindow = this.@com.package.path.Simple::showWindow();
    }-*/;
}

Затем вызывается простой класс из родительской HTML-страницы: Установите идентификатор IFrame и используйте следующееМетод:

 private native void callShowWindow() /*-{
       $doc.getElementById("iFrameID").contentWindow.jsniShowWindow(); 
 }-*/;

Вам нужно убедиться, что на странице iFrame была вызвана setWindowFunction (), но после этого вы можете вызвать callShowWindow () из родительской html-страницы.

0 голосов
/ 13 января 2011

в Простом классе:

public static final native void setWindowFunction() /*-{
    $wnd.myFunction = this.@com.package.path.Simple::showWindow();
}-*/;

в iframe, либо в методе Native JavaScript, либо в чистом JavaScript:

window.parent.myFunction();
...