Dovrei usare window.navigate o document.location in JavaScript?


177

Qual è il metodo preferito da utilizzare per modificare la posizione della pagina Web corrente utilizzando JavaScript? Ho visto sia window.navigate che document.location utilizzati. Ci sono differenze nel comportamento? Ci sono differenze nelle implementazioni del browser?

Risposte:


220
window.location.href = 'URL';

è l'implementazione standard per modificare la posizione della finestra corrente.


22
Hai un riferimento per indicare che window.location.href è l'implementazione standard? E quello standard si applica ugualmente bene a tutti i browser? Sicuramente sembri ben informato e oltre 15 voti (più la risposta accettata) contribuiscono a renderlo più autorevole, anche se penso che sarebbe meglio consultare la documentazione dei team di sviluppo del browser per sostenere il reclamo.
Goyuix,

6
@Goyuix, probabilmente è più preciso dire che window.location.hrefè l'implementazione completa, ma window.locationrealizza la stessa cosa. Consulta docs.sun.com/source/816-6408-10/location.htm : "Se assegni una stringa alla locationproprietà di un oggetto, JavaScript crea un locationoggetto e assegna quella stringa alla sua hrefproprietà."
James Skidmore,

3
Sembra che questi ragazzi abbiano deciso che è una preferenza personale: developer.mozilla.org/Talk:en/DOM/window.location . Oppure vedi l'esempio in fondo, usano solo window.locationma ciò non indica necessariamente in entrambi i modi: developer.mozilla.org/en/window.location .
James Skidmore,

1
Attualmente sto usando questo per lo sviluppo Android. Ho problemi a ottenere il reindirizzamento della pagina da JS nel browser predefinito di Androids. Ho provato window.location.href = 'URL';e anche window.location.assign('URL');il metodo progettato per ricaricare una nuova pagina. Maggiori informazioni possono essere trovate su w3schools.com/jsref/obj_location.asp
philipp

3
window.navigateè un metodo proprietario, utilizzato da Internet Explorer (sono sicuro che altri browser lo imitano per compatibilità, Chrome no). document.locationo window.locationsono oggetti standard (vedere le varie specifiche HTML / HTML5 / DOM). document.location = someURL(o window.location = someURL) è probabilmente supportato a causa del codice legacy. Il modo giusto per farlo è document.location.href = someURL, o forse document.location.assign(someURL).
PhistucK,

11

window.navigate non supportato in alcuni browser

Nello script java ci sono molti modi per il reindirizzamento, vedi il codice e la spiegazione di seguito

window.location.href = "http://krishna.developerstips.com/";
window.location = "http://developerstips.com/";
window.location.replace("http://developerstips.com/");
window.location.assign("http://work.developerstips.com/");

window.location.href carica la pagina dalla cache del browser e non invia sempre la richiesta al server. Quindi, se hai una vecchia versione della pagina disponibile nella cache, verrà reindirizzata a lì invece di caricare una nuova pagina dal server.

metodo window.location.assign () per il reindirizzamento se si desidera consentire all'utente di utilizzare il pulsante Indietro per tornare al documento originale.

metodo window.location.replace () se si desidera reindirizzare a una nuova pagina e non consentire all'utente di navigare alla pagina originale utilizzando il pulsante Indietro.


7

document.locatio n è una proprietà stringa di sola lettura (obsoleta ma ancora presente), sostituita da document.url .


6

window.location influisce anche sul frame,

la migliore forma che ho trovato è:

parent.window.location.href

E il peggio è:

parent.document.URL 

Ho fatto un massiccio test del browser e alcuni IE rari con diversi plugin non sono definiti con il secondo modulo.


Secondo quella logica, top.window.location.href non sarebbe ancora meglio?
Orwellophile,

6

window.locationinfluenzerà il target del tuo browser. document.location interesserà solo il tuo browser e frame / iframe.


4

window.navigateNON è supportato in alcuni browser, quindi bisogna evitarlo. Qualsiasi altro metodo che utilizza la proprietà location è l'approccio più affidabile e coerente


2

Vorrei andare con window.location = "http://...";. Ho codificato JavaScript per più browser per alcuni anni e non ho mai avuto problemi con questo approccio.

window.navigatee mi window.location.hrefsembra un po 'strano.


13
window.location funziona, ma è tecnicamente errato perché "location" è un oggetto.
James Skidmore,

16
Ma tutto in JavaScript è un oggetto :)
cllpse

1
Mentre praticamente tutto è un oggetto in JavaScript, l'assegnazione di una stringa a un oggetto generalmente non imposta il valore su una delle sue proprietà (come fanno window.location o document.location con la loro proprietà href), ma sostituisce invece quell'oggetto con un corda. In questo caso, è stata aggiunta una stranezza del browser per essere compatibile con implementazioni (eccentriche) esistenti e contenuti legacy (e non così legacy).
PhistucK,

1

Non c'è davvero alcuna differenza; ci sono circa 5 diversi metodi per farlo. Tuttavia, quelli che vedo più spesso lo sono document.locatione window.locationperché sono supportati da tutti i principali browser. (Personalmente non l'ho mai visto window.navigateusato nel codice di produzione, quindi forse non ha un ottimo supporto?)


document.location non funziona in tutti i browser. window.location lo fa.
Philippe Leybaert,

2
Firefox non supporta window.navigate
Andrew Harry,


-5

Puoi spostare la tua pagina usando

window.location.href =Url;

3
Questo in realtà non aggiunge più informazioni di quelle accettate e moltiplica la risposta votata ...
Stuart Siegler

3
Potresti anche andare oltre e sostenere che hai semplicemente plagiato la risposta accettata
Liam
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.