完全禁用浏览器的后退按钮

时间:2017-06-14 19:19:31

标签: javascript asp.net webforms

需要完全阻止用户访问上一页。

当我使用以下代码时,它可以工作,但这不是我所需要的。按下后退按钮时显示“文件已过期”:

Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1));
Response.Cache.SetValidUntilExpires(false);
Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();

另一个想法 - 打开一个没有工具栏的新窗口:

<script>
    function PopupWithoutToolbar(link) {
        var w = window.open(link.href,
            link.target || "_blank",
            'menubar=no,toolbar=no,location=no,directories=no,status=no,scrollbars=no,resizable=no,dependent,width=800,height=620,left=0,top=0');
        return w ? false : true;
    }
</script>

<a href="http://www.google.com" onclick="return PopupWithoutToolbar(this)">yahoo</a>

但是,仍然......如果用户按下键盘上的退格键,他可以返回。似乎这种方法仅用于隐藏而不是禁用按钮。

有没有办法简单地忽略后退按钮?

5 个答案:

答案 0 :(得分:2)

我不完全确定这是否有效,但您可以尝试使用javascript处理事件。

如果您想完全禁用退格按钮以允许用户返回,您可以这样做

$(window).on("keypress", function (e){
    if(e.keycode == "backspace") 
         e.preventDefault();
})

我可以为你找出退格键码,但这并不难理解。这也使用jquery,但你可以只使用原始的javascript。只是不确定它会随便什么。

答案 1 :(得分:2)

我使用的解决方案略有不同:

history.pushState(null, null, location.href);
window.onpopstate = function () {
    history.go(1);
}

答案 2 :(得分:1)

最简单的事情:

window.onhashchange = function (event) {
 //blah blah blah
 event.preventDefault();
 return false;
}

您可以从那个(window.location)处理位置域等,然后在这种情况下取​​消该事件。

How to Detect Browser Back Button event - Cross Browser

答案 3 :(得分:1)

根据你的帖子,听起来你唯一的问题就是禁止退格按钮允许用户返回。

这是我用jquery做的事情。仍然允许退格在启用的文本编辑输入中工作,它应该在哪里。

    // Prevent the backspace key from navigating back.
    $(document).unbind('keydown').bind('keydown', function (event) {
        var doPrevent = false;
        if (event.keyCode === 8) {
            var d = event.srcElement || event.target;
            if ((d.tagName.toUpperCase() === 'INPUT' && (d.type.toUpperCase() === 'TEXT' ||
                                                         d.type.toUpperCase() === 'PASSWORD' ||
                                                         d.type.toUpperCase() === 'FILE')) ||
                                                         d.tagName.toUpperCase() === 'TEXTAREA') {
                doPrevent = d.readOnly || d.disabled;
            }
            else {
                doPrevent = true;
            }
        }

        if (doPrevent) {
            event.preventDefault();
        }
    });

答案 4 :(得分:0)

要在浏览器中禁用后退按钮,可以在要禁用后退按钮的页面上的JavaScript中使用以下代码。

<script>
history.pushState(null, null, location.href);
    window.onpopstate = function () {
        history.go(1);
    };
</script>