IE8 bug в History.js (кроссбраузерное решение для ajax-хистори)

Есть ли тут такие люди, кто использовал сие?:)
В IE8ом (как минимум) наблюдается баг: при клике на ссылку (в обработчике которой указано History.pushState) statechange не срабатывает, а window.location меняется (в IE8ом меняется #anchor) — причем только один раз. Если же обновить страницу, то событие statechange срабатывает.

Пробовал при клике на ссылку так же делать History.Adapter.trigger(window, «anchorchange») — помогает только при первом клике на ссылку. Все дальнейшие клики упорно не обрабатываются (в плоть до того, что уже даже не меняется сам #anchor).

Кроме того, если перевести IE в «Режим соответствия стандартам IE8/7», то плагин начинает работать нормально.

Примерный код:
(function(window,undefined){
    // history module
    var History = window.History; // do not forget to use "H", instead of "h"
    
    if ( !History.enabled ) {
        return false;
    }
    
    // Note: We are using statechange instead of popstate
    History.Adapter.bind(window,'statechange',function(){
        // we are using History.getState() instead of event.state
        var State = History.getState();
        var url = State.url;
        // History.log(State.data, State.title, State.url);
        loadPage(url);
    });
})(window);


$(document).ready(function() {
    $("#bottom_nav a").click(function(event){
        var url = $(this).attr("href") + '?format=html';
        
        History.pushState(null, null, url);
        event.preventDefault();
        
        return false;
    });
});
  • Вопрос задан
  • 4203 просмотра
Решения вопроса 1
Fr3nzy
@Fr3nzy Автор вопроса
Сам напишу, сам отвечу :) достаточно было установить хотя бы <!DOCTYPE HTML>.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы