首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >GWT: windowClosing处理程序在chrome中未正确处理

GWT: windowClosing处理程序在chrome中未正确处理
EN

Stack Overflow用户
提问于 2013-05-17 18:20:33
回答 2查看 1.4K关注 0票数 2

窗口关闭处理程序无法在Chrome下运行我的代码(我使用的是最新版本,26)

我有一个监听Window.ClosingEvent的类。如果在用户上载文件时关闭窗口(关闭窗口,用户键入另一个url...)应用程序会提示用户“你确定吗?”

GWT2.5.0和2.5.1 IExplorer 10 ok Firefox 21 ok Opera还不支持该事件。Chrome 26无法正常工作。

下面是GWT代码:

代码语言:javascript
复制
public abstract class ActiveUploadTransitionController extends TransitionController implements ClosingHandler {

...

@Override
    public void onWindowClosing(Window.ClosingEvent event){
        if(showMessage()){
            if(folder != null && folder.hasActiveFileUploads()){
                event.setMessage(getUploadActiveLeavingMessage());
            }
        }
    }

...
protected ActiveUploadTransitionController()
    {
...
Window.addWindowClosingHandler(this);
...
}
}

上面的代码在资源管理器和Firefox中都能正常工作,所以我认为代码没问题。

有趣的是,如果我用JavaScript实现一个独立的测试,它在资源管理器、火狐和Chrome浏览器中都能正常工作。

//JavaScript

代码语言:javascript
复制
var handler = function(e){
        var show = true;
        if(show){
            var msg = "messageTest";
            (e || window.event).returnValue = msg;
            return msg;
        }
        return;
    }

    if(window.addEventListener){
        window.addEventListener("beforeunload", handler);
    }

因为隔离的JavaScript可以工作,所以我也尝试以本机方式实现它。同样的问题。可以在IExplorer、FireFox中运行,但不能在Chrome中运行。

代码语言:javascript
复制
var handler = function (e) {
    var showMessage = that.@com.skydox.client.home.ActiveUploadTransitionController::showMessage()();
    if(showMessage){
        var confirmationMessage = that.@com.skydox.client.home.ActiveUploadTransitionController::getUploadActiveLeavingMessage()();
        (e || window.event).returnValue = confirmationMessage;
        return confirmationMessage;
    }
    tmpBeforeUnload(e);
    return;
}
if($wnd.addEventListener){
     $wnd.onbeforeunload = handler;
}

这个问题快把我逼疯了。伙计们,你们知道吗?

谢谢大家!

EN

Stack Overflow用户

发布于 2013-08-19 19:15:58

我也发现了同样的问题。非常令人沮丧。

这个站点为大多数浏览器提供了很好的workarounds

为Chrome提供的方法会抛出一个“你确定吗?”当用户关闭窗口时,会显示一个对话框。它需要这样做才能可靠地获取onClose事件。任何关闭处理都需要在此之前完成,因此如果用户单击“否”,页面/应用程序仍需要运行。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16606690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档