当表单提交到URL时,浏览器会在历史记录中再次注册该页面。假设,我在第X页,我去了第Y页并提交了表格。现在,当我按下浏览器的后退按钮时,它再次加载相同的页面即。第Y页而不是第X页。 因此,此表单提交使浏览器再次在浏览器历史记录中注册Page Y. 而且,我支持所有的浏览器和设备。 如何删除浏览器历史记录中的最后一个条目或停止浏览器在历史记录中再次注册该页面?
答案 0 :(得分:1)
您无法修改用户历史记录。在这方面你可以做的最好的是当前页面的后退按钮指向location.replace(pageX)
的更改,以便按后退按钮不会重新加载同一页面而是转到pageX。但是如果用户再次按下则会出现问题,因为该页面的历史记录将再次成为pageY。
您最好的选择是让表单提交首先刷新页面。这样,历史将是正确的。这可以通过使用AJAX而不是传统方法发送表单来完成。下面是一个使用jQuery来阻止传统表单提交然后发出AJAX请求的示例。
$(document).ready(function () {
$('#myform').on('submit', function(e) {
e.preventDefault();
$.ajax({
url : $(this).attr('action'),
data: $(this).serialize(),
success: function (data) {
// if you want it to do something when it's done, put it here
},
error: alert("broke" ),
type: "GET"
});
});
});
<强>更新强>
第三个好的选择就是按照你在评论中所说的做。如果您在提交表单后使用history.back()
,那么用户返回历史记录将完全按照您的意愿运行。按下一次将它们带到pageX。它只会是前进历史变得奇怪。但是按下前进按钮的可能性极小。用户只是导航到页面,为什么他们会向前推?然后,一旦他们在其他地方导航,那个奇怪的前进历史就会被覆盖。