Объект Window
Объект Window представляет собой открытое окно браузера.
Данный объект является корневым и все свойства, методы, функции и даже переменные являются его свойствами и методами.
Подробнее об объекте Window можно узнать в нашем JavaScript учебнике.
Свойства объекта Window
Свойство | Описание |
---|---|
closed | Возвращает логическое значение (true или false) в зависимости от того, закрыто указанное окно или отрыто. |
frames | Возвращает массив всех фреймов на странице (включая iframe). |
document | Возвращает объект Document данного окна. |
history | Возвращает объект History данного окна. |
length | Возвращает количество фреймов (включая iframe), которые находятся в данном окне. |
location | Возвращает объект Location данного окна. |
name | Устанавливает или возвращает имя данного окна. |
navigator | Возвращает объект Navigator данного окна. |
opener | Возвращает ссылку на окно, которое открыло данное. |
parent | Возвращает родительское окно данного окна. |
screen | Возвращает объект Screen данного окна. |
self | Возвращает текущее окно. |
top | Возвращает верхнее браузерное окно для данного окна. |
Методы объекта Window
Метод | Описание |
---|---|
alert() | Вызывает окно оповещения, которое содержит текст сообщения и клавишу ОК. |
blur() | Делает окно неактивным. |
clearInterval() | Прекращает повторное выполнение кода заданного setInterval(). |
clearTimeout() | Отменяет запланированное методом setTimeout() выполнение кода. |
close() | Закрывает окно. |
confirm() | Вызывает окно подтверждения содержащее текст сообщения и клавиши ОК и Отмена. |
focus() | Делает окно активным. |
moveBy() | Смещает окно относительно его текущей позиции. |
moveTo() | Перемещает окно на указанную позицию. |
open() | Открывает новое окно браузера. |
print() | Распечатывает содержимое текущего окна. |
prompt() | Вызывает окно запроса, побуждающее посетителя ввести в него определенные данные. |
scrollBy() | Прокручивает содержимое окна на указанное количество пикселей. |
scrollTo() | Прокручивает содержимое окна до указанных координат. |
setInterval() | Вызывает функцию или выполняет код через определенные промежутки времени (указанные в миллисекундах). |
setTimeout() | Вызывает функцию или выполняет код после указанного количества миллисекунд один раз. |
Wisdomweb.ru © 2023.
Все права защищены. Любое использование материалов данного сайта без разрешения администрации запрещено.
Онлайн учебники по HTML, HTML5, CSS, JavaScript, AJAX, HDOM, jQuery.
Работа с браузером и BOM
Большое значение в JavaScript имеет работа с веб-браузером и теми объектами, которые он предоставляет. Например, использование объектов браузера позволяет манипулировать элементами html, которые имеются на странице, или взаимодействовать с пользователем.
Все объекты, через которые JavaScript взаимодействует с браузером, описываются таким понятием как Browser Object Model (Объектная Модель Браузера).
Browser Object Model можно представить в виде следующей схемы:
В вершине находится главный объект — объект window , который представляет собой браузер. Этот объект в свою очередь включает ряд других объектов, в частности, объект document , который представляет отдельную веб-страницу, отображаемую в браузере.
Объект window
Объект window представляет собой окно веб-браузера, в котором размещаются веб-страницы. window является глобальным объектом, поэтому при доступе к его свойствам и методам необязательно использовать его имя. Например, window имеет метод alert() , который отображает окно сообщения. Но нам необязательно писать:
window.alert("Привет мир!");
window можно не использовать:
alert("Привет мир!");
Но так как данный объект глобальный, то это накладывает некоторые ограничения. Например:
var alert = function(message)< document.write("Сообщение: " + message); >; window.alert("Привет мир!");
Все объявляемые в программе глобальные переменные или функции автоматически добавляются к объекту window . И поскольку название новой функции будет совпадать с названием метода alert() , то произойдет переопределение этого метода в объекте window новой функцией.
И если мы объявим в программе какую-нибудь глобальную переменную, то она нам доступна как свойство в объекте window:
var message = "hello"; document.write(window.message);
Глобальный объект
Глобальный объект предоставляет переменные и функции, доступные в любом месте программы. По умолчанию это те, что встроены в язык или среду исполнения.
В браузере он называется window , в Node.js — global , в другой среде исполнения может называться иначе.
Недавно globalThis был добавлен в язык как стандартизированное имя для глобального объекта, которое должно поддерживаться в любом окружении. Он поддерживается во всех основных браузерах.
Далее мы будем использовать window , полагая, что наша среда – браузер. Если скрипт может выполняться и в другом окружении, лучше будет globalThis .
Ко всем свойствам глобального объекта можно обращаться напрямую:
alert("Привет"); // это то же самое, что и window.alert("Привет");
В браузере глобальные функции и переменные, объявленные с помощью var (не let/const !), становятся свойствами глобального объекта:
var gVar = 5; alert(window.gVar); // 5 (становится свойством глобального объекта)
То же самое касается функций, объявленных с помощью синтаксиса Function Declaration (выражения с ключевым словом function в основном потоке кода, не Function Expression)
Пожалуйста, не полагайтесь на это. Такое поведение поддерживается для совместимости. В современных проектах, использующих JavaScript-модули, такого не происходит.
Если бы мы объявили переменную при помощи let , то такого бы не произошло:
let gLet = 5; alert(window.gLet); // undefined (не становится свойством глобального объекта)
Если свойство настолько важное, что вы хотите сделать его доступным для всей программы, запишите его в глобальный объект напрямую:
// сделать информацию о текущем пользователе глобальной, для предоставления доступа всем скриптам window.currentUser = < name: "John" >; // где угодно в коде alert(currentUser.name); // John // или, если у нас есть локальная переменная с именем "currentUser", // получим её из window явно (безопасно!) alert(window.currentUser.name); // John
При этом обычно не рекомендуется использовать глобальные переменные. Следует применять их как можно реже. Дизайн кода, при котором функция получает входные параметры и выдаёт определённый результат, чище, надёжнее и удобнее для тестирования, чем когда используются внешние, а тем более глобальные переменные.
Использование для полифилов
Глобальный объект можно использовать, чтобы проверить поддержку современных возможностей языка.
Например, проверить наличие встроенного объекта Promise (такая поддержка отсутствует в очень старых браузерах):
if (!window.Promise)
Если нет (скажем, используется старый браузер), мы можем создать полифил: добавить функции, которые не поддерживаются окружением, но существуют в современном стандарте.
if (!window.Promise) < window.Promise = . // собственная реализация современной возможности языка >
Итого
- Глобальный объект хранит переменные, которые должны быть доступны в любом месте программы. Это включает в себя как встроенные объекты, например, Array , так и характерные для окружения свойства, например, window.innerHeight – высота окна браузера.
- Глобальный объект имеет универсальное имя – globalThis . …Но чаще на него ссылаются по-старому, используя имя, характерное для данного окружения, такое как window (браузер) и global (Node.js).
- Следует хранить значения в глобальном объекте, только если они действительно глобальны для нашего проекта. И стараться свести их количество к минимуму.
- В браузерах, если только мы не используем модули, глобальные функции и переменные, объявленные с помощью var , становятся свойствами глобального объекта.
- Для того, чтобы код был проще и в будущем его легче было поддерживать, следует обращаться к свойствам глобального объекта напрямую, как window.x .
window
Объект window сочетает два в одном: глобальный объект javascript и окно браузера.
Для обращения к функциям и методам window не нужно указывать объект:
window.decodeURI(..) // то же что и decodeURI(..)
Вообще, любая переменная в конечном счете(если не найдена локально) ищется в глобальном объекте.
// можно указать window явно - будет работать: a = new window.String("test")
Да, и кстати window является свойством window :
xhr = new window.window.window.XMLHttpRequest()
В IE: window !== window.window. Странно, да?
Кроме роли «глобального объекта», window также предоставляет интерфейс для работы с окном браузера.
В списке методов объекта window перечислены именно эти функции, работающие с окном браузера. Прочие функции вы найдете среди глобальных методов.
Методы
Свойства
Автор: Гость (не зарегистрирован), дата: 29 октября, 2009 — 21:27
a где window.alert ?
Автор: Илья Кантор, дата: 29 октября, 2009 — 23:06
Автор: Гость (не зарегистрирован), дата: 13 февраля, 2010 — 13:52
События бы было тоже неплохо написать
Автор: Гость (не зарегистрирован), дата: 13 ноября, 2010 — 20:55
тут пары методов нет. и не пары, а больше. например window.open или window.alert
Автор: B@rmaley.e>
Автор: Гость (не зарегистрирован), дата: 4 декабря, 2010 — 18:32
А куда относится window.onload ? Нигде не могу найти информацию.
Автор: dmitlantis, дата: 10 апреля, 2011 — 20:23
А как насчёт следующих методов объекта window?:
- back()
- blur()
- execScript()
- find()
- focus()
- forward()
- home()
- moveBy()
- moveTo()
- navigate()
- print()
- resizeBy()
- resizeTo()
- scroll()
- scrollBy()
- scrollTo()
- setHotKeys()
- setResizeeable()
- stop()
И где, простите за оффтоп, интересно остальные системные объекты браузера? Напр. Объект document, а также информация о внутренних объектах window: screen, navigator, layer и т.п. . не полный какой-то справочник получается. или это скорее краткая шпаргалка?
Автор: Гость (не зарегистрирован), дата: 22 мая, 2012 — 18:13
Поддерживаю, мне нужно было почитать что такое navigate, включил поиск по сайту и выдал 2 ссылки, на которых ничего нет. Справочник наполовину пустой или наполовину полный.)
Автор: Mikle, дата: 8 июня, 2012 — 16:29
for( var k in window ) вам в помощь
Автор: Гость (не зарегистрирован), дата: 18 января, 2013 — 19:20
Всем привет
Подскажите пожалуйста как сделать чтобы код
можно было применить не к фрейму а к div
?
Автор: Гость (не зарегистрирован), дата: 6 сентября, 2013 — 20:57
А почему нет window.showModalDialog()?
Автор: Гость (не зарегистрирован), дата: 26 марта, 2015 — 08:05
ребят нужна помощь не могу разобраться как это работает window[«player»+this.id]