2010-07-26 10 views
78

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

Et aussi où utiliser lequel.

Et lequel sera meilleur lors de la redirection après un appel ajax en mvc?

+0

j'ai oublié de mentionner que j'ai dû rediriger vers une nouvelle URL dans .net MVC .. quand j'ai utilisé top.location.href cela a fonctionné alors que window.location n'a pas .. pouvez-vous aussi dire la raison pour laquelle ?? ?? – Egalitarian

+0

je l'ai eu .. merci ... – Egalitarian

Répondre

107

window.location.href renvoie l'emplacement de la page en cours.

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

top est utile à la fois lorsque vous traitez des cadres et lorsque vous traitez avec 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 test.html – pas about: blank, qui est ce que window.location.href retournerait.

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

+3

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

+0

très bonne explication –

8

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

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

si top.location.href peut contenir le lien de la page « maître » contenant tous les cadres, alors que window.location.href ne contient que le lien de la page « actuelle ».

5

Le premier ajoute un élément à votre histoire que vous pouvez (ou devrait pouvoir) cliquer sur « Retour » et revenir à la page en cours.

La seconde remplace l'élément de l'historique en cours, vous ne pouvez donc pas y revenir.

Voir window.location:

  • assign(url): Chargez le document à l'adresse fournie.

  • replace(url): Remplacez le document actuel par celui de l'URL fournie. La différence par rapport à la méthode assign() est qu'après avoir utilisé replace(), la page en cours ne sera pas enregistrée dans l'historique des sessions, ce qui signifie que l'utilisateur ne pourra pas utiliser le bouton Précédent pour y accéder.

window.location.href = url; 

est favorisée par:

window.location = url; 
+0

Pour CORS question son ne fonctionne pas ... comment résoudre ce problème? – Prateek

23

objet top plus de sens à l'intérieur des cadres. À l'intérieur d'un cadre, window fait référence à la fenêtre du cadre en cours tandis que top fait référence à la fenêtre la plus à l'extérieur qui contient le (s) cadre (s). Donc:

window.location.href = 'somepage.html'; signifie le chargement somepage.html dans le cadre.

top.location.href = 'somepage.html'; signifie le chargement somepage.html dans la fenêtre principale du navigateur. Les autres objets intéressants sont self et parent.