【问题标题】:How can I disable the browser back button with JavaScript, Ruby on Rails?如何使用 JavaScript、Ruby on Rails 禁用浏览器后退按钮?
【发布时间】:2015-07-01 14:55:24
【问题描述】:

如何在我们的应用程序中导航时禁用浏览器后退按钮。我已经尝试使用以下代码,它只阻止返回选项而不隐藏或禁用返回导航图标。

<script type = "text/javascript" >
      history.pushState(null,null);
      window.addEventListener('popstate', function() {
          history.pushState(null,null); });
</script>

<script type="text/javascript">

  window.history.forward();

</script>

我想知道至少能够屏蔽该浏览器后退导航图标/按钮(就像在浏览器中打开新的点击导航按钮显示为屏蔽模式一样)。

【问题讨论】:

  • 这不是很烦人吗,如果垃圾邮件发送者可以将您锁定在某个网站上,无法返回等等。
  • 好的 adeneo ,我了解风险,但我需要这样做。如果你有与我分享的解决方案.... :)

标签: javascript ruby-on-rails ruby-on-rails-3 extjs4 extjs4.2


【解决方案1】:

你不能或更好:你不应该。

如果可以的话,它是一个不安全且不可靠的浏览器。

最佳实践是不要乱用返回按钮,用户体验会受到影响。

编辑:

您可以尝试通过在服务器端操作会话变量来吸引用户。在会话中保留page_number 之类的变量,然后在第一页将其设置为0

在所有后续页面上检查page_number,如果页码错误,则强制使用服务器端redirect

例如,在页面4 你会这样做:

if (session.page_number === 3)
{
    // ok, user comes from previous page
    session.page_number = 4;
} else {
    // server-side redirect back to proper page
    // which happens to be "session.page_number"
}

您将该代码放在每个页面上(设置更高/更低的页码),然后单击后退按钮将导致重定向到您之前的同一页面。

显然,这是一种非常糟糕的做法。漏斗只能在非常有限的情况下使用,例如购物车和信用卡场景。漏斗使网页表现得更像 ATM。航空公司和亚马逊使用漏斗。

您可以在 Internet 上找到有关 ruby​​ on rails 的服务器端重定向的确切详细信息。

【讨论】:

  • 我了解风险,但我需要这样做。如果您有解决此问题的方法,请与我分享...
猜你喜欢
  • 2014-04-17
  • 2011-08-06
  • 1970-01-01
  • 2010-10-31
  • 2013-11-24
相关资源
最近更新 更多