首页 > 解决方案 > 使用按钮禁用后如何恢复浏览器后退按钮?

问题描述

我正在使用以下代码禁用浏览器后退按钮。单击按钮后,我无法弄清楚如何重新设置浏览器后退按钮。

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

(function($) { 
  $('button').on('click', function() {
    history.pushState(null, null, location.href);
        window.onpopstate = function () {
            history.go(-1);
    };
});
})(jQuery);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button>Click</button>

标签: javascriptjquery

解决方案


通常,当您想要覆盖某些内容然后稍后恢复它时,您需要一份副本:

var oldpopstate = window.onpopstate;
window.onpopstate = function() { history.go(1); };

$("#restore").click(() => window.onpopstate = oldpopstate );

或者,检查函数内部:

var enabled = true;
window.onpopstate = function() { if (enabled) history.go(1); };

$("#restore").click(() => enabled = false );

推荐阅读