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?


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);


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.



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;

Für das CORS-Problem funktioniert es nicht ... wie kann man das lösen?
Pra_A
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.