抱歉我的英语不好:(
我尝试了History.js
它对我有用,我可以在使用后退/前进浏览器按钮时推送新状态并更新内容但我对初始状态有疑问。
首先,当第一页被调用时,我替换状态,将其初始化为:
History.replaceState({state: initialDataToStore}, document.title, document.location.href);
当我点击一个链接时,我推送一个状态,然后使用像这样的ajax请求更新 div #content :
$('body').on('click', '.js-nav',function(event) {
var url = $(this).prop('href');
History.pushState(state, 'title', url);
loadContent(state, url);
event.preventDefault();
});
当我使用后退/前进按钮时,' statechange' 事件被触发,因此我调用loadContent函数来更新 div #content 像这样:
History.Adapter.bind(window,'statechange',function(){
var State = History.getState();
url = State.url;
loadContent(State.data, url);
});
loadContent 功能:
function loadContent(state, url){
$.ajax({
url: url,
type: 'GET'
})
.done(function(data) {
$('#content').empty().append(data);
})
.fail(function() {
console.log("error");
});
}
我遇到第一个已加载页面的问题,如果浏览器历史记录中已有上一个元素,如下所示:
1- new tab or another page
2- first loaded page (that i force the replaceState)
3- ...
如果我使用浏览器后退按钮返回"新标签页或其他页面" ,则点击前进按钮> "首次加载页面" ,我丢失了所有html "布局" (html,脚本,头部,正文...) ,只显示ajax响应(要附加到 div #content 的内容)。
P.S: 如果我在历史记录"首次加载的页面" "新标签或其他页面" >工作正常,我不会丢失Html布局。
我该怎么做?
由于