Domanda

È possibile rilevare quando l'utente fa clic sul pulsante Indietro del browser?

Ho un'applicazione Ajax e se riesco a rilevare quando l'utente fa clic sul pulsante Indietro posso visualizzare i dati appropriati

Qualsiasi soluzione che utilizzi PHP, è preferibile JavaScript.Diavolo, una soluzione in qualsiasi lingua va bene, ho solo bisogno di qualcosa che possa tradurre in PHP/JavaScript

Modificare:Taglia e incolla dal basso:

Wow, tutte risposte eccellenti.Mi piacerebbe usare Yahoo ma utilizzo già le librerie Prototype e Scriptaculous e non voglio aggiungere altre librerie Ajax.Ma usa iFrame che mi dà un buon suggerimento per scrivere il mio codice.

È stato utile?

Soluzione

Esistono diversi modi per farlo, anche se alcuni funzionano solo con determinati browser.Uno che conosco fin dall'inizio è quello di incorporare un piccolo iframe quasi invisibile nella pagina.Quando l'utente preme il pulsante Indietro, l'iframe viene riportato indietro e puoi rilevare e quindi aggiornare la tua pagina. Qui è un'altra soluzione.

Potresti anche voler visualizzare il codice sorgente su qualcosa come Gmail e vedere come lo fanno.

Ecco una biblioteca per il genere di cose che stai cercando, comunque

Altri suggerimenti

Uno dei miei framework preferiti per fare questo è Gestore della cronologia del browser di Yahoo!.Registi gli eventi e ti richiama quando l'utente ritorna in quello stato.E se vuoi sapere come funziona, ecco un divertente post sul blog sulle decisioni di Yahoo!fatto quando lo si progetta.

Non c'è modo di sapere quando un utente fa clic sul pulsante Indietro o preme il tasto Backspace per tornare indietro nel browser, tuttavia ci sono altri eventi che si verificano in un determinato ordine e che sono rilevabili.Questo esempio javascript ha un metodo ragionevolmente buono per rilevare i comandi indietro:

Il modo tradizionale, tuttavia, consiste nel monitorare il movimento dell'utente attraverso il tuo sito utilizzando cookie o pagine di riferimento.Quando l'utente va alla pagina A, poi alla pagina B, quindi appare di nuovo alla pagina A (specialmente quando non c'è collegamento da B ad A), allora sai che è tornato indietro: A può rilevarlo e reindirizzarlo o in altro modo.

La Yahoo User Interface Library, la mia libreria JS lato client preferita, ha un eccellente Gestore della cronologia del browser fa esattamente quello che stai chiedendo.

Il modo più semplice per verificare se sei tornato a una versione memorizzata nella cache della tua pagina, che deve essere aggiornata, è aggiungere un elemento di input nascosto che verrà memorizzato nella cache e puoi verificare se ha ancora il suo valore predefinito.

Basta inserire quanto segue all'interno del tag del corpo.Il mio lo metto subito prima del tag finale.

<input type="hidden" id="needs-refresh" value="no">
<script>
    onload=function(){
        var e = document.getElementById("needs-refresh");
        if (e.value === "yes")
            location.reload();
        e.value = "yes";
    }
</script>

Ho impostato una variabile $wasPosted In $_SESSION con valore false.

Tutti i miei post passano tramite lo stesso file php e set $wasPosted A true.

Tutto header(location:) le richieste sono precedute dall'impostazione $wasPosted A true.

Se $wasPosted È false quindi la pagina è stata caricata dopo aver utilizzato i pulsanti Indietro o Avanti.

Il toolkit dojo ha funzionalità per gestire questo problema in Javascript.Non penso che ci sia un buon modo per gestirlo in puro PHP.

Ecco la pagina dei documenti che hanno: http://dojotoolkit.org/book/dojo-book-0-9/part-3-programmatic-dijit-and-dojo/back-button-undo

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