【发布时间】:2013-12-11 11:39:57
【问题描述】:
当用户离开页面时,我需要拦截,将他重定向到其他地方。
这将用于管理销售流程以避免返回。
我们尝试了类似的方法
Window.addCloseHandler(new CloseHandler<Window>() {
@Override
public void onClose(CloseEvent<Window> event) {
...
Window.open("main");
}
});
但这仅适用于 Firefox。 在 Chrome 上,代码已执行,但没有重定向。如果我更改为“_blank”,则会打开一个带有给定 URL 的新窗口,但这不是必需的行为。
【问题讨论】:
-
浏览器倾向于尽一切可能避免用户被锁定在站点/页面中。我不知道你的用例是什么,但我当然不喜欢你试图解决它的方式。
-
我也不喜欢,但是客户要求这种方法。这是为了避免在销售流程的各个步骤之间“跳跃”。例如,如果用户单击后退按钮将被重定向到第一步。
-
那么也许你只需要在你的应用程序中以不同的方式处理“历史”?如果除第一个步骤之外的所有步骤都共享相同的“历史令牌”,那么单击后退按钮将使您回到第一步(顺便说一句,
onClose不会处理同一 GWT 应用程序中“历史令牌”之间的移动)如果您有单独的 HTML 页面,那么您可以在服务器端处理它,那么它实际上取决于您在名义情况下如何在页面之间导航,但我相信这并非不可能(再次,对每个人来说都是非常糟糕的经历,但在技术上并非不可能)。 -
我实际上是在推动一个不同的解决方案(清理销售流程),但我仍然想知道为什么在 Chrome 上重定向不起作用,而在 Firefox 上它起作用。找不到任何关于此的文档。
-
我添加了一个可能的解释作为答案。