【问题标题】:Is there an event for the browser's back button being pressed?是否有按下浏览器的后退按钮的事件?
【发布时间】:2013-06-10 16:23:49
【问题描述】:

我正在支持一个电​​子商务应用程序,它几乎可以制作和提交订单。

一位用户发现,如果他们提交订单并非常快按下返回,他们可能会导致错误情况。

我想阻止这种情况。当用户单击提交时,我想将某种事件绑定到浏览器的后退按钮,而不是将它们重定向到索引页面。但是,经过大约两个小时的谷歌搜索(包括一些 StackOverflow 主题),我还没有找到任何影响后退按钮行为的明确方法。

我曾短暂尝试使用history.pushState(),但正如 HTML 5 文档所述,这不会导致重定向;它只是改变显示的 URL/状态。

同样,history.onpopstate 事件似乎没有帮助,因为它会在从历史列表中删除状态时发生;我正在寻找一个在向后遍历历史列表时发生的事件。

问题:是否存在针对浏览器的后退按钮的事件,或者至少是否存在防止这种特殊愚蠢的用户技巧的方法?

【问题讨论】:

标签: javascript jquery html browser-history


【解决方案1】:

您无法收听浏览器的后退按钮,因为它超出您的范围(它不是 DOM 的一部分)。

您可以做的是修复前一页,以便它检测您是否使用了后退按钮。

如果没有更多信息,我无法为您提供有关如何实现这一目标的任何提示。

此外,错误条件不一定是坏事。只要确保清楚发生了什么:错误消息应该是有意义的。

【讨论】:

    【解决方案2】:

    错误的答案... 而是听 window.onBeforeUnload 并询问用户是否知道他在做什么。如果不是,则返回 false。这通常通过确认对话来完成

    【讨论】:

    • 我非常非常喜欢这个答案。可悲的是,我知道我无法摆脱它!即使这样,什么会阻止用户对提示撒谎? :(
    • 我想这取决于您的用例。通常,这用于通知用户未保存的工作,而不是强迫他做某事(浏览器可能会注意到并阻止)。如果您需要保存数据,请在隐藏某些东西后立即进行,移动风格!无论如何,保存按钮已成为过去。您可以使用 localstorage(如果需要支持离线)或任何服务器 API
    猜你喜欢
    • 2016-01-14
    • 1970-01-01
    • 2013-03-02
    • 2014-11-06
    • 2010-09-14
    • 2011-06-17
    相关资源
    最近更新 更多