从iframe的父级调用gwt静态方法
我想知道如何从加载GWT模块的iframe的父级调用GWT静态方法 作为一个简单的示例,假设我有以下gwt类:从iframe的父级调用gwt静态方法,gwt,methods,frame,Gwt,Methods,Frame,我想知道如何从加载GWT模块的iframe的父级调用GWT静态方法 作为一个简单的示例,假设我有以下gwt类: public class Simple { public static void showWindow() { Window.alert("Hello from the iframe"); } } 我创建了一个名为“iFrameHost.html”的html主机页,可以运行上面的函数。然后在另一个页面上的无关GWT模块中,我调用: Frame iFra
public class Simple {
public static void showWindow() {
Window.alert("Hello from the iframe");
}
}
我创建了一个名为“iFrameHost.html”的html主机页,可以运行上面的函数。然后在另一个页面上的无关GWT模块中,我调用:
Frame iFrame = new Frame("iFrameHost.html");
RootPanel.get().add(iFrame);
现在如何从父页面调用showWindow()
方法?在简单类中:
public static final native void setWindowFunction() /*-{
$wnd.myFunction = this.@com.package.path.Simple::showWindow();
}-*/;
在iframe中,无论是在本机JavaScript方法中还是在纯JavaScript中:
window.parent.myFunction();
这是基于吉卜赛·金的回答: 简单类变成:
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 id并使用以下方法:
private native void callShowWindow() /*-{
$doc.getElementById("iFrameID").contentWindow.jsniShowWindow();
}-*/;
您必须确保iFrame页面调用了setWindowFunction(),但之后您可以从父html页面调用callShowWindow()。感谢您的回复。很接近,但不完全是我想做的。我想从父页面调用iFrame的方法,而不是从iFrame调用父页面的方法。我已经更新了我的问题,以显示我是如何尝试使用您的代码的,但不幸的是,我在javascript方面非常弱,无法使其工作。好的,我已经修改了您的答案。如果要从父页面调用函数,请给iframe一个id,然后调用:$doc.getElementById(“iFrameID”).contentWindow.myFunction()@Richard你能用你的最终解决方案写一个答案然后接受吗?看,你应该用$entry(…)包装你的函数引用@Malli不要通过编辑旧帖子提问,因为可能没有人会看到你的问题。创建一个单独的问题,其中将包含这个答案的链接,并询问为什么它在Firefox中工作而在chrome中不工作。