2011-01-27 20 views
43

Ho bisogno di reindirizzare l'utente utilizzando JavaScript. Qual è il metodo preferito?window.open target _self v window.location.href?

window.open("webpage.htm", "_self"); 

o

window.location.href = "webpage.htm"; 
+0

non apre il nuovo finestra? Non sono sicuro in realtà. –

+0

@Gunner, No, lo aprirà nella stessa finestra, da qui il "_self" '... –

+0

se si sostituisce _self con _blank, si aprirà in una nuova finestra – DOK

risposta

53

dubbio il secondo metodo è preferibile perché non si ha l'overhead di un'altra funzione invocazione:

window.location.href = "webpage.htm"; 
+1

Jacob ha fornito una spiegazione migliore di O W Anche Frédéric Hamidi ha aggiunto alla risposta, e vorrei premiare la risposta a tutti e due, ma a quanto pare devo sceglierne una. Poiché Jacob ha risposto per primo, la risposta va a voi. – Junto

+0

Vale la pena notare che quando si utilizza questo metodo, l'uso di un collegamento come '../../ folder/page.aspx? Source = abcd' non funziona. Avevo bisogno di usare l'altro metodo per far funzionare il mio link e anche allora non potevo usare "_self" con esso. – Christine268

+1

Sovraccarico di invocazione funzione? Le chiamate di funzione hanno sicuramente un costo ma non sono sicuro che ciò abbia rilevanza, per una volta mi aspetto che le chiamate di funzione siano efficienti come l'accesso alla proprietà per tutti gli scopi pratici. Su JVM è, con il salto di prestazioni che ha fatto V8, mi aspetto lo stesso qui. C'è qualcosa di sbagliato nella mia analisi qui? – faizan

3
window.location.href = "webpage.htm"; 
19

Come altri hanno già detto, la il secondo approccio è solitamente preferito.

I due frammenti di codice non sono esattamente equivalenti: il primo imposta effettivamente lo window.opener sull'oggetto stesso, mentre il secondo lo lascia come è, almeno in Firefox.

3

È possibile omettere window e utilizzare solo location.href. Ad esempio:

location.href = 'http://google.im/'; 
17

Speriamo che qualcun altro venga salvato leggendo questo.

Abbiamo rilevato un problema con i browser basati su WebKit fare:

window.open("webpage.htm", "_self"); 

Il browser sarebbe blocca e morire se abbiamo avuto troppi nodi DOM. Quando abbiamo cambiato il nostro codice in seguito alla risposta accettata di:

location.href = "webpage.html"; 

tutto andava bene. Ci è voluto un po 'di tempo per capire che cosa stava causando il problema, dal momento che non era ovvio ciò che ha reso periodicamente impossibile caricare la nostra pagina.

0

Per favore usate questo

window.open("url","_self"); 
  • Il primo "url" parametro è il percorso completo della pagina che si desidera aprire.
  • Il secondo parametro "_self", viene utilizzato per la pagina aperta nella stessa scheda. Vuoi aprire la pagina in un'altra scheda per favore usa "_blank".
+1

Questa risposta è direttamente opposta alla risposta suggerita e può causare l'arresto anomalo dei browser. Guarda la mia risposta in questa discussione. Inoltre, questo non dice perché si dovrebbe scegliere di usare questo metodo, dice semplicemente di usarlo. –