Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 使用pushState/popState操作浏览器历史记录时,退格会弄乱页面转换_Jquery_Html_Pushstate_Backspace_Popstate - Fatal编程技术网

Jquery 使用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

我在我的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...
});
这很好,但当我按下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按钮出现默认值?是的,请阅读我的代码片段的更新答案:)