98 votes

Différence entre window.location.href et top.location.href

Quelqu'un peut-il me dire la différence entre window.location.href et top.location.href ?

Et aussi où utiliser chacun d'eux.

Et lequel sera le meilleur lors d'une redirection après un appel ajax en mvc ?

0 votes

J'ai oublié de mentionner que j'ai dû rediriger vers une nouvelle url en .net MVC lorsque j'ai utilisé top.location.href cela a fonctionné alors que window.location ne l'a pas fait pouvez-vous également expliquer pourquoi ? ???

134voto

josh3736 Points 41911

window.location.href renvoie l'emplacement de la page actuelle.

top.location.href (qui est un alias de window.top.location.href ) renvoie l'emplacement de la fenêtre la plus élevée dans la hiérarchie des fenêtres. Si une fenêtre n'a pas de parent, top est une référence à lui-même (en d'autres termes, window === window.top ).

top est utile à la fois lorsque vous traitez des cadres et lorsque vous traitez des fenêtres qui ont été ouvertes par d'autres pages. Par exemple, si vous avez une page appelée test.html avec le script suivant :

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

L'alerte résultante aura le chemin complet de test.html -. pas about:blank, qui est ce que window.location.href reviendrait.

Pour répondre à votre question sur la redirection, allez-y avec window.location.assign(url);

3 votes

Est-il exact d'appeler top.location.href un alias de window.top.location.href ? Je pensais qu'une variable dite "globale" est en réalité une raccourci pour une propriété de window alors que alias implique que c'est une variable indépendante qui pointe vers le même endroit.

28voto

Salman A Points 60620

top a plus de sens à l'intérieur des cadres. A l'intérieur d'un cadre, window se réfère à la fenêtre de l'image courante tandis que top fait référence à la fenêtre la plus extérieure qui contient le(s) cadre(s). Ainsi :

window.location.href = 'somepage.html'; chargement des moyens somepage.html à l'intérieur du cadre.

top.location.href = 'somepage.html'; chargement des moyens somepage.html dans la fenêtre principale du navigateur.

Deux autres objets intéressants sont self et parent .

10voto

SachinR Points 3693

La première ajoute un élément à votre historique en ce sens que vous pouvez (ou devriez pouvoir) cliquer sur "Retour" et revenir à la page en cours.

La seconde remplace l'élément actuel de l'historique de sorte que vous ne pouvez pas y revenir.

Voir window.location :

assign(url): Load the document at the provided URL.

replace(url):Replace the current document with the one at the provided URL. The difference from the assign() method is that after using replace() the current page will not be saved in session history, meaning the user won't be able to use the Back button to navigate to it.

window.location.href = url;

est privilégiée :

window.location = url;

0 votes

Le problème de CORS ne fonctionne pas... comment le résoudre ?

9voto

meder Points 81864

top fait référence à l'objet fenêtre qui contient tous les cadres actuels (père du reste des fenêtres). window est le courant window .

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

donc top.location.href peut contenir le lien de la page "maître" contenant tous les cadres, alors que window.location.href contient uniquement le lien de la page "actuelle".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X