我正在使用AJAX刷新页面上的内容,因此尝试使用HTML5中的历史API。除了Google Chrome之外,我在所有浏览器中都能正常运行。以下代码 -
/**
* Reloads the ajax content if the history.state is not null
*/
window.onpopstate = function(e){
if(e.state !== null){
initiate_load_updated_page(window.history.state.ajax_string, window.history.state.security, 0)
}
}
产生此错误 -
Uncaught TypeError: Cannot read property 'ajax_string' of undefined
以下是我用于pushState()
-
/** Update the page history */
if(window.history.replaceState){ // Check for HTML5 support
if(update_state !== 0){
var object = {
ajax_string: ajax_string,
security: security,
};
window.history.pushState(object, title, permalink);
}
}
我在其他地方读过谷歌Chrome会两次触发onPopState()
事件,但我不确定这是否是这里的问题,如果是,请问如何解决。
感谢。
答案 0 :(得分:2)
在popstate
处理程序中,您应该使用e.state
而不是window.history.state
:
if(e.state !== null){
initiate_load_updated_page(e.state.ajax_string, e.state.security, 0)
}