我在尝试使用history.pushstate事件时遇到了一些问题。我进行了设置,以使页面的url是通过AJAX加载的页面的实际URL,并且可以正常工作。
我了解它应该自动创建历史记录,以加载先前加载的页面。不幸的是,帽子没有发生,当我单击后退时,URL确实会更改,但页面不会更改。你能帮助我吗?这是我的简化代码:
function hijackLinks() { $('a').live("click", function (e) { e.preventDefault(); loadPage(e.target.href); direction = $(this).attr('class'); }); } function loadPage(url) { if (url === undefined) { $('body').load('url', 'header:first,#content,footer', hijackLinks); } else { $.get(url, function (data) { $('body').append(data); window.history.pushState(url, url, url); if (direction === "leftnav") { //DO STUFF } if (direction !== "leftnav") { //DO STUFF } setTimeout(function () { //DO STUFF },1000); }); } } $(document).ready(function () { loadPage(); });
想通了,我刚刚添加:
window.addEventListener("popstate", function(e) { loadPage(location.pathname); });
到页面末尾