recursal/MDN huggingface dataset:
Window.localStorage
===================

Свойство **`localStorage`** позволяет получить доступ к `Storage` объекту. `localStorage` аналогично свойству `sessionStorage` (en-US). Разница только в том, что свойство `sessionStorage` хранит данные в течение сеанса (до закрытия браузера), в отличие от данных, находящихся в свойстве `localStorage`, которые не имеют ограничений по времени хранения и могут быть удалены только с помощью JavaScript.

Следует отметить, что данные, сохранённые как в `localStorage`, так и в `sessionStorage`, являться специфичными для протокола страницы.

Ключи и значения **всегда строки** (так же, как и объекты, целочисленные ключи автоматически будут преобразованы в строки).

Синтаксис
---------


```js
myStorage = window.localStorage;
```

### Значение

Объект `Storage`, который используется для доступа к текущему локальному хранилищу.

### Исключения

`SecurityError`

Запрос к хранилищу нарушает разрешение политик, либо источник для хранения не является корректной комбинацией схема/хост/порт (такое может произойти, если источником для хранения является `file:` или `data:` схемы, например). Как ещё один пример появления ошибки, пользователь через конфигурацию браузера запретил хранение данных для некоторых источников.

Пример
------

Следующий код показывает пример доступа к локальному объекту `Storage` для текущего домена и добавляет данные в него с помощью `Storage.setItem()`.


```js
localStorage.setItem("myCat", "Tom");
```


Считывать данные из localStorage для определённого ключа, можно следующим образом:


```js
let cat = localStorage.getItem("myCat");
```


Удалять данные можно так:


```js
localStorage.removeItem("myCat"); // вернёт undefined
```


Для удаления всех записей, то есть полной очистки `localStorage`, используйте:


```js
localStorage.clear();
```


**Примечание:** Пожалуйста, обратитесь к статье Using the Web Storage API для более подробных примеров.

Спецификации
------------

| Specification |
| --- |
| HTML Standard # dom-localstorage-dev |

Совместимость с браузерами
--------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Все браузеры имеют различный уровень объёма для `localStorage` и `sessionStorage`. Здесь подробное описание объёма хранилищ для разных браузеров.

Смотрите также
--------------

* Использование Web Storage API
* Локальное хранилище с Window.localStorage (en-US)
* `Window.sessionStorage`
Window.innerHeight
==================

Высота (в пикселях) области просмотра окна браузера, включая, если отображается, горизонтальную полосу прокрутки.

Синтаксис
---------
```

var intViewportHeight = window.innerHeight;
```

### Значение

По возвращению, `intViewportHeight` это высота области просмотра окна браузера.

Свойство `window.innerHeight` доступно только для чтения; у него нет значения по умолчанию.

Примечания
----------

Свойство innerHeight поддерживается в любом объекте окна, например `window`, фрейме, наборе фреймов или вторичном окне.

Существует алгоритм для получения высоты области просмотра, включая, если отображается, горизонтальную полосу прокрутки.

Пример
------

### Assuming a frameset


```js
var intFrameHeight = window.innerHeight; // or

var intFrameHeight = self.innerHeight;
// вернёт высоту окна просмотра кадра в наборе кадров

var intFramesetHeight = parent.innerHeight;
// will return the height of the viewport of the closest frameset

var intOuterFramesetHeight = top.innerHeight;
// will return the height of the viewport of the outermost frameset
```

{{todo("link to an interactive demo here")}}
To change the size of a window, see `window.resizeBy()` (en-US) and `window.resizeTo()` (en-US).

To get the outer height of a window, i.e. the height of the whole browser window, see `window.outerHeight` (en-US).

### Графический пример

На следующем рисунке показана разница между externalHeight и innerHeight.

![Иллюстрация работы innerHeight и outerHeight](/ru/docs/Web/API/Window/innerHeight/firefoxinnervsouterheight2.png)

Спецификации
------------

| Specification |
| --- |
| CSSOM View Module # dom-window-innerheight |

Совместимость с браузерами
--------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Смотрите также
--------------

* `window.innerWidth` (en-US)
* `window.outerHeight` (en-US)
* `window.outerWidth` (en-US)
Window.scrollMaxX
=================

**Не стандартно:** Эта возможность не является стандартной и стандартизировать её пока никто не собирается. Не используйте её на сайтах, смотрящих во внешний мир: она будет работать не у всех пользователей. Также могут присутствовать большие несовместимости между реализациями и её поведение может в будущем измениться.

Свойство **`Window.scrollMaxX`** (только для чтения) возвращает максимальное количество пикселей в документе, которые могут быть прокручены по горизонтали.

Синтаксис
---------
```

xMax = window.scrollMaxX
```


* `xMax` количество пикселей.
Пример
------


```js
// Прокрутка к правому краю страницы
let maxX = window.scrollMaxX;

window.scrollTo(maxX, 0);
```

Примечания
----------

Не используйте это свойство для получения ширины документа с помощью window.innerWidth (en-US) + window.scrollMaxX. Это не равнозначно всей ширине документа, потому что `window.innerWidth` (en-US) включает в себя ширину полосы прокрутки, таким образом результат будет включать себя ширину документа с шириной полосы прокрутки. Вместо этого используйте `document.body.scrollWidth` (en-US). Смотрите также `window.scrollMaxY`.

Спецификации
------------

Не является частью спецификации.

Совместимость с браузерами
--------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
Window: событие pagehide
========================

Событие **`pagehide`** отправляется объекту `Window`, когда браузер скрывает текущую страницу в процессе отображения других страниц из истории сессии.

Например, когда пользователь нажимает на кнопку "Назад" в браузере, перед тем, как отобразиться предыдущая страница, текущая страница сгенерирует событие `pagehide`.

|  |  |
| --- | --- |
| Всплывает | Нет |
| Отменяемое | Нет |
| Интерфейс | `PageTransitionEvent` (en-US) |
| Свойство обработчика событий | `onpagehide` |

Примечания по использованию
---------------------------

По аналогии с событиями `unload` и `beforeunload`, это событие не всегда срабатывает в браузерах, особенно на мобильных. Например, событие `pagehide` может вовсе не сработать в следующем сценарии:

1. Пользователь открывает страницу с мобильного браузера.
2. Некоторое время спустя он переключается на другое приложение.
3. А затем он закрывает браузер при помощи менеджера приложений.

Тем не менее, в отличие от событий `unload` и `beforeunload`, это событие совместимо кешом для перехода вперёд и назад (bfcache), поэтому обработчик этого события не помещает странице быть закешированной в bfcache.

Поэтому, чтобы определить завершение пользовательской сессии предпочтительнее всего использовать событие `visibilitychange` (en-US). Если в браузерах не поддерживается `visibilitychange`, вместо него следует использовать событие `pagehide` как наиболее подходящую альтернативу.

В случае, если нужно определить именно наступление событий `unload`, то событие `pagehide` как нельзя лучше подойдёт для этого.

Дополнительные сведения о том, как данное событие связано с другими событиями жизненного цикла страницы, смотрите на странице Page Lifecycle API.

Примеры
-------

В следующем примере добавлен обработчик для отслеживания событий `pagehide`, чтобы что-то сделать на случай, если страница была сохранена в кеше для возможного повторного использования.


```js
window.addEventListener(
  "pagehide",
  (event) => {
    if (event.persisted) {
      /\* Страница была сохранена в кеше, её можно повторно использовать \*/
    }
  },
  false,
);
```


Этот обработчик также можно написать с помощью свойства обработчика события `onpagehide` в объекте `Window`:


```js
window.onpagehide = (event) => {
  if (event.persisted) {
    /\* Страница была сохранена в кеше, её можно повторно использовать \*/
  }
};
```

Спецификации
------------

| Specification |
| --- |
| HTML Standard # event-pagehide |

Совместимость с браузерами
--------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Смотрите также
--------------

* Событие `pageshow`.
* Page Lifecycle API содержит рекомендуемые практики по обработке поведения жизненного цикла страницы в веб-приложениях.
* PageLifecycle.js: JavaScript-библиотека, которая решает несоответствия в работе жизненного цикла страница в разных браузерах.
* Кэш для перехода назад и вперед объясняет, что такое кеш "назад/вперед", и его последствия для различных событий жизненного цикла страницы.
Window.devicePixelRatio
=======================

Сводка
------

**devicePixelRatio** - свойство глобального объекта window (en-US) (доступно только для чтения). Оно содержит отношение разрешения дисплея текущего устройства *в физических пикселях* к *разрешению* в *логических (CSS) пикселях*. Также это значение можно интерпретировать как отношение размера одного *физического пикселя* к размеру одного *логического* (*CSS) пикселя*.

Не существует событий или поддержки колбэков при изменении этого свойства (например, когда пользователь перетащил окно с одного дисплея на другой, имеющих различную плотность пикселей).

Синтаксис
---------
```

value = window.devicePixelRatio;
```

Полифил
-------

Свойство не поддерживается в IE ниже 11, однако в IE10 можно получить значение в виде отношения:
```

window.screen.deviceXDPI / window.screen.logicalXDPI
```

Спецификация
------------

| Specification |
| --- |
| CSSOM View Module # dom-window-devicepixelratio |

Совместимость с браузерами
--------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
Window.name
===========

Описание
--------

Свойство `name` может использоваться для установки и получения имени текущего окна. Оно становится доступным после его создания.

Синтаксис
---------


```js
// получение значения
string = window.name;
// установка значения
window.name = string;
```

Пример
------


```js
window.name = "lab\_view";
```

Замечания
---------

Имя окна используется, в основном, для задания свойства `target` гиперссылок и форм.

Также оно может использоваться в фреймворках для предоставления кросс-доменного обмена сообщениями (например, SessionVars и dojox.io.windowName из Dojo) как более безопасная альтернатива JSONP.
Window.parent
=============

Ссылка на родительский объект window или родительский iframe.

Если у объекта window нет родителя, то свойство parent данного объекта будет ссылаться на сам объект.

Если window загружен внутри `<iframe>` (en-US), `<object>` (en-US), или `<frame>` (en-US), то его parent - это объект window с элементом содержащим данный window.

Синтаксис
---------
```

parentWindow = window.parent;
```

Пример
------


```js
if (window.parent != window.top) {
  // мы находимся глубже чем один уровень
}
```

Спецификация
------------

* HTML5
Смотрите также
--------------

* `window.frameElement` возвращает элемент (например `<iframe>`), который содержит объект window.
* `window.top` возвращает ссылку на объект window самого верхнего уровня.
Window.matchMedia()
===================

Сводка
------

Возвращает новый объект `MediaQueryList` (en-US), использующийся для определения соответствия документа переданной строке медиавыражения (en-US).

Синтаксис
---------
```

mql = window.matchMedia(mediaQueryString)
```


где `mediaQueryString` является строкой медиавыражения, для которой будет возвращён новый объект `MediaQueryList` (en-US).

Пример
------


```js
if (window.matchMedia("(min-width: 400px)").matches) {
  /\* the viewport is at least 400 pixels wide \*/
} else {
  /\* the viewport is less than 400 pixels wide \*/
}
```


Данный код позволяет обрабатывать поведение по другому, когда размер окна очень узкий.

Смотрите Использование медиавыражений из кода (en-US) для дополнительных примеров.

Совместимость с браузерами
--------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Спецификация
------------

* The CSSOM View Module: The MediaQueryList Interface
Смотрите также
--------------

* Media queries (en-US)
* Using media queries from code (en-US)
* `MediaQueryList` (en-US)
* `MediaQueryListListener` (en-US)
Window.confirm()
================

Метод **`Window.confirm()`** отображает диалоговое окно, которое содержит две кнопки (OK и Cancel), а так же опциональное (необязательное) текстовое сообщение.

Синтаксис
---------
```

result = window.confirm(message);
```


* `message` опциональная (необязательная) строка, которая будет отображена в диалоговом окне.
* `result` булево значение, указывающее на нажатую кнопку OK или Cancel (`true` означает OK).
Пример
------
```

if (window.confirm("Do you really want to leave?")) {
  window.open("exit.html", "Thanks for Visiting!");
}
```


Результат:

![firefox confirm](/ru/docs/Web/API/Window/confirm/firefox_confirm_dialog.png)

Примечания
----------

Окна сообщений - модальные, они препятствуют получению пользователем доступа к другим частям страницы до тех пор, пока окно не будет закрыто. По этой причине, вам не следует злоупотреблять этой функцией. Более того, существуют более веские причины избегать использования диалоговых окон для подтверждения действий пользователя.

Пользователям Mozilla Chrome (например, расширений Firefox) следует использовать методы `nsIPromptService` как альтернативу.

Начиная с Chrome 46.0 этот метод заблокирован в `<iframe>` (en-US) до тех пор, пока атрибут sandbox не установлен в значение `allow-modal`.

Аргумент является опциональным и необязательным согласно спецификации.

Спецификации
------------

| Specification |
| --- |
| HTML Standard # dom-confirm-dev |

Совместимость с браузерами
--------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Смотрите также
--------------

* `alert`
* `prompt`
Window.scrollMaxY
=================

**Не стандартно:** Эта возможность не является стандартной и стандартизировать её пока никто не собирается. Не используйте её на сайтах, смотрящих во внешний мир: она будет работать не у всех пользователей. Также могут присутствовать большие несовместимости между реализациями и её поведение может в будущем измениться.

Свойство **`Window.scrollMaxY`** возвращает максимальное число пикселей по вертикали, доступных для прокрутки в документе. Только для чтения.

Синтаксис
---------
```

yMax = window.scrollMaxY
```


* `yMax` - число пикселей.
Пример
------


```js
// Пролистать в самый низ
var maxY = window.scrollMaxY;

window.scrollTo(0, maxY);
```

Примечания
----------

Не используйте это свойство для получения общей высоты документа, так как оно не равнозначно `window.innerHeight` + window.scrollMaxY, потому что `window.innerHeight` включает ещё ширину любой видимой горизонтальной полосы прокрутке. Вместо этого применяйте `document.body.scrollHeight`. Смотрите также `window.scrollMaxX` и `window.scrollTo`.

Спецификация
------------

Не является частью какой-либо спецификации.

Совместимость с браузерами
--------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
Window.length
=============

Сводка
------

Возвращает кол-во фреймов (например `<frame>` (en-US) или `<iframe>` (en-US)) в текущем окне.

Синтаксис
---------
```

framesCount = window.length;
```


* `framesCount` - кол-во фреймов на странице.
Пример
------


```js
if (window.length) {
  // Этот документ содержит фреймы
}
```

Спецификация
------------

| Specification |
| --- |
| HTML Standard # dom-length-dev |
Window.history
==============

`Window.history` является свойством только для чтения, ссылающимся на объект `History`, который предоставляет интерфейс для манипулирования историей сессии браузера (страницы, посещённые в текущей вкладке или фрейме, который был загружен на текущей странице).

Смотрите Управление историей браузера для примеров и подробностей. В частности, та статья объясняет особенности безопасности методов `pushState()` и `replaceState()`, о которых вы должны быть в курсе перед их использованием.

Синтаксис
---------
```

var historyObj = window.history;
```

Пример
------


```js
history.back(); // эквивалент клика по кнопке назад
history.go(-1); // эквивалент history.back();
```

Замечания
---------

Для последней загруженной страницы вы можете увидеть список предыдущих страниц, которые доступны через объект `History`, в выпадающем списке к кнопкам "назад" и "вперёд".

По причинам безопасности объект `History` не позволяет непривилегированному коду получать доступ к URL других страниц, но позволяет осуществлять навигацию по истории сессии.

Не существует способа очистить историю сессии или выключить навигацию посредствам кнопок "назад"/"вперёд" из непривилегированного кода. Наиболее близкое решение использовать метод `location.replace()`, который заменяет текущий пункт в истории сессии на предоставленный URL.

Спецификации
------------

| Specification |
| --- |
| HTML Standard # the-history-interface |
gamepaddisconnected
===================

Событие `gampaddisconnected` вызывается, когда браузер обнаруживает, что геймпад был отключён.

Основная информация
-------------------

Спецификация

Gamepad

Интерфейс

Event

Всплывающее

Нет

Отменяемое

Нет

Цель

DefaultView (`<window>`)

Действие по умолчанию

Отсутствует

Свойства
--------

| Свойство | Тип | Описание |
| --- | --- | --- |
| `target` Только для чтения  | `EventTarget` | Цель события (самый верхний элемент DOM дерева). |
| `type` Только для чтения  | `DOMString` | Тип события. |
| `bubbles` Только для чтения  | `Boolean` | Является ли событие всплывающим. |
| `cancelable` Только для чтения  | `Boolean` | Является ли событие отменяемым. |
| `gamepad` Только для чтения  | `Gamepad` | Единственный атрибут, предоставляющий доступ к данным геймпада для этого события. |

Связанные события
-----------------

* `gamepadconnected (en-US)`
Смотрите также
--------------

* Using Gamepad API (en-US)
Window.closed
=============

Общая информация
----------------

Данное свойство только для чтения указывает, открыто ли целевое окно или нет.

Синтаксис
---------
```

isClosed = windowRef.closed;
```


`isClosed`

Переменная логического типа. Возможные значения:

* `true`: Окно было закрыто.
* `false`: Окно открыто.

Примеры
-------

### Изменение URL окна браузера со всплывающего окна

Следующий пример демонстрирует, как всплывающее окно может изменять URL окна, которое его открыло. Перед тем, как изменить URL, оно проверяет, имеет ли текущее окно свойство window.opener (en-US) и не закрыто ли оно:


```js
// проверяет, если window.opener существует и не закрыт
if (window.opener && !window.opener.closed) {
  window.opener.location.href = "http://www.mozilla.org";
}
```


Заметьте, что всплывающие окна имеют доступ только к окнам, которые их открыли.

### Обновление ранее открытого всплывающего окна

В данном примере функция `refreshPopupWindow()` вызывает метод `reload` у объекта локации всплывающего окна для обновления его данных. Если всплывающее окно ещё не было открыто или пользователь его закрыл, открывает новое окно.


```js
var popupWindow = null;

function refreshPopupWindow() {
  if (popupWindow && !popupWindow.closed) {
    // popupWindow открыто, обновите его
    popupWindow.location.reload(true);
  } else {
    // открывает новое всплывающее окно
    popupWindow = window.open("popup.html", "dataWindow");
  }
}
```

Спецификация
------------

HTML5
Window.frameElement
===================

Сводка
------

Возвращает элемент (например `<iframe>` или `<object>`), в который встроено окно, или `null`, если это окно верхнего уровня.

Синтаксис
---------
```

frameEl = window.frameElement;
```


* `frameEl` это элемент, в который встроено окно, или `null`, если это окно верхнего уровня
Пример
------


```js
var frameEl = window.frameElement;
// Если мы внутри фрейма, то изменить его URL на 'http://mozilla.org/'
if (frameEl) {
  frameEl.src = "http://mozilla.org/";
}
```

Примечания
----------

Заметьте, что несмотря на своё имя, свойство также работает для документов внутри `<object>` и других встраиваемых элементов.

Спецификация
------------

WHATWG

Совместимость с браузерами
--------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Смотрите также
--------------

* `window.frames` возвращает массивоподобный объект, включающий список прямых суб-фреймов данного окна.
* `window.parent` возвращает родительское окно, которое является окном, содержащим frameElement дочернего окна.
Window.scroll()
===============

Прокручивает страницу до указанного места.

Синтаксис
---------
```

window.scroll(x-coord,y-coord)
```

### Параметры

* `x-coord` - это x-координата пикселя, который окажется в верхнем левом углу экрана.
* `y-coord`- это y-координата пикселя, который окажется в верхнем левом углу экрана.
Пример
------


```html
<!-- прокрутить до пикселя с y = 100 -->

<button onClick="scroll(0, 100);">прокрутить</button>
```

Замечания
---------

window.scrollTo (en-US) имеет тот же самый эффект. Для того, чтобы прокрутить на некоторое количество пикселей относительно текущей позиции, используйте window.scrollBy (en-US). Смотрите также window.scrollByLines (en-US), window.scrollByPages (en-US).

Спецификация
------------

* CSSOM: scroll() Method
Window: событие hashchange
==========================

Событие **`hashchange`** возникает, когда изменяется «якорь» URL (часть URL, которая начинается с символа `#`).

Синтаксис
---------

Используйте имя события в таких методах, как `addEventListener()`, или устанавливайте свойство обработчика события.


```js
addEventListener("hashchange", (event) => {});
onhashchange = (event) => {};
```

Тип события
-----------

`HashChangeEvent` (en-US). Наследуется от `Event`.

Event

HashChangeEvent

(en-US)Свойства события
----------------

`HashChangeEvent.newURL` (en-US) Только для чтения 

Строка, содержащая новый URL, на который происходит перенаправление.

`HashChangeEvent.oldURL` (en-US) Только для чтения 

Строка, содержащая старый URL, с которого происходит перенаправление.

Псевдонимы обработчика события
------------------------------

В дополнение к интерфейсу `Window`, свойство обработчика события `onhashchange` также доступно на следующих объектах:

* `HTMLBodyElement`
* `HTMLFrameSetElement` (en-US)
* `SVGSVGElement` (en-US)
Примеры
-------

Можно использовать событие `hashchange` с методом `addEventListener`:


```js
window.addEventListener(
  "hashchange",
  () => {
    console.log("Якорь был изменён!");
  },
  false,
);
```


Или использовать свойство обработчика события `onhashchange`:


```js
function locationHashChanged() {
  if (location.hash === "#cool-page-part") {
    console.log("Вы перешли к замечательной части страницы!");
  }
}

window.onhashchange = locationHashChanged;
```

Спецификации
------------

| Specification |
| --- |
| HTML Standard # event-hashchange |
| HTML Standard # handler-window-onhashchange |

Совместимость с браузерами
--------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Смотрите также
--------------

* Событие `popstate`
Window.stop()
=============

Аннотация
---------

Этот метод прекращает загрузку страницы.

Синтаксис
---------
```

window.stop()
```

Пример
------


```js
window.stop();
```

Примечания
----------

Метод stop() равноценный клику кнопки стоп в браузере. Из-за порядка в котором загружаются скрипты, этот метод не может остановить загрузку документа в котором он вызывается, но он остановит загрузку больших картинок, новых окон и остальных объектов загрузка которых отложена.

Спецификации
------------

| Specification |
| --- |
| HTML Standard # dom-window-stop-dev |

Совместимость с браузерами
--------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.