当用户在重力形式的第二页或已经具有POST数据时,我需要一种方法来禁用浏览器的后退按钮或显示弹出窗口以供返回。
假设表单位于https://www.example.com/form/上,它有3个步骤。 在第1步中,如果用户提交数据,它将停留在/ form /页面上,但显示的内容来自于表单的第2步。 在此阶段,我想禁用“后退”按钮或询问用户是否要返回,但是这将删除步骤1中提交的数据。
我尝试使用popstate,并且当我们没有任何POST数据时(当用户从example.com/page/访问exmaple.com/form/时,它确实会在第一次访问表单或表单的第一步禁用后退按钮)尝试返回,它不能)
window.addEventListener('popstate', function (event) {
alert(event.state);
history.pushState(null, null, document.URL);
});
在使用此代码时,警报显示为空,但如果是正常访问(没有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步提交表单,该脚本也会显示弹出窗口(我可以对其进行排序)但是浏览器上的“后退”按钮仍然有效。
答案 0 :(得分:0)
尝试使用window.history.forward()方法或onbeforeunload并在javascript中为用户返回警报以获取更多详细信息,请检查此问题(how to stop browser back button using javascript)