2010-07-26 16 views
78

Kann mir jemand den Unterschied zwischen window.location.href und top.location.href sagen?Unterschied zwischen window.location.href und top.location.href

Und auch wo man welche verwendet.

Und welche wird besser sein, wenn nach einem Ajax Anruf in MVC umleiten?

+0

Ich vergaß zu erwähnen, dass ich auf eine neue URL in .net MVC umleiten musste. Wenn ich top.location.href verwendet habe, hat es funktioniert, während window.location nicht .. kann man auch den Grund warum ?? ?? – Egalitarian

+0

ich habe es .. danke .... – Egalitarian

Antwort

107

window.location.href gibt den Speicherort der aktuellen Seite zurück.

top.location.href (dies ist ein Alias ​​von window.top.location.href) gibt den Ort des obersten Fensters in der Fensterhierarchie zurück. Wenn ein Fenster kein Elternteil hat, ist top eine Referenz auf sich selbst (mit anderen Worten, window === window.top).

top ist nützlich, wenn Sie mit Rahmen arbeiten und mit Fenstern arbeiten, die von anderen Seiten geöffnet wurden. Zum Beispiel, wenn Sie eine Seite haben test.html mit folgendem Skript aufgerufen:

var newWin=window.open('about:blank','test','width=100,height=100'); 
newWin.document.write('<script>alert(top.location.href);</script>'); 

Der resultierende Alarm wird den vollständigen Pfad – nicht über test.html hat: blank, das, was window.location.href ist zurückkehren würde.

Um Ihre Frage zu Umleitung gehen zu beantworten mit window.location.assign(url);

+3

Ist es richtig, 'top.location.href' ein * alias * von' window.top.location.href' aufzurufen? Ich dachte, dass eine so genannte "globale" Variable wirklich eine Abkürzung für eine Eigenschaft * von "Fenster" ist, während * Alias ​​* impliziert, dass es sich um eine unabhängige Variable handelt, die auf dieselbe Stelle zeigt. –

+0

sehr gute Erklärung –

8

top bezieht sich auf das Fensterobjekt, das alle aktuellen Rahmen enthält (Vater des Rests der Fenster). window ist die aktuelle window.

http://www.howtocreate.co.uk/tutorials/javascript/browserinspecific

so kann top.location.href enthalten den "Master" -Seite Link alle Frames enthält, während window.location.href nur den "aktuellen" Seite Link enthält.

5

Der erste, ein Element zu Ihrer Geschichte in das summiert können Sie (oder sollte sein können) „Zurück“, und gehen Sie zurück auf die aktuelle Seite klicken.

Die zweite ersetzt das aktuelle Historienelement, sodass Sie nicht mehr darauf zurückkommen können.

Siehe window.location:

  • assign(url): Legen Sie das Dokument an der angegebenen URL.

  • replace(url): Ersetzen Sie das aktuelle Dokument durch das unter der angegebenen URL. Der Unterschied zur Methode assign() besteht darin, dass nach der Verwendung der replace() die aktuelle Seite nicht im Sitzungsverlauf gespeichert wird. Dies bedeutet, dass der Benutzer die Schaltfläche Zurück nicht verwenden kann, um zu dieser Seite zu navigieren.

window.location.href = url; 

über begünstigt:

window.location = url; 
+0

Für CORS Ausgabe funktioniert nicht ... wie das zu lösen? – Prateek

23

top Objekt macht mehr Sinn, innerhalb Rahmen. Innerhalb eines Rahmens bezieht sich window auf das Fenster des aktuellen Rahmens, während top sich auf das äußerste Fenster bezieht, das die Rahmen enthält. Also:

window.location.href = 'somepage.html'; bedeutet laden innerhalb des Rahmens.

top.location.href = 'somepage.html'; bedeutet laden somepage.html im Hauptfenster des Browsers.

Zwei weitere interessante Objekte sind self und parent.