Qual è la differenza tra finestra, schermo e documento in Javascript?


244

Vedo questi termini usati in modo intercambiabile come ambiente globale per il DOM. Qual è la differenza (se ce n'è una) e quando dovrei usare ognuna?

Risposte:


250

Windowè la radice dell'oggetto JavaScript principale, nota anche come global objectin un browser, può anche essere considerata la radice del modello a oggetti del documento. Puoi accedervi comewindow

window.screeno semplicemente screenè un piccolo oggetto informativo sulle dimensioni fisiche dello schermo.

window.documento semplicemente documentè l'oggetto principale del modello / DOM oggetto del documento potenzialmente visibile (o meglio ancora: reso).

Poiché windowè l'oggetto globale è possibile fare riferimento a qualsiasi proprietà di esso solo con il nome della proprietà, quindi non è necessario annotare window., verrà calcolato dal runtime.


46
Un documento può essere più grande di una finestra: la finestra è la parte "visibile" nel tuo browser.
Mandy,

1
@Mandy un elemento html se non fa parte del documento non è visibile. puoi creare iframe la cui finestra non è totalmente visibile fino a quando non alleghi l'iframe al documento
Peter Aron Zentai,

27
Il commento di @Mandy confonde windowcon viewport . A windowè l'oggetto JavaScript per la scheda del browser o <iframe>(o obsoleto <frame>). Il viewport è il rettangolo del rendering documentvisto all'interno della scheda o della cornice.
Bennett Brown,

2
window.document o document è sempre lo stesso?
BOZ,

2
poiché window è l'oggetto globale - è possibile accedere a ogni proprietà / metodo di esso senza effettivamente scrivere [window.] in modo che window.document possa essere scritto come solo documento, e ovviamente punta alla stessa cosa - come la proprietà stessa è lo stesso appena citato più modi.
Peter Aron Zentai,

102

Bene, la finestra è la prima cosa che viene caricata nel browser. Questo oggetto finestra ha la maggior parte delle proprietà come length, innerWidth, innerHeight, name, se è stato chiuso, i suoi genitori e altro.

Che dire dell'oggetto documento allora? L'oggetto documento è il tuo html, aspx, php o altro documento che verrà caricato nel browser. Il documento viene effettivamente caricato all'interno dell'oggetto finestra e ha proprietà disponibili come titolo, URL, cookie, ecc. Cosa significa veramente? Ciò significa che se si desidera accedere a una proprietà per la finestra è window.property, se è document è window.document.property che è anche disponibile in breve come document.property.

dom

Sembra abbastanza semplice. Ma cosa succede una volta introdotto un IFRAME?

iframe


14
Ingannevole per qualcuno che cerca di imparare le basi: "L'oggetto documento è il tuo html, aspx, php o altro documento che verrà caricato nel browser." Il browser esegue il rendering di HTML e CSS ed esegue JavaScript. I file con lingue lato server come PHP non vengono visualizzati dal browser.
Bennett Brown,

Questa è una spiegazione davvero utile seguita da un'immagine per una migliore comprensione ..
Faris Rayhan,

49

In breve, con maggiori dettagli di seguito,

  • window è il contesto di esecuzione e l'oggetto globale per il JavaScript di quel contesto
  • document contiene il DOM, inizializzato analizzando HTML
  • screen descrive lo schermo intero del display fisico

Vedi riferimenti W3C e Mozilla per dettagli su questi oggetti. La relazione di base fra i tre è che ogni scheda del browser ha il proprio window, e di un windowha window.documente window.screenproprietà. Il browser scheda del windowè il contesto globale, così documente screensi riferiscono a window.documented window.screen. Ulteriori dettagli sui tre oggetti sono riportati di seguito, seguendo il JavaScript di Flanagan: Guida definitiva .

window

Ogni scheda del browser ha il suo windowoggetto di livello superiore . Ogni elemento <iframe>(e obsoleto <frame>) ha anche il suo windowoggetto, nidificato in una finestra padre. Ognuna di queste finestre ottiene il proprio oggetto globale separato. window.windowsi riferisce sempre window, ma window.parente window.toppotrebbe fare riferimento a racchiudere finestre, che danno accesso ad altri contesti di esecuzione. Oltre documente screendescritti di seguito, le windowproprietà includono

  • setTimeout()e setInterval()associare i gestori di eventi a un timer
  • location fornendo l'URL corrente
  • historycon metodi back()e forward()fornendo la cronologia mutabile della scheda
  • navigator descrivendo il software del browser

document

Ogni windowoggetto ha un documentoggetto da rendere. Questi oggetti vengono in parte confusi perché gli elementi HTML vengono aggiunti all'oggetto globale quando viene assegnato un ID univoco. Ad esempio, nello snippet HTML

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

l'elemento del paragrafo può essere referenziato da uno dei seguenti:

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

screen

L' windowoggetto ha anche un screenoggetto con proprietà che descrivono la visualizzazione fisica:

  • proprietà dello schermo widthe heightsono a schermo intero

  • proprietà dello schermo availWidthe availHeightomettere la barra degli strumenti

La parte di uno schermo che mostra il documento renderizzato è il viewport in JavaScript, il che è potenzialmente confuso perché chiamiamo una parte dello schermo di una finestra una finestra quando parliamo di interazioni con il sistema operativo. Il getBoundingClientRect()metodo di qualsiasi documentelemento restituirà un oggetto con top, left, bottom, e rightproprietà che descrivono la posizione dell'elemento nella vista.


esiste un'istruzione equivalente window.onloadall'utilizzo dell'oggetto documento?.
FilipeCanatto


48

Il windowè l'oggetto globale attuale.

Lo screenè lo schermo, che contiene le proprietà sulla visualizzazione dell'utente.

La documentè dove il DOM è.


11
documentpuò anche essere window.document, screenpuò essere window.screene windowpuò essere window.window(o window.window.window) :-P
Rocket Hazmat

6
@PeterAronZentai: Questo perché windowè una variabile globale, che la rende una proprietà windowdell'oggetto globale . :-)
Rocket Hazmat

1
Devo aprire una nuova pagina con Ajax, voglio sostituire l'intera pagina corrente con una nuova. Dovrei usare $ (document) .load (pagina); o $ (finestra) .load (pagina); ?
Martin AJ,

11

la windowcontiene tutto, in modo da poter chiamare window.screene window.documentper ottenere quegli elementi. Dai un'occhiata a questo violino, che stampa il contenuto di ogni oggetto: http://jsfiddle.net/JKirchartz/82rZu/

Puoi anche vedere il contenuto dell'oggetto negli strumenti firebug / dev in questo modo:

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

windowè la radice di tutto, screenha solo dimensioni dello schermo ed documentè il principale oggetto DOM. quindi puoi pensarlo windowcome un super- document...


1

La finestra è la prima cosa che viene caricata nel browser. Questo oggetto finestra ha la maggior parte delle proprietà come lunghezza, innerWidth, innerHeight, nome, se è stato chiuso, i suoi genitori e altro.

L' oggetto documento è il tuo html, aspx, php o altro documento che verrà caricato nel browser. Il documento viene effettivamente caricato all'interno dell'oggetto finestra e ha proprietà disponibili come titolo, URL, cookie, ecc. Cosa significa veramente? Ciò significa che se si desidera accedere a una proprietà per la finestra è window.property, se è document è window.document.property che è anche disponibile in breve come document.property.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.