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


92

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

Et aussi où utiliser lequel.

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


J'ai oublié de mentionner que je devais rediriger vers une nouvelle URL dans .net MVC .. quand j'ai utilisé top.location.href, cela fonctionnait alors que window.location ne le faisait pas .. pouvez-vous également dire pourquoi ????
Egalitarian le

Réponses:


125

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, topest une référence à elle-même (en d'autres termes, window=== window.top).

topest utile à la fois pour les cadres et pour les fenêtres qui ont été ouvertes par d'autres pages. Par exemple, si vous avez une page appelée test.htmlavec 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 vers test.html - pas about: blank, ce window.location.hrefqui reviendrait.

Pour répondre à votre question sur la redirection, utilisez window.location.assign(url);


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

25

topobjet a plus de sens dans les cadres. À l'intérieur d'un cadre, windowfait référence à la fenêtre du cadre actuel tandis que topfait référence à la fenêtre la plus à l'extérieur qui contient le ou les cadres. Alors:

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

top.location.href = 'somepage.html';signifie chargement somepage.htmldans la fenêtre principale du navigateur.

Deux autres objets intéressants sont selfet parent.



7

Le premier ajoute un élément à votre historique en ce que vous pouvez (ou devriez pouvoir) cliquer sur "Retour" et revenir à la page actuelle.

Le second remplace l'élément d'historique actuel afin que vous ne puissiez pas y revenir.

Voir window.location:

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

  • replace(url): Remplacez le document actuel par celui de l'URL fournie. La différence avec la assign()méthode est qu'après utilisation, replace()la page actuelle ne sera pas enregistrée dans l'historique de session, ce qui signifie que l'utilisateur ne pourra pas utiliser le bouton Retour pour y accéder.

window.location.href = url;

est préféré à:

window.location = url;

Pour le problème CORS, il ne fonctionne pas ... comment résoudre ce problème?
Pra_A
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.