【问题标题】:Disable browser back button for a particular page [duplicate]禁用特定页面的浏览器后退按钮[重复]
【发布时间】:2014-05-08 19:49:55
【问题描述】:

在我的网络应用程序中,我首先登录,然后如果登录成功,我将用户重定向到他们的帐户页面。我想在他/她登录后在帐户页面上时禁用浏览器后退按钮(如下图所示)。

我不想让用户返回登录页面。 我从谷歌尝试了所有这些 window.history.forward 东西,但我想禁用这个浏览器后退按钮,请帮助我。我被困在这里了。

【问题讨论】:

  • 这样做的原因是什么?假设有一个后退按钮,那又如何?
  • 我不想通过 history.forward 方法,因为它对所有其他页面都执行此操作。是否可以仅从特定的前一页执行此操作。我的意思是假设我在 default.aspx 上应用此代码,但它应该仅从特定的前一页应用此代码。不适用于所有人
  • @zerkms 我不想让用户进入登录页面...
  • @Vivek Parikh:如果用户只输入登录页面 URL 会怎样?为什么不直接从登录页面重定向而不是拒绝不应该的内容?

标签: javascript jquery


【解决方案1】:

通常您不能禁用浏览器后退按钮,但有一些方法可以让您绕过此限制,article 对此进行了解释。

但是,我发现有更好的方法来解决您的问题。您可以对内容和登录以及页面会话使用相同的页面,以避免更改返回按钮功能。您可以执行以下操作:

if(user has valid session)
   include (account_page)
else if (login form has been submitted)
   if (valid user)
     include (account_page)
     create new session for this user
    else 
       include (login_page)
else
   include (login_page)

【讨论】:

    【解决方案2】:

    通常与浏览器行为作斗争会适得其反,相反,如果他们在登录后访问帐户页面,您应该简单地将客户端重定向回另一个页面。

    如果您使用的是 MVC,这很容易通过在 AccountController(或您显示帐户页面的任何位置)内的 Index 操作中返回一个新的 RedirectAction 对象来实现

    public ActionResult Index()
    {
        if (User.Identity.IsAuthenticated)
            return RedirectToAction("index", "home");
    
        ... do your other code here if they are not authenticated
    }
    

    【讨论】:

    • 这是否考虑浏览器缓存?
    猜你喜欢
    • 2011-04-06
    • 2019-09-16
    • 2014-04-09
    • 1970-01-01
    • 1970-01-01
    • 2011-08-06
    • 1970-01-01
    • 2010-10-31
    相关资源
    最近更新 更多