我在尝试使用history.pushstate事件时遇到了一些问题。我进行了设置,以便页面的url成为通过AJAX加载的页面的实际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();
});
答案 0 :(得分:13)
想出来:D,好吧。至少它有效:)
我刚刚添加了
window.addEventListener("popstate", function(e) {
loadPage(location.pathname);
});
到页面末尾:)
答案 1 :(得分:2)
我有同样的问题,但我修好了。这很容易
代码示例:
window.addEventListener("popstate", function(e) {
window.location.href = location.href;
});
答案 2 :(得分:1)
是的,Safari iOS在HTML5历史记录API方面存在一些漏洞 - 实际上,所有HTML5浏览器的工作方式都不同,所以功能现在并不是那么标准。
有History.js解决了跨浏览器兼容性问题,并且如果您愿意,还提供可选的HTML4哈希回退。 您还可以参考“兼容性说明”部分,了解它修复的所有浏览器错误。