window.history.pushState не возвращается в историю - PullRequest
3 голосов
/ 23 марта 2011

У меня небольшая проблема при экспериментировании с событием history.pushstate. Я настроил его так, чтобы URL-адрес страницы был фактическим URL-адресом страницы, загруженной через AJAX, и это прекрасно работает.

Я понял, что он должен автоматически создавать историю, загружая ранее загруженные страницы. к сожалению, шляпа не происходит, и когда я нажимаю назад вперед, URL меняется, но не страница. Вы можете мне помочь? Вот мой упрощенный код:

    function hijackLinks() {
        $('a').live("click", function (e) {
            e.preventDefault();
            loadPage(e.target.href);    
            direction = $(this).attr('class');        
        });   
    }


    function loadPage(url) {
        if (url === undefined) {
            $('body').load('url', 'header:first,#content,footer', hijackLinks);
        } else {
            $.get(url, function (data) {
                $('body').append(data);
                 window.history.pushState(url, url, url);

                if (direction === "leftnav") {
                   //DO STUFF
                }
                if (direction !== "leftnav") {
                   //DO STUFF
                }

                setTimeout(function () {
                  //DO STUFF
                },1000);
            });
        }
    }
    $(document).ready(function () {
        loadPage(); 

    });

Ответы [ 3 ]

13 голосов
/ 23 марта 2011

Разобрался: D, ну вроде. По крайней мере, это работает:)

Я только что добавил

    window.addEventListener("popstate", function(e) {
    loadPage(location.pathname);
});

до конца страницы:)

2 голосов
/ 24 февраля 2016

У меня такая же проблема, но я ее исправил.Это очень просто

пример кода:

window.addEventListener("popstate", function(e) {
    window.location.href = location.href;
});
1 голос
/ 23 марта 2011

Да, Safari iOS имеет довольно много ошибок с API истории HTML5 - на самом деле, все браузеры HTML5 работают по-разному, поэтому функциональность на самом деле не настолько стандартна.

Есть History.js , которая решает проблемы кросс-браузерной совместимости, а также предоставляет дополнительный запасной вариант хэша HTML4, если хотите.Вы также можете обратиться к разделу «Примечания по совместимости» для получения информации обо всех ошибках браузера, которые он исправляет.

...