从 iframe 的父级调用 gwt 静态方法

发布于 2024-10-11 15:36:43 字数 451 浏览 4 评论 0原文

我想知道如何从加载 gwt 模块的 iframe 的父级调用 GWT 静态方法。

作为一个简单的例子,假设我有以下 gwt 类:

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() 方法?

I'd like to know how to call a GWT static method from the parent of the iframe in which the gwt module is loaded.

As a simple example suppose I have the following gwt class:

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

I create an html host page called "iFrameHost.html" that can run the function above. Then in an unrelated GWT module on a different page I call:

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

How do I now call the showWindow() method from the parent page?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

娇女薄笑 2024-10-18 15:36:43

这是基于 Gipsy King 的回答:

Simple Class 变为:

public class Simple {
    public static void showWindow() {
        Window.alert("Hello from the iframe");
    }
    public static final native void setWindowFunction() /*-{
        $wnd.jsniShowWindow = [email protected]::showWindow();
    }-*/;
}

然后从父 HTML 页面调用 Simple 类:
设置 IFrame id 并使用以下方法:

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

您必须确保 iFrame 页面已调用 setWindowFunction(),但之后您可以从父 html 页面调用 callShowWindow()。

This is based on Gipsy King's answer:

Simple Class becomes:

public class Simple {
    public static void showWindow() {
        Window.alert("Hello from the iframe");
    }
    public static final native void setWindowFunction() /*-{
        $wnd.jsniShowWindow = [email protected]::showWindow();
    }-*/;
}

Then to call the Simple class from the parent HTML page:
Set the IFrame id and use the following method:

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

You'll have to make certain that the iFrame page has called setWindowFunction() but after that you can call callShowWindow() from the parent html page.

戈亓 2024-10-18 15:36:43

在 Simple 类中:

public static final native void setWindowFunction() /*-{
    $wnd.myFunction = [email protected]::showWindow();
}-*/;

在 iframe 中,无论是在原生 JavaScript 方法中还是在纯 JavaScript 中:

window.parent.myFunction();

in Simple class:

public static final native void setWindowFunction() /*-{
    $wnd.myFunction = [email protected]::showWindow();
}-*/;

in the iframe, either in a Native JavaScript method or in pure JavaScript:

window.parent.myFunction();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文