onPopState()仅在Google Chrome中引发错误

时间:2011-10-26 13:57:05

标签: javascript html5 google-chrome

我正在使用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()事件,但我不确定这是否是这里的问题,如果是,请问如何解决。

感谢。

1 个答案:

答案 0 :(得分:2)

popstate处理程序中,您应该使用e.state而不是window.history.state

if(e.state !== null){
    initiate_load_updated_page(e.state.ajax_string, e.state.security, 0)
}