Domanda

Sto cercando di gestire l'utilizzo degli hash URL in jQuery per controllare la cronologia in Ajax e rendere i collegamenti/pagine contrassegnabili nei segnalibri.Ho provato quasi tutti i plug-in disponibili e non riesco a farne funzionare correttamente nessuno, quindi in realtà non ho alcun esempio di codice.Ma sono aperto a qualsiasi suggerimento, informazione, tutorial, ecc.

La differenza su una delle pagine in cui sto cercando di incorporarlo è che ho una pagina splash/caricamento guidata dall'animazione jQuery, che è anche la stessa pagina in cui verrà caricato tutto il contenuto.

..e su questo collegamento, voglio bypassare tutta l'animazione splash/caricamento e caricare direttamente il contenuto in base ai valori hash/stringa (in questo caso, #home).

È da un po' che cerco di capirlo, ogni aiuto è molto apprezzato, grazie!

È stato utile?

Soluzione

Allora, con cosa hai problemi? Impostare il tag hash o gestire la modifica dell'hash?

Naturalmente impostare gli hash è semplicemente una questione di mettere gli hash nei collegamenti, ad esempio <a href="www.voidsync.com/2010/#page">Link</a> ma suppongo che non sia un tuo problema.

Per fare effettivamente qualcosa con l'hash, è necessario disporre di una funzione di ascolto che controlla, ad esempio, ogni 100 ms l'hash è cambiato e agisce di conseguenza. Una semplice funzione potrebbe andare così:

$(function() {
    var current_hash = false;
    setInterval(function() {
        if(window.location.hash != current_hash) {
            current_hash = window.location.hash;
            $('#content').load("content.php?page="+current_hash);
        }        
    }, 100);    
});

Quella funzione (non testata) verificherebbe ogni 100 ms se l'hash è cambiato e, in caso affermativo, aggiorna la pagina tramite Ajax.

Questa funzione funziona anche al caricamento della pagina, quindi se l'utente atterra sulla pagina con un link come www.voidsync.com/2010/#images, la funzione caricherà automaticamente la pagina "immagini". Quindi la cronologia e i segnalibri funzionano.

Spero che sia d'aiuto, chiedi solo se intendevi qualcos'altro.

Altri suggerimenti

Sulla base della risposta di Tatu, ho appena cambiato alcune cose per farlo funzionare per me.Mantiene una cronologia, quindi i pulsanti avanti e indietro funzionano bene.Ecco cosa ho,

$(function() {
var current_hash = false;
setInterval(function() {
    if(window.location.hash != current_hash) {
        current_hash = window.location.hash;
            if(current_hash=='#home'){
                var month = '9';
                var year ='2011';       
                $.ajax({
                    type: "POST",
                    url: "/home.php",
                    data: "data+here",
                    success: function(msg){
                        $('#div').html(msg);
                    }       
                });                     
            }
            else if(current_hash=='#edit'){
                $.ajax({
                    type: "POST",
                    url: "/edit.php",
                    data: "data+here",
                    success: function(msg){
                        $('#div').html(msg);
                    }       
                });             
            }
    }        
}, 100);

Quindi assegna semplicemente alcuni hash all'attributo links href;

                    <li><a href="#home">Home Page</a></li>
                <li><a href="#edit">Edit Page</a></li>

Non è una riscrittura completa, semplicemente sono state aggiunte alcune istruzioni if ​​alla stessa cosa, ma potrebbe aiutare qualcuno.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top