我在我的 ajax 网站上使用 pushstate/popstate,它工作正常,当我单击链接时,我使用以下过程:
var locked = false;
$(document.body).unbind().on('click', '.transition', function (e) {
e.preventDefault();
if (!locked) {
locked = true;
setTimeout(unlock, 1000);
}
code here...
});
哪个工作正常,但是当我按下退格键时,我很难阻止 URL 更改,我可以使用相同的程序来防止向退格键发送垃圾邮件,这不会触发我的页面转换,但无论我做什么,触发 url 更改,因此它会导致历史记录“不同步”,也就是不起作用。
我试图在退格上使用它:
$('html').keyup(function(e) {
if(e.keyCode === 8) {
e.preventDefault();
if (!locked) {
locked = true;
setTimeout(unlock, 1000);
}
}
});
正如我所说,这确实可以防止它被垃圾邮件发送,但它仍然会更改浏览器 URL,并搞砸一切。
tldr:是否有可能使退格正常工作,并防止它弄乱我操纵的浏览器历史记录,因为我在加载我的 ajax 内容时使用页面转换?