Как мне заставить IE9 работать с historyapi в этом приложении symfony, используя history.js, modernizr и / или shim?

У меня есть приложение, основанное на symfony2, и я включаю в него как shim, так и modernizr, а также history.js.

Мое приложение отлично работает в FF, но когда я запускаю его в IE, оно жалуется на метод pushState.

SCRIPT438: Объект не поддерживает свойство или метод "pushState" 2109519_appHistory_9.js, строка 114, символ 9

Вот пример того, что я делаю:

$(document).ready(function () {

    "use strict";  //makes this entire object strict
    app.hist.init();  //init any code on this page
});

//Self-Executing Anonymous Function (Public & Private)
(function (hist, $, undefined) {

    app.hist.init = function () {

        if(history){
            console.log('we have history');
            console.log(history);
        } else  if(Modernizr.history){
            console.log('Modernizr.history');
            console.log(Modernizr.history);
        } else {
            console.log('no modernizr history');
        }

        app.hist.title = document.title;
        app.hist.url = document.URL;

        window.addEventListener("popstate", function(e) { // or jquery $(window).on("popstate", function (e) {
            app.hist.popState(e);
        });
    };

    // Bind to StateChange Event
    app.hist.bindHistory = function(){

        History.Adapter.bind(window,'statechange',function(){ // Note: We are using statechange instead of popstate

            app.hist.state = History.getState();
        });
    };

    app.hist.add = function () {

        app.hist.title = document.title;
        history.pushState( app.hist.state, app.hist.title, app.hist.url);  
    };

}(window.app.hist = window.app.hist || {}, jQuery));

console.logs дают это

SCRIPT5007: Object expected  0438675_head_1.js, line 1 character 3164

LOG: we have history  

LOG: [object History]  

SCRIPT438: Object doesn't support property or method 'pushState'  2109519_appHistory_9.js, line 114 character 9

Обратите внимание, я поместил туда метод привязки. Я нашел это здесь: используя history.js с IE9
Здесь я думаю, что мне нужна помощь, потому что в этом посте не было достаточно информации, чтобы я мог понять, как правильно связать "все", что необходимо, так что это будет работать в полном объеме, например, не только его состояние, но и заголовок, и URL, я даже не знаю, как получить заголовок и URL, используя HistoryЯ не вижу никаких методов для этого, я вижу только History.getState()Я думаю, что должно быть History.getTitle() где-то https://github.com/browserstate/history.js/ тоже не должно быть?

1) Нужно ли привязывать historyjs как это к IE или что-то?

2) Посмотрите, что связывает метод, и скажите мне, если я должен использовать его в init, как я подозреваю

3) Пожалуйста, помогите мне выяснить, что мне нужно внутри этого метода связывания, чтобы получить эту границу правильно.

РЕДАКТИРОВАТЬ: ОК, я вижу одну проблему, History.getState(), но это объект со всеми 3, состояние, название, URL, WTF? Хорошо, тогда у меня есть доступ к моим материалам здесь..

Так что я думаю, что bindHIstory будет выглядеть больше так? app.hist.bindHistory = function(){

    History.Adapter.bind(window,'statechange',function(){ // Note: We are using statechange instead of popstate

        var data = History.getState();
        app.hist.state = data.state;
        app.hist.title = data.title;
        app.hist.state = data.url;
    });
};

Итак, все же, те же 3 вопроса выше, пожалуйста.

0 ответов

Другие вопросы по тегам