-1

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

为了实现这一点,我将这段代码放在了我的 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 及更高版本。

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

4

1 回答 1

2

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

window.history.forward();

每次加载脚本时,它都会前进。如果它不能前进,它什么也不做。这实质上禁用了后退功能。

于 2013-06-26T16:32:53.433 回答