Javascript 删除浏览器历史记录中的最后一项

Javascript 删除浏览器历史记录中的最后一项,javascript,browser,form-submit,browser-history,Javascript,Browser,Form Submit,Browser History,当表单提交到URL时,浏览器会在历史记录中再次注册该页面。假设我在第X页,我转到第Y页并提交表格。现在,当我按下浏览器的“后退”按钮时,它会再次加载同一页,即Y页而不是X页。 因此,此表单提交将使浏览器再次在浏览器历史记录中注册页面Y。 而且,我支持所有的浏览器和设备。 如何删除浏览器历史记录中的最后一项或停止浏览器在历史记录中再次注册页面?您无法编辑用户历史记录。在这方面,您最好使用位置更改当前页面的后退按钮指向的位置。替换(pageX),以便按下后退按钮不会重新加载同一页面,而是转到page

当表单提交到URL时,浏览器会在历史记录中再次注册该页面。假设我在第X页,我转到第Y页并提交表格。现在,当我按下浏览器的“后退”按钮时,它会再次加载同一页,即Y页而不是X页。 因此,此表单提交将使浏览器再次在浏览器历史记录中注册页面Y。 而且,我支持所有的浏览器和设备。
如何删除浏览器历史记录中的最后一项或停止浏览器在历史记录中再次注册页面?

您无法编辑用户历史记录。在这方面,您最好使用
位置更改当前页面的后退按钮指向的位置。替换(pageX)
,以便按下后退按钮不会重新加载同一页面,而是转到pageX。但是,如果用户再次按下返回键,则会出现问题,因为该页面的历史记录将再次被翻页

您最好的选择是首先防止表单提交刷新页面。这样历史就会正确。这可以通过使用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()
,则用户backhistory将完全按照您的要求工作。按一次“后退”键将转到第X页。只有向前的历史才会变得怪异。但按下前进按钮的可能性极低。用户刚刚导航到页面,为什么要按“前进”?然后,一旦他们导航到其他地方,奇怪的前进历史就会被覆盖。

难道你不能让表单在完成后将浏览器发送到第X页,这样人们就不需要按后退按钮吗?@tylermackenzie否,用户应该保持在同一页,因为它除了表单提交之外还有其他一些功能。但即使我做了一个history.back(),它仍然会在历史记录中,如果用户再次单击“前进”按钮,他必须单击“后退”按钮两次才能转到第X页(如果他愿意)。