Qualcuno può dirmi la differenza tra window.location.href
e 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.href
e 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.html
con 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.href
verrebbe restituito.
Per rispondere alla tua domanda sul reindirizzamento, vai con window.location.assign(url);
top.location.href
un alias di window.top.location.href
? Ho pensato che una cosiddetta variabile "globale" fosse in realtà una scorciatoia per una proprietà di window
mentre alias implica che sia una variabile indipendente che punta allo stesso posto.
top
l'oggetto ha più senso all'interno dei frame. All'interno di un frame, si window
riferisce alla finestra del frame corrente mentre si top
riferisce alla finestra più esterna che contiene i frame. Così:
window.location.href = 'somepage.html';
significa caricare somepage.html
all'interno del telaio.
top.location.href = 'somepage.html';
significa caricare somepage.html
nella finestra principale del browser.
top
si 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.href
può contenere il collegamento alla pagina "master" contenente tutti i frame, mentre window.location.href
contiene 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;