浏览器窗口关闭后如何获得通知?

时间:2014-01-09 13:09:38

标签: java javascript gwt

我在window.open(url,“”,“”)的帮助下在gwt小部件中打开一个新窗口;一旦新窗口打开,我正在进行一些编辑操作。 我想在用户关闭新打开的窗口后,在gwt小部件中执行一些代码。这里(在gwt小部件中)怎么知道窗口是否关闭? 我想我们有一些窗口事件,但我不知道如何使用它们。

3 个答案:

答案 0 :(得分:1)

我想出了如何在儿童窗口关闭时收到通知。在gwt中,我们可以使用JSNI来完成它。
下面的方法是一个jsni来获取新打开的窗口的引用。

private static native BodyElement getNewWindowRef(String url) /*-{
    var childWindow = window.open(url, "_blank", "height=800px width=300px location=no");
    return childWindow;
}-*/;

要判断窗口是否关闭,我们可以使用以下jsni代码,传递从上面接收的变量。

private static native boolean getNewWindowStatus(BodyElement childWin) /*-{
    var ret = false;

    if (childWin.closed) {
       ret = true;
    } 

    return ret;
}-*/;

答案 1 :(得分:0)

阅读帖子后:

GWT - "Access is Denied" JavaScript error when setting document.domain in Internet Explorer only

这可能会将消息发送到另一个浏览器窗口。

答案 2 :(得分:0)

你不能用GWT做,因为Window.open()没有返回对打开的窗口的引用。

最好的办法是尝试imitate this answer使用原生函数。不保证它会起作用。 Here's another javascript answer关于同一问题。

以下是Window.open()默认执行的操作:

  public static native void open(String url, String name, String features) /*-{
    $wnd.open(url, name, features);
  }-*/;