Проблема с window.history.pushState в IE

Я использую jQueryUI Auto-complete на своем сайте вместе с window.history.pushState, который изменяет URL-адрес браузера без обновления страницы. Он прекрасно работает на Chrome и Mozilla, но, к сожалению, не работает так, как я хотел, чтобы он работал на Internet Explorer 9. Вот ситуация, используя jQueryUI Auto-complete, я могу искать регионы, округа и почтовые индексы через тег <input /> на моей странице. Затем, если я нажму любой из предложенных результатов автозаполнения, используя window.history.pushState, URL-адрес браузера изменится с www.example.com/sites на www.example.com/sites/selected_region без обновления страницы. Теперь, как я уже сказал, это работает на Chrome и Mozilla, но не работает на IE9, потому что происходит следующее: когда я щелкаю любой из предложенных результатов jQueryUI Auto-complete, он не меняет URL-адрес браузера и не закрывает список предложений. Он определенно не поддерживает window.histoty.pushState. Поэтому я искал и нашел решение, которое могло бы работать с использованием history.js. Я просто следовал инструкциям, чтобы загрузить его на свой сервер и включить файлы history.js, но оказалось, что он конфликтует с другими используемыми файлами .js. Как мне это исправить? Заранее спасибо.

PS: вот как я использую window.history.pushState

$( "#find" ).autocomplete({
minLength: 1,
source: function(request, response) {
            var results = $.ui.autocomplete.filter(locations, request.term);
            response(results.slice(0, 10));
        },
focus: function( event, ui ) {
    $( "#find" ).val( ui.item.value );
    return false;
},
appendTo: "#results",
open: function(){
    var position = $("#results").position(),
                    left = position.left, top = position.top;

            $("#results > ul").css({left: (left + 15) + "px",
                                                    top: (top + 30) + "px", width: (206) + "px" });
},

select: function( event, ui ) {
    $( "#find" ).val( ui.item.value );
    $(":header.title").html(ui.item.value);

    var base = '/stats/';
    var url = base + ui.item.href;
    var label_name = ui.item.value;
    document.title = "Statistics for " + label_name + "| ASI";
    window.history.pushState({"url":url}, document.title, url);
    return false;
}
});

Пожалуйста, не стесняйтесь исправлять меня любым возможным способом. Ваше здоровье.


person Tsukimoto Mitsumasa    schedule 19.09.2012    source источник
comment
Вы можете опубликовать конфликт, который вы получили? вы должны использовать функцию History.pushState() вместо window.history.pushState(), если вы используете плагин History.js   -  person Eru    schedule 19.09.2012
comment
@ Эру, History.pushState() работает так же, как window.history.pushState()? Или какое будет исправление, если я вернусь к тому, что я использовал ранее, просто используя window.history.pushState() и исключив использование history.js, какое будет мое исправление, чтобы оно работало на IE9?   -  person Tsukimoto Mitsumasa    schedule 19.09.2012
comment
IE не поддерживает API истории html5. Вы должны использовать плагин history.js или аналогичный для его поддержки. Работает очень похоже.   -  person Eru    schedule 19.09.2012