2013-02-07 16 views
5

ho cercato di inserire questo codice nella console del browser:vincolante evento popstate non funziona

window.onpopstate = function() {alert(1);} 

quindi fare clic sul pulsante Indietro. Nessun avviso è stato mostrato. Sto facendo qualcosa di sbagliato? O non è consentito legare l'evento popstate a una pagina dalla console?

Utilizzando Chrome 24 e Firefox 18

risposta

10

Digitare questo nella console

window.onpopstate = function() {alert(1);}; history.pushState({}, ''); 

quindi fare clic sul pulsante Indietro.

+0

si può spiegare il motivo per cui la parte aggiunta history.pushState()? – Phuein

+1

@Photo in history.pushState() sta premendo l'URL di una nuova cronologia. Il browser non si cura se questo è un URL valido e non ricarica la pagina utilizzando il nuovo URL. Poiché il nuovo URL fornito è vuoto, l'URL nella barra degli indirizzi non cambia, ma quando si fa clic sul pulsante Indietro viene attivato l'avviso. –

3

ho preferiscono aggiungere l'ascoltatore popstate come segue, in modo da evitare la sovrascrittura di ciò che è già in window.onpopstate:

window.addEventListener('popstate', function(){alert(1);});