Quelle est la différence entre fenêtre, écran et document en Javascript?


244

Je vois ces termes utilisés de manière interchangeable comme environnement global pour le DOM. Quelle est la différence (s'il y en a une) et quand dois-je les utiliser?

Réponses:


250

Windowest la racine principale de l'objet JavaScript, alias le global objectdans un navigateur, peut également être traitée comme la racine du modèle d'objet de document. Vous pouvez y accéder en tant quewindow

window.screenou screenest simplement un petit objet d'information sur les dimensions physiques de l'écran.

window.documentou documentest simplement l'objet principal du modèle d'objet de document / DOM potentiellement visible (ou mieux encore: rendu).

Puisque windowc'est l'objet global, vous pouvez en référencer toutes les propriétés avec juste le nom de la propriété - vous n'avez donc pas à l'écrire window.- il sera compris par le runtime.


46
Un document peut être plus grand qu'une fenêtre - la fenêtre est la partie "visible" de votre navigateur.
Mandy

1
@Mandy un élément html s'il ne fait pas partie du document n'est pas visible. vous pouvez créer des iframes dont les fenêtres ne sont pas visibles tant que vous n'avez pas attaché l'iframe au document
Peter Aron Zentai

27
Le commentaire de @Mandy confond windowavec la fenêtre d'affichage . A windowest l'objet JavaScript de l'onglet du navigateur ou <iframe>(ou obsolète <frame>). La fenêtre est le rectangle du rendu documentvu dans l'onglet ou le cadre.
Bennett Brown

2
window.document or document is same all time?
BOZ

2
puisque window est l'objet global - chaque propriété / méthode de celui-ci est accessible sans écrire réellement [window.] donc window.document peut être écrit comme un simple document, et bien sûr il pointe vers la même chose - comme la propriété elle-même est le même vient de référencer plusieurs façons.
Peter Aron Zentai

102

Eh bien, la fenêtre est la première chose qui se charge dans le navigateur. Cet objet fenêtre possède la majorité des propriétés telles que la longueur, la largeur intérieure, la hauteur intérieure, le nom, s'il a été fermé, ses parents, etc.

Et l'objet document alors? L'objet document est votre document html, aspx, php ou autre qui sera chargé dans le navigateur. Le document est en fait chargé à l'intérieur de l'objet fenêtre et dispose de propriétés comme le titre, l'URL, le cookie, etc. Qu'est-ce que cela signifie vraiment? Cela signifie que si vous souhaitez accéder à une propriété pour la fenêtre, il s'agit de window.property, s'il s'agit d'un document, il s'agit de window.document.property qui est également disponible en bref sous le nom de document.property.

dom

Cela semble assez simple. Mais que se passe-t-il une fois qu'un IFRAME est introduit?

iframe


14
Induire en erreur pour quelqu'un qui essaie d'apprendre les bases: "L'objet document est votre document html, aspx, php ou autre qui sera chargé dans le navigateur." Le navigateur rend HTML et CSS et exécute JavaScript. Les fichiers avec des langages côté serveur comme PHP ne sont pas visibles par le navigateur.
Bennett Brown

Ceci est une explication vraiment utile suivie d'une image pour une meilleure compréhension ..
Faris Rayhan

49

En bref, avec plus de détails ci-dessous,

  • window est le contexte d'exécution et l'objet global pour le JavaScript de ce contexte
  • document contient le DOM, initialisé par l'analyse HTML
  • screen décrit le plein écran de l'affichage physique

Voir les références W3C et Mozilla pour plus de détails sur ces objets. La relation la plus fondamentale entre les trois est que chaque onglet du navigateur a le sien window, et un windowa window.documentet des window.screenpropriétés. L'onglet du navigateur windowest le contexte global, donc documentet screenréférez - vous à window.documentet window.screen. Plus de détails sur les trois objets sont ci-dessous, en suivant JavaScript de Flanagan: Guide définitif .

window

Chaque onglet de navigateur possède son propre windowobjet de niveau supérieur . Chaque élément <iframe>(et obsolète <frame>) possède également son propre windowobjet, imbriqué dans une fenêtre parent. Chacune de ces fenêtres obtient son propre objet global distinct. window.windowtoujours fait référence à window, mais window.parentet window.toppeut se référer à enfermer les fenêtres, donnant accès à d' autres contextes d'exécution. Outre documentet screendécrites ci-dessous, les windowpropriétés comprennent

  • setTimeout()et setInterval()liaison des gestionnaires d'événements à une minuterie
  • location donnant l'URL actuelle
  • historyavec des méthodes back()et forward()donnant l'historique mutable de l'onglet
  • navigator décrivant le logiciel de navigation

document

Chaque windowobjet a un documentobjet à restituer. Ces objets sont confus en partie parce que les éléments HTML sont ajoutés à l'objet global lorsqu'ils reçoivent un identifiant unique. Par exemple, dans l'extrait HTML

<body>
  <p id="holyCow"> This is the first paragraph.</p>
</body>

l'élément de paragraphe peut être référencé par l'un des éléments suivants:

  • window.holyCow ou window["holyCow"]
  • document.getElementById("holyCow")
  • document.body.firstChild
  • document.body.children[0]

screen

L' windowobjet a également un screenobjet avec des propriétés décrivant l'affichage physique:

  • propriétés de l'écran widthet heightsont le plein écran

  • propriétés de l'écran availWidthet availHeightomettez la barre d'outils

La partie d'un écran affichant le document rendu est la fenêtre d' affichage en JavaScript, ce qui peut prêter à confusion car nous appelons la partie de l'écran d'une application une fenêtre lorsque nous parlons d'interactions avec le système d'exploitation. Le getBoundingClientRect()procédé selon l' une quelconque documentélément retourne un objet avec top, left, bottom, et des rightpropriétés décrivant l'emplacement de l'élément dans la fenêtre.


il existe une instruction équivalente à l' window.onloadutilisation de l'objet document?.
FilipeCanatto


48

Le windowest l'objet global réel.

C'est screenl'écran, il contient des propriétés sur l'affichage de l'utilisateur.

C'est documentlà où se trouve le DOM.


11
documentpeut aussi être window.document, screenpeut être window.screenet windowpeut être window.window(ou window.window.window) :-P
Rocket Hazmat

6
@PeterAronZentai: C'est parce que windowc'est une variable globale, ce qui en fait une propriété de l' windowobjet global . :-)
Rocket Hazmat

1
J'ai besoin d'ouvrir une nouvelle page par ajax, je veux remplacer toute la page actuelle par une nouvelle. Dois-je utiliser $ (document) .load (page); ou $ (fenêtre) .load (page); ?
Martin AJ

11

le windowcontient tout, vous pouvez donc appeler window.screenet window.documentobtenir ces éléments. Découvrez ce violon, imprimant joliment le contenu de chaque objet: http://jsfiddle.net/JKirchartz/82rZu/

Vous pouvez également voir le contenu de l'objet dans des outils firebug / dev comme ceci:

console.dir(window);
console.dir(document);
console.dir(screen);

windowest la racine de tout, screenn'a que des dimensions d'écran et documentest le premier objet DOM. vous pouvez donc le considérer windowcomme un super- document...


1

La fenêtre est la première chose qui se charge dans le navigateur. Cet objet fenêtre possède la majorité des propriétés telles que la longueur, la largeur intérieure, la hauteur intérieure, le nom, s'il a été fermé, ses parents, etc.

L' objet document est votre document html, aspx, php ou autre qui sera chargé dans le navigateur. Le document est en fait chargé à l'intérieur de l'objet fenêtre et dispose de propriétés comme le titre, l'URL, le cookie, etc. Qu'est-ce que cela signifie vraiment? Cela signifie que si vous souhaitez accéder à une propriété pour la fenêtre, il s'agit de window.property, s'il s'agit d'un document, il s'agit de window.document.property qui est également disponible en bref sous le nom de document.property.

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.