window.history.pushState不在历史记录中

我在尝试使用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(); }); 

弄清楚:D,好吧。 至少它工作:)

我刚才补充道

  window.addEventListener("popstate", function(e) { loadPage(location.pathname); }); 

到页面的末尾:)

我有同样的问题,但我修好了。 这很容易

代码示例:

 window.addEventListener("popstate", function(e) { window.location.href = location.href; }); 

是的Safari iOS在HTML5历史记录API方面存在一些漏洞 – 实际上,所有HTML5浏览器的工作方式都不同,所以function现在并不是那么标准。

有History.js可以解决跨浏览器兼容性问题,并且如果您愿意,还可以提供可选的HTML4哈希回退。 您还可以参考“兼容性说明”部分,以获取有关它修复的所有浏览器错误的信息。