Qualcuno può dirmi la differenza tra window.location.hrefe top.location.href?
E anche dove usare quale.
E quale sarà migliore quando si reindirizza dopo una chiamata ajax in mvc?
Qualcuno può dirmi la differenza tra window.location.hrefe top.location.href?
E anche dove usare quale.
E quale sarà migliore quando si reindirizza dopo una chiamata ajax in mvc?
Risposte:
window.location.href restituisce la posizione della pagina corrente.
top.location.href(che è un alias di window.top.location.href) restituisce la posizione della finestra più in alto nella gerarchia della finestra. Se una finestra non ha un genitore, topè un riferimento a se stessa (in altre parole, window=== window.top).
topè utile sia quando hai a che fare con i frame sia quando hai a che fare con finestre che sono state aperte da altre pagine. Ad esempio, se hai una pagina chiamata test.htmlcon il seguente script:
var newWin=window.open('about:blank','test','width=100,height=100');
newWin.document.write('<script>alert(top.location.href);</script>');
L'avviso risultante avrà il percorso completo per test.html - non about: blank, che è ciò che window.location.hrefverrebbe restituito.
Per rispondere alla tua domanda sul reindirizzamento, vai con window.location.assign(url);
top.location.hrefun alias di window.top.location.href? Ho pensato che una cosiddetta variabile "globale" fosse in realtà una scorciatoia per una proprietà di windowmentre alias implica che sia una variabile indipendente che punta allo stesso posto.
topl'oggetto ha più senso all'interno dei frame. All'interno di un frame, si windowriferisce alla finestra del frame corrente mentre si topriferisce alla finestra più esterna che contiene i frame. Così:
window.location.href = 'somepage.html';significa caricare somepage.htmlall'interno del telaio.
top.location.href = 'somepage.html';significa caricare somepage.htmlnella finestra principale del browser.
topsi riferisce all'oggetto finestra che contiene tutti i frame correnti (padre del resto delle finestre). windowè la corrente window.
http://www.howtocreate.co.uk/tutorials/javascript/browserinspecific
quindi top.location.hrefpuò contenere il collegamento alla pagina "master" contenente tutti i frame, mentre window.location.hrefcontiene solo il collegamento alla pagina "corrente".
Il primo aggiunge un elemento alla tua cronologia in quanto puoi (o dovresti essere in grado di) fare clic su "Indietro" e tornare alla pagina corrente.
Il secondo sostituisce l'elemento della cronologia corrente in modo da non poter tornare indietro.
Vedi window.location:
assign(url): Carica il documento all'URL fornito.
replace(url): Sostituisci il documento corrente con quello nell'URL fornito. La differenza rispetto al assign()metodo è che dopo aver utilizzato replace()la pagina corrente non verrà salvata nella cronologia della sessione, il che significa che l'utente non sarà in grado di utilizzare il pulsante Indietro per raggiungerla.
window.location.href = url;
è favorito rispetto a:
window.location = url;