Question

J'ai un petit problème à expérimenter l'événement history.pushstate.Je l'ai configuré pour que l'URL de la page soit l'URL réelle de la page chargée via AJAX et cela fonctionne très bien.

J'ai compris qu'il fallait créer automatiquement un historique, en chargeant les pages précédemment chargées.Malheureusement, le chapeau ne se produit pas et lorsque je clique en arrière ou en avant, l'URL change mais pas la page. Pouvez-vous m'aider?Voici mon code simplifié:

    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(); 

    });
Était-ce utile?

La solution

J'ai compris, je viens d'ajouter:

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

à la fin de la page

Autres conseils

J'ai le même problème, mais je l'ai résolu.C'est très simple

exemple de code:

window.addEventListener("popstate", function(e) {
    window.location.href = location.href;
});

Oui, Safari iOS a pas mal de bugs avec l'API HTML5 History - en fait, tous les navigateurs HTML5 fonctionnent différemment les uns des autres, donc la fonctionnalité n'est pas vraiment ce standard pour le moment.

Il existe History.js qui résout les problèmes de compatibilité entre navigateurs et fournit également unHTML4 de secours de hachage si vous le souhaitez. Vous pouvez également vous référer à la section "Notes sur la compatibilité" pour obtenir des informations sur tous les bogues de navigateur qu'il corrige.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top