为什么OnBeforeUnload没有';t在我的GWT应用程序中拦截后退按钮?

为什么OnBeforeUnload没有';t在我的GWT应用程序中拦截后退按钮?,gwt,onbeforeunload,Gwt,Onbeforeunload,我对beforeUnload事件有一个钩子。如果我尝试点击链接、重新加载或关闭选项卡或导航器,应用程序会在离开前请求确认。这是我们想要的行为 但如果单击后退按钮或输入外的退格,则不确认 在html的开头: window.onbeforeunload = function() { if (confirmEnabled) return ""; } 我使用Gwt PlaceHistoryMapper 我错过了什么?我忘了看哪了 谢谢 只要你呆在你的应用程序中,因为它是一个单页应用程序,根据

我对beforeUnload事件有一个钩子。如果我尝试点击链接、重新加载或关闭选项卡或导航器,应用程序会在离开前请求确认。这是我们想要的行为

但如果单击后退按钮或输入外的退格,则不确认

在html的开头:

window.onbeforeunload = function() {
 if (confirmEnabled)
    return "";
}
我使用Gwt PlaceHistoryMapper

我错过了什么?我忘了看哪了


谢谢

只要你呆在你的应用程序中,因为它是一个单页应用程序,根据定义,它不会卸载,因此在卸载之前没有
事件

使用Places时,等效的是由
EventBus
上的
PlaceController
调度的
PlaceChangeRequestEvent
。此事件也在卸载前调度,并且是活动中处理的基础


在GWT之外的JS世界中,根据您的
PlaceHistoryHandler.Historian
实现(默认使用
History.newItem()
,因此将是
hashchange
),等价的将是
hashchange

返回按钮将带您到哪里?在应用程序内部或外部?内部。它正常运行,只是没有确认弹出窗口。对于我应用程序中的锚,我添加了一个JS位来拦截点击。这就是我错过的。现在我想处理PlaceChangeRequestEvent,但我不知道在请求确认后如何停止或继续通过“请求确认”,您是指
PlaceChangeRequestEvent
上的
setMessage()
,还是在事件处理程序中滚动自己的事件?使用前者,确认和停止/继续免费提供。