Jquery 使用pushState/popState操作浏览器历史记录时,退格会弄乱页面转换
我在我的ajax网站上使用pushstate/popstate,它运行良好,当我单击链接时,我使用以下过程:Jquery 使用pushState/popState操作浏览器历史记录时,退格会弄乱页面转换,jquery,html,pushstate,backspace,popstate,Jquery,Html,Pushstate,Backspace,Popstate,我在我的ajax网站上使用pushstate/popstate,它运行良好,当我单击链接时,我使用以下过程: var locked = false; $(document.body).unbind().on('click', '.transition', function (e) { e.preventDefault(); if (!locked) { locked = true; setTimeout(unlock, 1000
var locked = false;
$(document.body).unbind().on('click', '.transition', function (e) {
e.preventDefault();
if (!locked) {
locked = true;
setTimeout(unlock, 1000);
}
code here...
});
这很好,但当我按下backspace时,我很难阻止URL更改,我可以使用相同的过程来防止垃圾邮件发送backspace按钮,这不会触发我的页面转换,但无论我做什么,都会触发URL更改,因此会导致历史“不同步”
我尝试在backspace中使用此选项:
$('html').keyup(function(e) {
if(e.keyCode === 8) {
e.preventDefault();
if (!locked) {
locked = true;
setTimeout(unlock, 1000);
}
}
});
正如我说的那样,这确实防止了它被垃圾邮件攻击,但它仍然会改变浏览器的URL,并把一切都搞糟
tldr:
加载ajax内容时使用页面转换,是否可以使backspace正常工作,并防止它弄乱我操纵的浏览器历史记录?是否考虑在窗口对象上附加一个keydown事件侦听器,以防止backspace按钮出现默认值?是的,请阅读我的代码片段的更新答案:)