onPopState () выдает ошибку только в Google Chrome - PullRequest
0 голосов
/ 26 октября 2011

Я использую AJAX для обновления контента на страницах и поэтому пытаюсь использовать API истории в HTML5.У меня это работает нормально во всех браузерах, кроме 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);
    }
}

У меня естьВ другом месте читайте, что Google Chrome дважды запускает событие onPopState(), но я не уверен, является ли это проблемой здесь, и, если она есть, как ее решить.

Спасибо.

1 Ответ

2 голосов
/ 27 октября 2011

В вашем обработчике popstate вы должны использовать e.state, а не window.history.state:

if(e.state !== null){
    initiate_load_updated_page(e.state.ajax_string, e.state.security, 0)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...