我需要一种方法来禁用浏览器后退按钮或显示弹出窗口,以便在用户位于重力形式的第二页或已有POST数据时返回。
假设形式在https://www.example.com/form/上,它有3个步骤。在步骤1,如果用户提交数据,它将保留在/ form / page上,但它显示的内容来自表单的第2步。在这个阶段,我想要禁用后退按钮或询问用户是否要返回,但它将删除步骤1的提交数据。
我已尝试使用popstate,当我们没有任何POST数据时(当用户从example.com/page/访问exmaple.com/form/并尝试去)时,它会在首次访问/或表单的第一步时禁用后退按钮回来了,它不能)
window.addEventListener('popstate', function (event) {
alert(event.state);
history.pushState(null, null, document.URL);
});
在使用此代码时,警报显示为null,但如果是正常访问(没有POST数据),它会停止返回但是如果表单数据已提交,我需要一种方法来停止返回
我也尝试过以下代码:
window.addEventListener('DOMContentLoaded', function(eventX){
console.log("DOMContentLoaded done!");
setTimeout(function(){
console.log("beforeunload registered");
window.onbeforeunload = function(){return backDisable()};
window.addEventListener("beforeunload", function(){return backDisable();});
},1000);
});
function backDisable()
{
return "show some warning here!";
}
我设置延迟让其他东西加载。如果用户试图访问网站上的另一个页面并且如果用户想要离开页面则显示弹出窗口,但如果用户在步骤1或步骤2上提交表单(我可以将其排序),则此脚本也会正常显示但浏览器上的后退按钮仍然有效。
尝试使用window.history.forward()方法或onbeforeunload并在javascript中为用户返回警报以获取更多详细信息检查此问题(how to stop browser back button using javascript)