Ho una semplice pagina web, vale a dire:Come attivare Firefox per attivare l'evento popstate quando si torna da una pagina su un dominio diverso?
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>History hacks</title>
<script>
window.onpopstate = function (e) {
alert("location: " + document.location + ", state: " + JSON.stringify(e.state));
}
window.onload = function (e) {
alert('page loaded');
}
</script>
</head>
<body>
<p> <a href="http://www.yahoo.com">Yahoo</a> <a href="#part1">Part 1</a></p>
</body>
</html>
Ora ci sono un certo numero di differenze per quanto riguarda come Chrome e Firefox attivano l'evento popstate (mi vengono i brividi a pensare cosa sto contro quando mi giro a test IE), ma uno che mi dà problemi qui è che Chrome attiverà un evento popstate ogni volta che clicco su uno di questi due link, e poi di nuovo quando premo il pulsante Indietro. Firefox attiverà l'evento per il collegamento che modifica la parte hash (solo la prima volta se il collegamento hash è lo stesso) e non lo attiverà affatto se faccio clic sul collegamento Yahoo e poi sul pulsante Indietro.
Quindi c'è un modo che posso dire in Firefox che un utente ha appena fatto clic indietro e atterrato sulla mia pagina da un sito completamente diverso su un dominio diverso? C'è un altro evento che potrebbe funzionare per questo scopo in Firefox? (L'evento load non viene attivato neanche quando torno da yahoo.com.)
Questa è una grande risposta per spiegare come fare l'API storia del lavoro la stessa piattaforma croce, ma in realtà non risponde OP di domanda: ** come sapere se l'utente ha effettivamente fatto clic su "indietro" per finire nella pagina. ** Utilizzando il tuo esempio, puoi dire che l'utente ha fatto clic su Chrome e Safari perché mytag non sarà null nel gestore onpopstate . Tuttavia, in firefox, onpopstate non viene chiamato così non sembra esserci alcun modo per determinare se l'utente sta tornando alla pagina o se si tratta di una prima visita. Quindi c'è davvero un modo per distinguerlo in Firefox? – Karmacon
@Karma: se disabiliti il bfcache (vedi l'ultima parte della mia risposta), Firefox dovrebbe comportarsi in modo simile a Chrome. Leggete la risposta di Boris Zbarsky per una buona illustrazione del perché dovreste preferire la cache della pagina di Firefox al comportamento di Chrome. –
Grazie @Sean Hogan. Dopo una rilettura su Firefox bfCaching, mi sono reso conto che non funziona sul mio sito perché usiamo https. Firefox aggiorna sempre la pagina. Immagino che non ci sia nulla che io possa fare al riguardo. – Karmacon