我正在使用AJAX刷新一些页面,因此使用以下代码更新历史记录 -
/** Update the page history */
var pushState_object = {
ajax_string: ajax_string,
security: security,
};
window.history.pushState(pushState_object, title, permalink);
然后我在页面加载时调用这个onPopState函数 -
window.onpopstate = function(e){
if(window.history.state !== null){
initiate_load_updated_page(window.history.state.ajax_string, window.history.state.security, 0)
}
}
虽然从通过AJAX生成内容的页面转到以常规方式加载的页面时使用后退按钮,但我遇到了一些问题。 URL将更改,但页面将不会重新加载。如我所料,再次单击返回会将我带到页面,然后继续正常工作 - 这只是后退按钮不起作用的一种情况。
这里的任何建议都将不胜感激。
答案 0 :(得分:17)
初始状态没有可用的.state
属性,因为您没有使用.pushState
添加此类数据(按照您的描述以正常方式加载)。
但您知道的是,如果没有.state
,则必须是原始状态,因此您可以使用else
块,如下所示:http://jsfiddle.net/pimvdb/CCgDn/1/。
最后,您可以使用e.state
。
window.onpopstate = function(e){
if(e.state !== null) { // state data available
// load the page using state data
initiate_load_updated_page(e.state.ajax_string, window.history.state.security, 0);
} else { // no state data available
// load initial page which was there at first page load
}
}