Unterschied zwischen window.location.href und top.location.href

92

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

Und auch wo man welches benutzt.

Und welches ist besser, wenn Sie nach einem Ajax-Aufruf in mvc umleiten?

Egalitär
quelle
Ich habe vergessen zu erwähnen, dass ich zu einer neuen URL in .net MVC umleiten musste. Als ich top.location.href verwendete, funktionierte es, während window.location nicht. Kannst du auch den Grund dafür angeben?
Egalitär

Antworten:

124

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

top.location.href(Dies ist ein Alias ​​von window.top.location.href) gibt die Position des obersten Fensters in der Fensterhierarchie zurück. Wenn ein Fenster kein übergeordnetes Element hat, topverweist es auf sich selbst (mit anderen Worten window=== window.top).

topist sowohl nützlich, wenn Sie mit Frames arbeiten, als auch wenn Sie mit Fenstern arbeiten, die von anderen Seiten geöffnet wurden. Zum Beispiel, wenn Sie eine Seite test.htmlmit dem folgenden Skript aufgerufen haben :

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

Die resultierende Warnung enthält den vollständigen Pfad zu test.html - nicht about: blank, was zurückkehren window.location.hrefwürde.

Um Ihre Frage zur Umleitung zu beantworten, gehen Sie zu window.location.assign(url);

josh3736
quelle
3
Ist es richtig, top.location.hrefeinen Alias von aufzurufen window.top.location.href? Ich dachte, dass eine sogenannte "globale" Variable wirklich eine Abkürzung für eine Eigenschaft von ist, windowwährend Alias impliziert, dass es sich um eine unabhängige Variable handelt, die auf dieselbe Stelle verweist.
just.another.programmer
25

topObjekt macht innerhalb von Frames mehr Sinn. windowBezieht sich innerhalb eines Frames auf das Fenster des aktuellen Frames, während es topsich auf das äußerste Fenster bezieht, das die Frames enthält. So:

window.location.href = 'somepage.html';bedeutet das Laden somepage.htmlinnerhalb des Rahmens.

top.location.href = 'somepage.html';bedeutet das Laden somepage.htmlim Hauptbrowserfenster.

Zwei weitere interessante Objekte sind selfund parent.

Salman A.
quelle
9

topbezieht sich auf das Fensterobjekt, das alle aktuellen Frames enthält (Vater der restlichen Fenster). windowist der Strom window.

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

so top.location.hrefkann enthalten den „Master“ Seite Link , um alle Frames enthält, während window.location.hrefnur die „aktuelle“ Seite Link enthält.

meder omuraliev
quelle
7

Der erste fügt Ihrem Verlauf ein Element hinzu, indem Sie auf "Zurück" klicken können (oder sollten) und zur aktuellen Seite zurückkehren können.

Der zweite ersetzt das aktuelle Verlaufselement, sodass Sie nicht mehr darauf zurückgreifen können.

Siehe window.location:

  • assign(url): Laden Sie das Dokument unter der angegebenen URL.

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

window.location.href = url;

wird bevorzugt gegenüber:

window.location = url;
Sachin R.
quelle
Für das CORS-Problem funktioniert es nicht ... wie kann man das lösen?
Pra_A