event.state == null和如何使pushState在Firefox上正确运行?

时间:2019-03-16 13:41:19

标签: javascript jquery html5 pushstate html5-history

$('.btn').click(function(event){
  var paged = $(this).attr("id");
  history.pushState(paged, "", event.target.href);
  $.ajax({
    do something
  }
});
});
window.onpopstate = function(event) {alert(event.state); };

使用Chrome,Safari,Firefox进行检查,

当单击后退按钮时,只有Chrome和Safari可以显示警报(消息=页面),但是Firefox显示警报消息的值为空,

因此,单击后退按钮时,无法使用onpopstate将上一页内容加载到Firefox。那么如何解决它或正确推送event.state,而不是firefox的空值:)?

1 个答案:

答案 0 :(得分:0)

已在此处回答:https://lazyfox.io/task/b8r/event-state-null-and-how-to-get-pushstate-run-correctly-at-firefox

  

浏览器过去在页面加载时处理popstate事件的方式不同,但是现在它们的行为相同。 Firefox从不在页面加载时发出popstate事件。 Chrome一直使用到34版,而Safari直到10.0版。

     

当历史回到初始状态时,您可能会得到null。

     

尽管firefox不会推送初始状态,但您仍然可以通过history.replaceState()调用强制Firefox推送初始状态。

查看链接以获取更多详细信息