【问题标题】:Disable Back Button in Browser using jquery?使用jquery禁用浏览器中的后退按钮?
【发布时间】:2010-07-14 05:55:21
【问题描述】:

我想在用户单击注销时禁用后退按钮,为此我只删除该用户的 cookie,而不是我的应用程序中的会话。并想禁用返回按钮

if(getCookie('username') == ""){
   Disable back button;// we use "window.history.redirect" for javascript i look jquery for this

}

请帮帮我..

【问题讨论】:

  • 不可能 AFAIK。如果您的应用程序无法处理简单的会话 cookie 问题,那么削弱用户浏览器并不是解决问题的正确方法。而是构建强大的会话管理。
  • 既然你得到了会话ID,它就不会影响浏览器了。因为在设置会话之前浏览器后退按钮应该被阻止。 (即)默认情况下它应该被阻止。换句话说,带有后退按钮的浏览器会这样做。

标签: jquery button


【解决方案1】:

您必须在 pushState 中推送您的 url 并清除浏览器历史记录:

试试这个:

$(document).ready(function() {
        window.history.pushState(null, "", window.location.href);        
        window.onpopstate = function() {
            window.history.pushState(null, "", window.location.href);
        };
    });

【讨论】:

  • 它在最近升级的 Chrome 76 中停止工作。试图找到我们的另一种方式,但还没有运气。
【解决方案2】:

按原样使用以下代码

window.onload = function () {
    if (typeof history.pushState === "function") {
        history.pushState("jibberish", null, null);
        window.onpopstate = function () {
            history.pushState('newjibberish', null, null);           
        };
    }
    else {
        var ignoreHashChange = true;
        window.onhashchange = function () {
            if (!ignoreHashChange) {
                ignoreHashChange = true;
                window.location.hash = Math.random();                
            }
            else {
                ignoreHashChange = false;   
            }
        };
    }
};

【讨论】:

  • 不工作请提出其他建议
【解决方案3】:
这是在任何网页中禁用返回功能的另一种技术。我们可以通过在网页中添加以下代码来禁用后退导航。现在要注意的是,您必须在所有要避免用户从上一页返回的页面中添加此代码。例如,用户跟随导航 page1 -> page2。并且您想阻止用户从 page2 返回到 page1。在这种情况下,page1 中的所有以下代码。

代码:

<HTML>
    <HEAD>
        <SCRIPT type="text/javascript">    
             window.history.forward();
             function noBack() { 
                  window.history.forward(); 
             }
        </SCRIPT>
    </HEAD>
    <BODY onload="noBack();" onpageshow="if (event.persisted) noBack();" onunload="">
    </BODY>
</HTML>

【讨论】:

    【解决方案4】:
    var path = 'Test.aspx'; //write here name of your page 
    history.pushState(null, null, path + window.location.search);
    window.addEventListener('popstate', function (event) {
        history.pushState(null, null, path + window.location.search);
    });
    

    这适用于所有浏览器(

    为此,您甚至不需要 jquery。

    查看here 以将其应用于您的页面。

    【讨论】:

    • 此代码仅在从控制台手动执行时有效
    【解决方案5】:

    这行得通,它对我有用,因为我正在处理移动浏览器、android 和 ios。

    window.history.forward();
    window.onload = function()
    {
      window.history.forward();
    };
    
    window.onunload = function() {
      null;
    };
    

    【讨论】:

      【解决方案6】:

      这不完全是您的方法,但您可以使用纯 javascript 禁用任何窗口的导航面板。只需将window.menubarwindow.toolbar 的可见性设置为false,如下所示,

      window.menubar.visible = false ;
      window.toolbar.visible = false ;
      

      更新:

      更改现有窗口的菜单栏和工具栏的可见性似乎违反了安全协议。 (https://developer.mozilla.org/en/DOM/window.menubar)

      因此,唯一真正的方法是打开一个新窗口,首先将菜单栏和工具栏设置为“否”:

      window.open(url,name,"menubar=no,toolbar=no[, additional options]",true) ;
      

      如果您将 replace 参数(最后一个参数)设置为 true,则新窗口也应该继承打开它的窗口的历史记录。

      检查https://developer.mozilla.org/en/DOM/window.openhttp://msdn.microsoft.com/en-us/library/ms536651(VS.85).aspx 以供参考。

      【讨论】:

      • -: 不工作,例如。 ff。 +:好主意,但禁用菜单最安全的方法是打开一个新窗口并设置适当的选项!
      • 还有其他方法可以做同样的事情吗?因为我被这个问题困住了所以请帮助我....
      【解决方案7】:

      Sunil 是正确的,但是要使用 jQuery,请将下面的代码粘贴到您想要阻止返回的任何页面中。我在 IE 11、chrome 和 FF 中对此进行了测试,效果很好。

      $(document).ready(function () {
          function disableBack() {window.history.forward()}
      
          window.onload = disableBack();
          window.onpageshow = function (evt) {if (evt.persisted) disableBack()}
      });
      

      【讨论】:

        【解决方案8】:

        简单逻辑:点击前进时前进


        function preventBack() {
            window.history.forward();
        }
         window.onunload = function() {
            null;
        };
        setTimeout("preventBack()", 0);
        

        将此js代码保留在您的页面中它可以工作。

        【讨论】:

          【解决方案9】:

          可以通过向您的网页添加如下所示的内容来防止用户访问受保护应用程序中的页面。

          此处提供了使用 Apache Shiro 的完整示例:

          https://github.com/NACHC-CAD/web-security-example/releases/tag/v2.0.0

          <meta http-equiv="Pragma" content="no-cache" />
          <meta http-equiv="Expires" content="-1" />
          <meta http-equiv="CACHE-CONTROL" content="NO-CACHE" />
          
          <script>
              if(performance.navigation.type == 2){
                  console.log("Doing reload");   
                  location.reload(true);
                  console.log("Done with reload");
              }
              console.log("Script loaded.")
          </script>
          

          【讨论】:

            猜你喜欢
            • 2011-08-06
            • 2010-10-31
            • 1970-01-01
            • 2014-04-17
            • 2011-04-06
            • 2020-05-15
            • 1970-01-01
            相关资源
            最近更新 更多