【问题标题】:GWT: redirect user on window closeGWT:在窗口关闭时重定向用户
【发布时间】: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 上它起作用。找不到任何关于此的文档。
  • 我添加了一个可能的解释作为答案。

标签: gwt redirect


【解决方案1】:

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

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

——来源:http://www.w3.org/TR/html5/browsers.html#navigate

【讨论】:

    猜你喜欢
    • 2023-03-19
    • 2011-08-05
    • 2011-11-02
    • 1970-01-01
    • 2016-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-25
    相关资源
    最近更新 更多