使用jquery在浏览器中禁用后退按钮?

时间:2010-07-14 05:55:21

标签: jquery button

我想在用户点击注销时禁用后退按钮我只删除该用户的cookie而不是我的应用程序中的会话。并且想要禁用后退按钮

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

}

请帮帮我..

9 个答案:

答案 0 :(得分:19)

您必须在pushState中推送您的网址并清理浏览器历史记录:

试试这个:

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

答案 1 :(得分:4)

这是在任何网页中禁用后退功能的另一种技术。我们可以通过在网页中添加以下代码来禁用后退导航。现在要注意的是,您必须在要避免用户从上一页返回的所有页面中添加此代码。例如,用户跟随导航页面1 - >第2页。并且您希望阻止用户从page2返回到page1。在这种情况下,第1页中的所有后续代码。

<强> CODE:

<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>

答案 2 :(得分: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);
});

这适用于所有浏览器(&lt; IE10除外),即使网址附加了查询字符串。

为此你甚至不需要jquery。

看一下here,将其应用于您的网页。

答案 3 :(得分:4)

使用以下代码

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;   
            }
        };
    }
};

答案 4 :(得分:1)

这不是您的方法,但您可以使用普通的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以供参考。

答案 5 :(得分:0)

简单逻辑:向前点击时向前移动


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

将此js代码保存在您的页面中。

答案 6 :(得分:0)

这将起作用,它对我有用,因为我正在处理移动浏览器,android和ios。

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

window.onunload = function() {
  null;
};

答案 7 :(得分:0)

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 :(得分:0)

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

此处提供了使用 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>