禁用浏览器后退按钮可以正常工作,但首先会浏览它然后向前浏览

时间:2013-06-26 15:33:47

标签: javascript asp.net asp.net-mvc asp.net-mvc-4

我必须禁止用户浏览回浏览器中的上一页。

为了实现这一点,我将下面的代码放在我的ASP.NET MVC应用程序的布局页面中(除了从服务器发送适当的响应头):

function noBack() {
    window.history.forward();
}

$(document).ready(function () {
    $(document).on("pageshow", "body", function (event) {
        if (event.persisted)
            noBack(); 
        });
});


...

<body onload = "noBack();">

我正在寻找解决方案有两个问题:

1)目前,此代码在所有浏览器上表现异常但一致。它的作用是,当我按任何浏览器上的后退按钮(包括IE)时,它会浏览回到上一页,它会加载并很好地显示它,然后再次向前浏览以返回我们正在查看的页面当我们按下后退按钮时。

这太刺激了。我怎么摆脱这个?

2)据我所知,pageshow事件不受IE支持。请告诉我IE是否有替代方案?除了FireFox和Chrome之外,我还需要支持IE 8及更高版本。

旁注:我知道弄乱客户端/用户的浏览器不是一个好习惯,最好通过让服务器发送相应的响应头来禁用输出缓存,但我的客户端坚持我也禁用/禁止浏览器的后退和前进按钮功能。

1 个答案:

答案 0 :(得分:2)

在您的javascript文件中,只需将其放在文件的顶部(或在您的_layout页面上):

window.history.forward();

每次加载脚本时,它都会继续运行。如果它无法前进,它什么都不做。这基本上禁用了后退功能。