230 votes

Quelle est la différence entre window.location et document.location?

Quelle est la différence entre window.location et document.location? Les deux doivent-ils faire référence au même objet?

208voto

rahul Points 84185

Selon le W3C, ils sont les mêmes. En réalité, pour une sécurité multi-navigateurs, vous devriez utiliser window.location plutôt que document.location.

Voir : http://www.w3.org/TR/html/browsers.html#dom-location

205voto

Christoph Points 64389

Le moyen canonique pour obtenir l'objet de localisation actuel est window.location (voir cette page MSDN de 1996 et le brouillon du W3C de 2006).

Comparez ceci avec document.location, qui ne retournait initialement que l'URL actuelle en tant que chaîne de caractères (voir cette page sur MSDN). Probablement pour éviter la confusion, document.location a été remplacé par document.URL (voir ici sur MSDN), qui fait également partie de DOM Level 1.

Dans la mesure de mes connaissances, tous les navigateurs modernes associent document.location à window.location, mais je préfère toujours window.location car c'est ce que j'utilise depuis que j'ai écrit mon premier DHTML.

36voto

Phil Hamer Points 211

Intéressant, si vous avez un frame, une image ou un formulaire nommé 'location', alors 'document.location' fournit une référence à la fenêtre du frame, de l'image ou du formulaire, respectivement, au lieu de l'objet Location. Apparemment, cela est dû au fait que la recherche de nom de la collection document.forms, document.images et window.frames a la priorité sur la correspondance avec window.location.

if (document.location.tagName == 'IMG') alert('Bonjour!')

14voto

YOU Points 44812

document.location === window.location retourne true

aussi

document.location.constructor === window.location.constructor est true

Note : Juste testé sur, Firefox 3.6, Opera 10 et IE6

11voto

Matthew Flaschen Points 131723

Oui, ils sont les mêmes. C'est l'une des nombreuses bizarreries historiques dans l'API JS du navigateur. Essayez de faire :

window.location === document.location

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