gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 06:32:37 26 4
gpt4 key购买 nike

窗口关闭处理程序在我的 Chrome 代码上不起作用(我使用的是它的最新版本,26)

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

GWT 2.5.0 和 2.5.1IExplorer 10 好火狐 21 正常Opera 尚不支持该事件。Chrome 26 不工作。

这是 GWT 代码:

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);
...
}
}

以上代码在 Explorer、Firefox 中符合并正常工作,所以我认为代码没问题。

有趣的是,如果我在 JavaScript 中实现隔离测试,它在 Explorer、Firefox 和 Chrome 浏览器中运行良好。

//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 有效,所以我也尝试以 native 方式实现它。一样的问题。适用于 IExplorer、FireFox,但不适用于 Chrome。

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;
}

这个问题让我抓狂。伙计们有什么想法吗?

谢谢大家!

最佳答案

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

本站报价不错workarounds对于大多数浏览器。

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

关于javascript - GWT:windowClosing 处理程序未在 chrome 中正确处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16606690/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com