Javascript에서 창, 화면 및 문서의 차이점은 무엇입니까?


244

이 용어는 DOM의 전역 환경으로 상호 교환 가능하게 사용됩니다. 차이점은 무엇이며 (있는 경우) 언제 사용해야합니까?

답변:


250

Windowglobal object브라우저에서 기본 JavaScript 객체 루트이며 문서 객체 모델의 루트로 취급 될 수도 있습니다. 당신은 그것을 액세스 할 수 있습니다window

window.screen또는 screen실제 화면 크기에 대한 작은 정보 개체 일뿐 입니다.

window.document또는 document잠재적으로 보이는 (또는 더 나은 : 렌더링 된) 문서 객체 모델 / DOM의 주요 객체 일뿐 입니다.

이후 window전역 객체는 당신은 속성 이름으로의 속성을 참조 할 수 있습니다 - 당신이 아래로 쓸 필요가 없습니다 window.- 그것은 런타임에 의해 파악 될 것이다.


46
문서는 창보다 클 수 있습니다. 창은 브라우저에서 "보이는"부분입니다.
맨디

1
@Mandy html 요소가 문서의 일부가 아닌 경우 표시되지 않습니다. iframe을 문서에 첨부 할 때까지 창을 볼 수없는 iframe을 만들 수 있습니다
Peter Aron Zentai

27
@Mandy에서이 의견은 혼란 window뷰포트 . A window는 브라우저 탭 또는 <iframe>(더 이상 사용되지 않는 <frame>) JavaScript 객체입니다 . 뷰포트 렌더링의 직사각형 document탭 또는 프레임 내에서 볼.
베넷 브라운

2
window.document 또는 document가 항상 동일합니까?
BOZ

2
window는 전역 객체이기 때문에 [window.]를 쓰지 않고 모든 속성 / 메소드에 액세스 할 수 있으므로 window.document는 문서로 작성 될 수 있으며 물론 속성 자체와 동일한 것을 가리 킵니다. 방금 여러 방법을 참조한 것과 같습니다.
피터 아론 젠타이

102

창은 브라우저에 가장 먼저로드됩니다. 이 윈도우 객체는 length, innerWidth, innerHeight, name, 닫힌 경우, 부모 등과 같은 대부분의 속성을 갖습니다.

그러면 문서 객체는 어떻습니까? 문서 객체는 html, aspx, php 또는 브라우저에로드 될 기타 문서입니다. 문서는 실제로 창 개체 안에로드되며 제목, URL, 쿠키 등과 같은 속성을 사용할 수 있습니다. 이것이 실제로 무엇을 의미합니까? 즉, 창의 속성에 액세스하려는 경우 window.property이며, 문서 인 경우 window.document.property이며 document.property로 간단히 사용할 수 있습니다.

돔

충분히 간단 해 보입니다. 그러나 IFRAME이 도입되면 어떻게됩니까?

iframe


14
기본 사항을 배우려는 사람에게는 오해의 소지가 있습니다. "문서 개체는 HTML, aspx, PHP 또는 브라우저에로드 될 다른 문서입니다." 브라우저는 HTML과 CSS를 렌더링하고 JavaScript를 실행합니다. PHP와 같은 서버 측 언어의 파일은 브라우저에서 볼 수 없습니다.
베넷 브라운

이것은 이해를 돕기위한 그림 다음에 유용한 설명입니다 ..
Faris Rayhan

49

간단하게 아래에서 자세히 설명하면

  • window 해당 컨텍스트의 JavaScript에 대한 실행 컨텍스트 및 글로벌 오브젝트입니다.
  • document HTML을 파싱하여 초기화 된 DOM을 포함
  • screen 실제 디스플레이의 전체 화면을 설명합니다

참조 W3C모질라 이러한 개체에 대한 자세한 내용은 참조. 세 사이의 가장 기본적인 관계는 각각의 브라우저 탭 자체를 가지고 있다는 것입니다 window, 그리고는 window가지고 window.documentwindow.screen속성. 브라우저 탭의는 window그래서 글로벌 컨텍스트입니다 documentscreen참조 window.document하고 window.screen. Flanagan의 JavaScript : Definitive Guide 에 따르면 세 가지 객체에 대한 자세한 내용은 다음과 같습니다 .

window

각 브라우저 탭에는 고유 한 최상위 window개체가 있습니다. 각 <iframe>(그리고 더 이상 사용되지 않는 <frame>) 요소는 window부모 창 안에 중첩 된 자체 객체를 가지고 있습니다. 이 창들은 각각 별도의 전역 객체를 얻습니다. window.window항상을 의미 window하지만, window.parentwindow.top, 창을 둘러싸는 다른 실행 컨텍스트에 대한 액세스 권한을 부여 참조 할 수도 있습니다. 이외에도 documentscreen후술 window속성 포함

  • setTimeout()setInterval()타이머에 이벤트 처리기를 바인딩
  • location 현재 URL 제공
  • history메소드 back()forward()탭의 변경 가능 히스토리 제공
  • navigator 브라우저 소프트웨어 설명

document

window객체에는 document렌더링 할 객체가 있습니다. 고유 한 id가 할당 될 때 HTML 요소가 전역 객체에 추가되기 때문에 이러한 객체는 부분적으로 혼동됩니다. 예를 들어 HTML 스 니펫에서

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

단락 요소는 다음 중 하나에 의해 참조 될 수 있습니다.

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

screen

window객체 screen에는 물리적 디스플레이를 설명하는 속성 이있는 객체도 있습니다.

  • 화면 속성 widthheight전체 화면입니다

  • 화면 속성 availWidthavailHeight툴바 생략

렌더링 된 문서를 표시하는 화면 부분은 JavaScript 의 뷰포트 로, 운영 체제와의 상호 작용에 대해 이야기 할 때 화면의 응용 프로그램 부분을 창이라고 부르기 때문에 혼동 될 수 있습니다. getBoundingClientRect()어느 방법 document요소와 객체를 반환한다 top, left, bottom, 및 right뷰포트의 요소의 위치를 기술하는 속성.


window.onload문서 객체 를 사용 하는 것과 동등한 명령이 있습니까?
FilipeCanatto


48

그만큼 window 실제 전역 객체이다.

그만큼 screen 화면은 사용자의 디스플레이에 대한 속성을 포함합니다.

documentDOM을이 곳입니다.


11
document또한 할 수있다 window.document, screen할 수있다 window.screen, 그리고 window할 수있다 window.window(또는 window.window.window- P)
로켓 위험물

6
@PeterAronZentai : window전역 변수 이기 때문에 전역 window개체 의 속성이 됩니다. :-)
로켓 Hazmat

1
아약스로 새 페이지를 열어야합니다. 현재 페이지 전체를 새 페이지로 바꾸고 싶습니다. $ (document) .load (page); 중 하나를 사용해야합니까? 또는 $ (window) .load (page); ?
Martin AJ

11

window모든 것이 포함되어 있으므로 해당 요소를 호출 window.screen하고 window.document가져올 수 있습니다 . 각 객체의 내용을 잘 인쇄 하여이 바이올린을 확인하십시오 : http://jsfiddle.net/JKirchartz/82rZu/

다음과 같이 firebug / dev 도구에서 객체의 내용을 볼 수도 있습니다.

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

window모든 것의 근본이며 screen화면 크기 만 가지며 document최상위 DOM 객체입니다. 그래서 당신은 그것을 window슈퍼처럼 생각할 수 있습니다 document...


1

은 브라우저에 가장 먼저로드됩니다. 이 윈도우 객체는 length, innerWidth, innerHeight, name, 닫힌 경우, 부모 등과 같은 대부분의 속성을 갖습니다.

문서 객체는 html, aspx, php 또는 브라우저에로드 될 기타 문서입니다. 문서는 실제로 창 개체 안에로드되며 제목, URL, 쿠키 등과 같은 속성을 사용할 수 있습니다. 이것이 실제로 무엇을 의미합니까? 즉, 윈도우의 속성에 액세스하려는 경우 window.property이며, 문서 인 경우 window.document.property이며 document.property로 간단히 사용할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.