如何限制用户不要通过单击浏览器的后退按钮转到上一页

时间:2013-10-24 05:56:29

标签: javascript

如何使用javascript按下浏览器后退按钮,停止用户返回上一页。 任何建议都非常感激。**

谢谢和问候

尼斯特

5 个答案:

答案 0 :(得分:2)

在页面加载时使用此功能,它将阻止用户从其放置的页面导航回来。

 <script type = "text/javascript">
    function changeHashOnLoad() {
        window.location.href += "#";
        setTimeout("changeHashAgain()", "50");
    }

    function changeHashAgain() 
    {          
        window.location.href += "1";
    }

    var storedHash = window.location.hash;
    window.setInterval(function () {
        if (window.location.hash != storedHash) {
            window.location.hash = storedHash;
        }
    }, 50);

    </script>

答案 1 :(得分:1)

谢天谢地,这是不可能的。你不能阻止用户的后退按钮工作,但你可以在技术上改变网址足够的时间甚至尝试使用后退按钮进行导航变得毫无意义。

// treat the URL changes as a non-external page (the page won't reload)
document.location.href += "?"; 

// Fill up the browser's history
for(var i = 0; i < 100; i++){
    document.location.href += "a"; 
    document.location.href = document.location.href.substring(0, document.location.href.length-1)
}

这将使用同一页面填充浏览器的历史记录,有效地禁用后退按钮以供任何实际使用。

答案 2 :(得分:0)

通过使用javascript,您可以执行此操作。

参考,

http://www.htmlgoodies.com/tutorials/buttons/article.php/3478911

这可能有助于你

答案 3 :(得分:0)

为什么不按下后退按钮确认用户操作?

类似

window.onbeforeunload = function(){
    return "Message here";
}

它会阻止用户意外点击,转发或关闭窗口并直接更改网址。

答案 4 :(得分:0)

我的解决方案没有任何确认和无用的历史填充:

加载时添加一个虚拟历史实例。 如果点击 btn,请添加另一个。

if (window.history && history.pushState) {
    addEventListener('load', function() {
        history.pushState(null, null, null);
        addEventListener('popstate', function() {
            history.pushState(null, null, null);
        });    
    });
}

参考:https://stackoverflow.com/a/45844767/13672902