Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
GWT:窗口关闭时重定向用户_Gwt_Redirect - Fatal编程技术网

GWT:窗口关闭时重定向用户

GWT:窗口关闭时重定向用户,gwt,redirect,Gwt,Redirect,当用户离开页面时,我需要拦截,以便将其重定向到其他地方 这将用于管理销售流程,以避免退回 我们试过类似的方法 Window.addCloseHandler(new CloseHandler<Window>() { @Override public void onClose(CloseEvent<Window> event) { ... Window.open("main"); } }); Window.addCloseHandler(新

当用户离开页面时,我需要拦截,以便将其重定向到其他地方

这将用于管理销售流程,以避免退回

我们试过类似的方法

Window.addCloseHandler(new CloseHandler<Window>() {

  @Override
  public void onClose(CloseEvent<Window> event) {

    ...
    Window.open("main");

  }
});
Window.addCloseHandler(新的CloseHandler(){
@凌驾
公共void onClose(CloseEvent事件){
...
窗口。打开(“主”);
}
});
但这只适用于Firefox。
在Chrome上执行代码,但没有重定向。如果我更改为“\u blank”,则会打开一个带有给定URL的新窗口,但这不是必需的行为。

我认为这种行为符合规范(HTML5):

如果先前存在导航浏览上下文的尝试,且源浏览上下文与正在导航的浏览上下文相同,且该尝试当前正在运行卸载文档算法,并且在该导航中加载的资源的URL的来源与在此导航中加载的资源的URL的来源不同,然后中止这些步骤,而不影响先前对浏览上下文进行导航的尝试


-来源:

浏览器倾向于尽一切可能避免用户被锁定在网站/页面中。我不知道你的用例是什么,但我肯定不喜欢你试图解决它的方式。我也不喜欢,但客户要求这种方法。这是为了避免在销售流程的各个步骤之间“跳跃”。例如,如果用户单击“后退”按钮,则会重定向到第一步。那么,您可能只需要以不同的方式处理应用程序中的“历史记录”?如果除第一个步骤外的所有步骤都共享相同的“历史标记”,那么单击“上一步”按钮将返回到第一个步骤(顺便说一句,
onClose
不会在同一GWT应用程序中处理“历史标记”之间的移动),如果您有单独的HTML页面,那么您可以在服务器端处理它,这实际上取决于你如何在名义上的情况下在页面之间导航,但我相信这不是不可能的(再一次,对每个人来说都是一次非常糟糕的经历,但从技术上来说并非不可能)。我实际上在推动一种不同的解决方案(清理销售流程),但我仍然想知道为什么在Chrome上重定向不起作用,而在Firefox上重定向起作用。找不到任何关于这个的文档。我添加了一个可能的解释作为答案。