javascript - 使用按钮禁用后如何恢复浏览器后退按钮?
问题描述
我正在使用以下代码禁用浏览器后退按钮。单击按钮后,我无法弄清楚如何重新设置浏览器后退按钮。
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>
解决方案
通常,当您想要覆盖某些内容然后稍后恢复它时,您需要一份副本:
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 );
推荐阅读
- reactjs - reactJS 中是否仍在使用构造函数、绑定、(超级)、生命周期方法?
- python-3.x - 这个 Python 类是可变的吗?
- java - MongoDB 唯一索引未在 Spring Boot 中创建
- python - Selenium Action 点击当前元素之前的每个元素
- javascript - 如何在 javascript nightwatch.js 测试自动化脚本中使用 forEach 循环将键值对分配给对象数组?
- python - 使用字符串计数时出现 UnboundLocalError 错误
- javascript - 关于具有 2 个特征的 TensorFlow 分类模型的问题
- c# - 有没有办法使用删除 C# 应用程序的 Visual Studio 安装程序中的所有文件?
- liquid - Liquid中相同函数的递增数字和if语句
- css - 反应变量