我通过AJAX加载页面,最近阅读了history.pushState
和onpopstate
。
我在pushState
中没有得到状态对象参数的全部内容,而MDN上的页面只给出了一个简单的对象作为示例。但我想,嘿,为什么我不使用这个对象存储AJAX响应HTML并在onpopstate
触发时加载?所以我做了这样的事情:
关于XHR状态200/304(AJAX成功):
if (history.pushState) {
var state = {
html: xhr.responseText
};
history.pushState(state, null, url);
}
onpopstate :
window.onpopstate = function(event) {
if(event && event.state) {
someDivInTheDoc.innerHTML = event.state.html;
} else {
location.reload();
}
};
当然,这会加载(旧的)可能已更新的内容,使其类似于当您返回并获取浏览器的缓存时,我想。
在MDN上,它表示该对象在其JSON表示中最多可容纳640k个字符。
那么,状态对象是否意味着这样的事情?或者我应该在历史移动位置时再次强制重新加载/执行AJAX请求?
感谢。