【问题标题】:Popstate not working as expected(needs multiple clicks)Popstate 未按预期工作(需要多次点击)
【发布时间】:2016-04-20 03:48:45
【问题描述】:

我正在尝试学习 History Web API,但在第一关就遇到了问题。

我可以让history.pushState 工作,但是popstate 有问题。在AJAX 页面加载后第一次点击时它工作正常,但如果我再次加载同一页面,我需要点击两次返回按钮。如果我再加载一次,我需要点击返回三次,以此类推。

这是我的代码:

$(function(){
var $main = $('#main');


$(window).on('popstate', function () {
    loadPage(location.href); 
});

$(document).on('click', 'a', function(){
    var href = $(this).attr('href');
    history.pushState({}, '', href);
    loadPage(href);
    return false;
})

loadPage = function(href){
    $main.load(href);
}
})

【问题讨论】:

  • 听起来你可能想要.replaceState()...
  • 感谢您的建议。它现在无需多次点击即可工作。但是我仍然很好奇我的这段代码有什么问题,特别是因为我在网上看到了使用 pushState 的示例,并且不需要多次单击返回按钮。
  • 猜我有点过头了。它没有做我想要的。后退按钮功能现在完全搞砸了。
  • 如何多次加载同一个页面?只是一遍又一遍地点击同一个链接?
  • @ryan0319 是的,同一个链接一遍又一遍。

标签: javascript jquery ajax html5-history popstate


【解决方案1】:

你需要状态对象。在您的情况下,您使用一个空的对象将无法正常工作。只需使用这样的对象进行测试:{"url":yourUrlVar}

参考:History.pushState - MDN

【讨论】:

  • 感谢您的帮助,但运气不佳。同样的问题仍然存在。
猜你喜欢
  • 2023-03-04
  • 1970-01-01
  • 1970-01-01
  • 2021-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-25
  • 2020-09-01
相关资源
最近更新 更多