Risposte:
Se ricordo bene, window.location.reload()ricarica la pagina corrente con i dati POST, mentre window.location.href=window.location.hrefnon include i dati POST.
Come notato da @ W3Max nei commenti qui sotto, window.location.href=window.location.hrefnon ricaricherà la pagina se c'è un ancoraggio (#) nell'URL - Devi usarewindow.location.reload() . In questo caso .
Inoltre, come notato da @Mic di seguito, window.location.reload()prende un argomento aggiuntivo in skipCachemodo che con l'utilizzo window.location.reload(true)del browser salti la cache e ricarichi la pagina dal server. window.location.reload(false)farà il contrario e, se possibile, caricherà la pagina dalla cache.
Se dici che window.location.reload(true)il browser salterà la cache e ricaricherà la pagina dal server.window.location.reload(false)farà il contrario.
Nota: defaultvalore per window.location.reload()èfalse
window.location.href = window.location.hreffatto il trucco.
location.reload()o location.reload(false). Per eseguire un aggiornamento completo della pagina, utilizzare location.reload(true).
La differenza è quella
window.location = document.URL;
non ricaricherà la pagina se è presente un hash (#) nell'URL (con o senza qualcosa dopo), mentre
window.location.reload();
ricaricherà la pagina.
location.href = location.hrefper scontato, ma ho appena notato quel comportamento esatto e sono venuto a SO per spargere la voce. Basta usare location.reload()invece.
window.location.replace(window.location.pathname);
Se aggiungi il valore booleano true alla ricarica
window.location.reload(true)verrà caricato dal server.
Non è chiaro quanto sia supportato questo booleano, W3Org menziona che NS lo supportava
Ci potrebbe essere una differenza tra il contenuto di window.location.href e document.URL - lì almeno usato per essere una differenza tra location.href e non standard e obsoleto document.location che ha avuto a che fare con il reindirizzamento, ma che è davvero l'ultimo millennio.
A scopo di documentazione, userei window.location.reload () perché è quello che vuoi fare.
Sono venuto su questa domanda alla ricerca di alcuni comportamenti aberranti in IE, in particolare IE9, non ha verificato le versioni precedenti. Sembra
window.location.reload();
si traduce in un aggiornamento che oscura l'intero schermo per un secondo, dove as
window.location = document.URL;
aggiorna la pagina molto più rapidamente, quasi impercettibilmente.
Facendo un po 'più di ricerca e qualche sperimentazione con il violinista, sembra che window.location.reload()bypasserà la cache e ricaricherà dal server indipendentemente dal fatto che passi il booleano con esso o meno, questo include ottenere tutti i tuoi asset (immagini, script, fogli di stile, ecc.) di nuovo. Quindi, se vuoi solo che la pagina aggiorni l'HTML, window.location = document.URLrestituirà molto più rapidamente e con meno traffico.
Una differenza nel comportamento tra i browser è che quando IE9 utilizza il metodo di ricarica, cancella la pagina visibile e sembra che la ricostruisca da zero, dove FF e Chrome aspettano di ottenere i nuovi asset e ricostruirli se diversi.
Una differenza in Firefox (12.0) è che su una pagina renderizzata da un POST, reload () farà apparire un avviso e farà un nuovo post, mentre un'assegnazione URL farà un GET.
Google Chrome fa un GET per entrambi.
Utilizzando JSF, sto riscontrando il problema con l'aggiornamento dopo la scadenza della sessione: PrimeFaces ViewExpiredException dopo il ricaricamento della pagina e con alcune indagini ho trovato una differenza in FireFox:
La chiamata window.location.reload()funziona come facendo clic sull'icona di aggiornamento su FF, aggiunge la linea
Cache-Control max-age=0
mentre l'impostazione window.location.hreffunziona come premendo INVIO nella riga dell'URL, non invia quella riga.
Sebbene entrambi vengano inviati come GET, il primo (ricaricare) sta ripristinando i dati precedenti e l'applicazione si trova in uno stato incoerente.
dalla mia esperienza di circa 3 anni, non sono riuscito a trovare alcuna differenza ...
modifica: sì, come ha detto uno di questi, passare solo un parametro booleano a window.location.reload () è la differenza. se passi true , il browser carica una nuova pagina, ma se false , viene caricata la versione della cache ...
Nel nostro caso vogliamo solo ricaricare la pagina in visualizzazione Web e per alcuni motivi non siamo riusciti a scoprire perché! Proviamo quasi tutte le soluzioni che sono state sul web, ma bloccate senza ricaricare usando location.reload () o soluzioni alternative come window.location.reload (), location.reload (true), ...!
Ecco la nostra soluzione semplice:
Basta usare un tag <a> con il valore di attribuzione "href" vuoto come questo:
< a href="" ...>Click Me</a>
(in alcuni casi è necessario utilizzare "return true" al clic del target per attivare la ricarica)
Per ulteriori informazioni, consulta questa domanda: un href vuoto è valido?
window.location.href, questo mi ha salvato la vita in webview da Android 5.1. La pagina non si ricarica con location.reload () in questa versione da Android.