2010-01-05 4 views
14

Quando l'utente passa alla cronologia 1 ... come lo si rileva? E poi, allerta "l'utente ha fatto clic indietro!"Come rilevare se l'utente ha fatto clic sul pulsante "Indietro"

Utilizzando lega (e jQuery preferibilmente)

+3

Alex, è appena chiesto una domanda simile a http://stackoverflow.com/questions/2008765/in-javascript-perferably-jquery-how-do-i-add-qualcosa-al-url-when-the-user Non spam. –

risposta

20

genere non è possibile (restrizione di sicurezza del browser). Puoi capire se l'utente si allontana dalla pagina (onbeforeunload, onunload fire) ma non puoi dire dove sono andati se non hai impostato la tua pagina per permetterlo.

HTML5 introduce l'API di cronologia HTML5; nei browser conformi, l'evento onpopstate si attiva se l'utente torna a una "pagina" precedente sul tuo sito.

+0

Che dire di questo? http://stackoverflow.com/questions/10462511/is-there-a-way-using-jquery-to-detect-the-back-button-being-pressed-cross-browse –

+1

Puoi costruire pagine in questo modo che il colpire indietro è rilevabile, ma l'unico modo per sapere dove sono andati è se si trovasse a navigare in un'altra pagina del tuo sito (dove controlli il JavaScript). Come costruire un tale scenario? Quando l'utente visita "PageA.htm", li invia immediatamente a "PageB.htm" e se caricano di nuovo "PaginaA.htm", è possibile "indovinare" che ha premuto "Indietro". – EricLaw

6

prova:

window.onbeforeunload = function (evt) { 
    var message = 'Are you sure you want to leave?'; 
    if (typeof evt == 'undefined') { 
    evt = window.event; 
    } 
    if (evt) { 
    evt.returnValue = message; 
    } 
    return message; 
} 
+0

OnBeforeUnload verrà attivato anche se l'utente si sposta su un altro sito. – EricLaw

+0

c'è un modo per non visualizzare il messaggio di avviso? –

2
window.onpopstate=function() 
{ 
    alert("Back/Forward clicked!"); 
} 
+5

Questo non si attiva se visiti ** un'altra ** pagina e poi ritorni in questa pagina. – Pacerier

-2

Nella pagina che si sta guardando, è possibile aggiungere questo pezzo di codice all'evento onLoad per spostarli di nuovo nella pagina erano su.

if(history.length>0)history.go(+1) 

Se si desidera che l'avviso quindi rendono

if(history.length>0)alert("the user clicked back!") 
+0

Non funzionerà per siti Web a pagina singola. – ShrekOverflow

+0

Non funziona per niente. 'history.length> 0' ti darà la verità anche quando è una pagina nuova di zecca. Ti dà [tutta la lunghezza della storia] (http://stackoverflow.com/a/9757655/632951) ** includendo ** le pagine avanti e indietro. – Pacerier

0

seguito sono riportati i passaggi per individuare tasto back clicca

  1. Registra un evento di pressione mouse sul corpo $('body').on('mousedown' ,'on all li');

    2. Ora imposta una variabile quando si verifica un evento falso.

    3.Controllare questa variabile quando la posizione cambia.

SE chages variabile su TRUE significa elenco cliked altrimenti BackButton

Questo lavoro nel mio caso d'uso soluzione .Questo può aiuta gli altri perché dipende da App Design