Яка різниця між вікном, екраном та документом у Javascript?


244

Я вважаю, що ці терміни взаємозамінно використовуються як глобальне середовище DOM. Яка різниця (якщо така є) і коли я повинен використовувати кожну?

Відповіді:


250

Windowє основним корінтом JavaScript об'єкта, він же global objectв браузері, також може розглядатися як корінь моделі об'єкта документа. Ви можете отримати доступ до нього якwindow

window.screenабо просто screenневеликий інформаційний об'єкт про фізичні розміри екрана.

window.documentабо просто documentє головним об'єктом потенційно видимої (або ще краще: наданої) моделі об'єкта документа / DOM.

Оскільки windowє глобальним об'єктом, ви можете посилатися на будь-які його властивості лише за назвою властивості - тому не потрібно записувати window.- це буде визначено під час виконання.


46
Документ може бути більшим за вікно - це "видима" частина вашого браузера.
Менді

1
@Mandy елемент html, якщо він не є частиною документа, не видно. ви можете створювати рамки, у яких вікна повністю не видно, поки ви не прикріпите до документа
кадр

27
Коментар від @Mandy плутає windowз видовому . A window- об’єкт JavaScript для вкладки браузера або <iframe>(або застарілого <frame>). Видовий екран являє собою прямокутник тонованих documentвидно на вкладці або кадрі.
Беннет Браун

2
window.document або документ весь час однаковий?
BOZ

2
оскільки вікно - це глобальний об'єкт - до кожного властивості / методу до нього можна отримати доступ, фактично не записуючи [window.], так window.document можна записати як просто документ, і, звичайно, це вказує на саме те саме - як власне властивість це те саме, на що посилається кілька способів.
Пітер Арон Зентай

102

Ну, вікно - це перше, що завантажується в браузер. Цей об’єкт вікна має більшість властивостей, таких як довжина, внутрішня ширина, внутрішня висота, ім'я, якщо він був закритий, його батьки тощо.

Що з документом об'єкта документа? Об'єктом документа є ваш html, aspx, php чи інший документ, який буде завантажений у браузер. Документ фактично завантажується всередині об’єкта вікна та має такі властивості, як заголовок, URL, cookie тощо. Що це насправді означає? Це означає, що якщо ви хочете отримати доступ до властивості для вікна, це window.property, якщо це документ, це window.document.property, який також є коротким, як document.property.

дом

Це здається досить простим. Але що відбувається, коли вводиться IFRAME?

iframe


14
Оман для когось, хто намагається засвоїти основи: "Об'єктом документа є ваш html, aspx, php чи інший документ, який буде завантажений у браузер." Браузер надає HTML та CSS та виконує JavaScript. Веб-браузер не бачить файли з мовами серверного типу, такими як PHP.
Беннет Браун

Це дійсно корисне пояснення з подальшим малюнком для кращого розуміння ..
Фаріс Райхан

49

Коротко, детальніше нижче,

  • window є контекстом виконання та глобальним об'єктом для JavaScript цього контексту
  • document містить DOM, ініціалізований шляхом аналізу HTML
  • screen описує повний екран фізичного дисплея

Докладніше про ці об'єкти див. У посиланнях W3C та Mozilla . Найбільш основне співвідношення між трьома полягає в тому, що кожна вкладка браузера має свої власні window, а windowмає window.documentі window.screenвластивості. Браузер вкладки windowє глобальним контекстом, так documentі screenзвернутися до window.documentі window.screen. Детальніше про три об’єкти наведено нижче, дотримуючись JavaScript Фланагана: Посібник з остаточного значення .

window

Кожна вкладка браузера має власний windowоб’єкт верхнього рівня . Кожен <iframe>(і застарілий <frame>) елемент також має власний windowоб'єкт, вкладений у батьківське вікно. Кожне з цих вікон отримує свій окремий глобальний об’єкт. window.windowзавжди посилається window, але window.parentі window.topможе ставитися до огороджувальних вікна, даючи доступ до інших контекстів виконання. На додаток до documentі screenописано нижче, windowвластивості включають в себе

  • setTimeout()і setInterval()прив’язування обробників подій до таймера
  • location надання поточної URL-адреси
  • historyза допомогою методів back()та forward()надання історії змінних вкладки
  • navigator опис програмного забезпечення браузера

document

Кожен windowоб’єкт має documentоб'єкт, який потрібно винести. Ці об’єкти частково плутаються через те, що 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об'єкт з властивостями , що описують фізичний дисплей:

  • властивості екрана widthта heightє повноекранним

  • властивості екрана availWidthта availHeightопустіть панель інструментів

Частина екрана, на якій відображений винесений документ, є вікном перегляду в JavaScript, який може заплутати, оскільки ми називаємо частину екрана програми вікном, коли ми говоримо про взаємодію з операційною системою. getBoundingClientRect()Спосіб за будь- documentелементу буде повертати об'єкт з top, left, bottom, і rightвластивістю , що описує місце розташування елемента у вікні перегляду.


існує еквівалентна інструкція window.onloadвикористання об'єкта документа ?.
FilipeCanatto


48

Це windowфактичний глобальний об'єкт.

Це screenекран, він містить властивості щодо відображення користувача.

Тут documentзнаходиться DOM.


11
documentтакож може бути window.document, screenможе бути window.screenі windowможе бути window.window(або window.window.window) :-P
Ракета Hazmat

6
@PeterAronZentai: Це тому, що windowє глобальною змінною, яка робить її властивістю глобального windowоб'єкта. :-)
Ракета Hazmat

1
Мені потрібно відкрити нову сторінку ajax, я хочу замінити всю поточну сторінку новою. Чи повинен я використовувати або $ (document) .load (сторінку); або $ (window) .load (сторінка); ?
Мартін 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

Вікно - це перше, що завантажується в браузер. Цей об’єкт вікна має більшість властивостей, таких як довжина, внутрішня ширина, внутрішня висота, ім'я, якщо він був закритий, його батьки тощо.

Об'єктом документа є ваш html, aspx, php чи інший документ, який буде завантажений у браузер. Документ фактично завантажується всередині об’єкта вікна та має такі властивості, як заголовок, URL, cookie тощо. Що це насправді означає? Це означає, що якщо ви хочете отримати доступ до властивості для вікна, це window.property, якщо це документ, це window.document.property, який також є коротким, як document.property.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.