recursal/MDN huggingface dataset:
ServiceWorker.onstatechange
===========================

Обработчик события, вызываемый при срабатывании события `statechange`; по сути, срабатывает при изменении `ServiceWorker.state`.

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

ServiceWorker.onstatechange = function(statechangeevent) { ... }
ServiceWorker.addEventListener('statechange', function(statechangeevent) { ... } )
```

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

Данный фрагмент кода из примера событий service worker (демо) возвращает состояние при каждом его изменении.


```js
var serviceWorker;
if (registration.installing) {
  serviceWorker = registration.installing;
  document.querySelector("#kind").textContent = "installing";
} else if (registration.waiting) {
  serviceWorker = registration.waiting;
  document.querySelector("#kind").textContent = "waiting";
} else if (registration.active) {
  serviceWorker = registration.active;
  document.querySelector("#kind").textContent = "active";
}

if (serviceWorker) {
  logState(serviceWorker.state);
  serviceWorker.addEventListener("statechange", function (e) {
    logState(e.target.state);
  });
}
```


Обратите внимание, что при срабатывании `statechange`, ссылки на service worker могли измениться. Например:


```js
navigator.serviceWorker.register(..).then(function(swr) {
  swr.installing.state == "installing"
  swr.installing.onstatechange = function() {
    swr.installing == null;
    // At this point, swr.waiting OR swr.active might be true. This is because the statechange
    // event gets queued, meanwhile the underlying worker may have gone into the waiting
    // state and will be immediately activated if possible.
  }
})
```

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

| Specification |
| --- |
| Service Workers # dom-serviceworker-onstatechange |

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

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

Свойство интерфейса `ServiceWorker` **`state`**, доступное только для чтения является строкой, показывающей текущее состояние данного Service Worker. Его возможные значения: `installing`, `installed,` `activating`, `activated` и `redundant`.

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

someURL = ServiceWorker.state
```

### Значение

Определение `ServiceWorkerState` (en-US) (см. спецификацию)

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

Это фрагмент кода из примера событий Service Worker (демо). Данный код возвращает значение `ServiceWorker.state` при каждом изменении состояния.


```js
var serviceWorker;
if (registration.installing) {
  serviceWorker = registration.installing;
  document.querySelector("#kind").textContent = "installing";
} else if (registration.waiting) {
  serviceWorker = registration.waiting;
  document.querySelector("#kind").textContent = "waiting";
} else if (registration.active) {
  serviceWorker = registration.active;
  document.querySelector("#kind").textContent = "active";
}

if (serviceWorker) {
  logState(serviceWorker.state);
  serviceWorker.addEventListener("statechange", function (e) {
    logState(e.target.state);
  });
}
```

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

| Specification |
| --- |
| Service Workers # service-worker-state |

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

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

Возвращает URL, указывающий на скрипт данного Service Worker, определённый с помощью `ServiceWorkerRegistration`. URL должен находиться в том же домене, что и документ, регистрирующий `ServiceWorker`.

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

someURL = ServiceWorker.scriptURL
```

### Значение

`USVString` (en-US) (см. WebIDL-определение USVString.)

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


```js
TBD;
```

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

| Specification |
| --- |
| Service Workers # service-worker-url |

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

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

Свойство **`disabled`** интерфейса `StyleSheet` определяет будет ли таблица стилей защищена от применения в документе

Таблицу стилей можно отключить, установив для этого свойства значение `true`, или, если она неактивна, с помощью альтернативной таблице стилей (en-US). Заметьте, что `disabled == false` не гарантирует применение таблице стилей (она может быть удалена из документа, к примеру).

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

bool = stylesheet.disabled
```

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


```js
// Если таблица стилей отключена...
if (stylesheet.disabled) {
  // ... применять стили в строке.
}
```

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

| Specification |
| --- |
| CSS Object Model (CSSOM) # dom-stylesheet-disabled |

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

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

Свойство только для чтения **`MediaRecorder.state`** возвращает текущее состояние определённого объекта `MediaRecorder`.

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

var state = MediaRecorder.state
```

### Значения

Объект AnimationPlayState содержит одно из нижеперечисленных значений:

| Значение | Описание |
| --- | --- |
| `inactive` | Запись не ведётся — она ещё не была начата или уже была осуществлена и остановлена. |
| `recording` | Запись начата и UA собирает данные. |
| `paused` | Запись была начата, но поставлена на паузу, не остановлена и ещё не возобновлена. |

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


```js
...

  record.onclick = function() {
    mediaRecorder.start();
    console.log(mediaRecorder.state);
    // Должно вернуть "recording"
    console.log("захват начат");
  }

...
```

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

| Specification |
| --- |
| MediaStream Recording # dom-mediarecorder-state |

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

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

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

* Использование MediaRecorder API (en-US)
* Веб-диктофон: MediaRecorder + getUserMedia + Web Audio API от Chris Mills (исходники на Github.)
* simpl.info Демонстрация MediaStream Recording от Sam Dutton.
* `Navigator.getUserMedia`
MediaRecorder.requestData()
===========================

Метод **`MediaRecorder.requestData()`** (часть MediaRecorder API (en-US)) используется, чтобы поднять `dataavailable` событие содержащее `Blob` объект захваченных медиа-данных как это было когда метод был вызван. This can then be grabbed и манипулировать как необходимо.

When the `requestData()` method is invoked, the browser queues a task that runs the following steps:

1. If `MediaRecorder.state` is not "recording", raise a DOM `InvalidState` error and terminate these steps. If `MediaRecorder.state` is "recording", continue to the next step.
2. Raise a `dataavailable` event containing a `Blob` of the currently captured data (the Blob is available under the event's `data` attribute.)
3. Create a new Blob and place subsequently captured data into it.
Syntax
------
```

MediaRecorder.requestData()
```

### Errors

An `InvalidState` error is raised if the `requestData()` method is called while the `MediaRecorder` object's `MediaRecorder.state` is not "recording" — the media cannot be captured if recording is not occurring.

Example
-------


```js
...

  captureMedia.onclick = function() {
    mediaRecorder.requestData();
    // makes snapshot available of data so far
    // ondataavailable fires, then capturing continues
    // in new Blob
  }

...
```

Specifications
--------------

| Specification |
| --- |
| MediaStream Recording # dom-mediarecorder-requestdata |

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

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

See also
--------

* Using the MediaRecorder API (en-US)
* Web Dictaphone: MediaRecorder + getUserMedia + Web Audio API visualization demo, by Chris Mills (source on Github.)
* simpl.info MediaStream Recording demo, by Sam Dutton.
* `Navigator.getUserMedia`
MediaRecorder.MediaRecorder()
=============================

**`MediaRecorder()`** конструктор `MediaRecorder` объекта который будет делать запись переданного `MediaStream`.

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

var mediaRecorder = new MediaRecorder(stream[, options]);
```

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

**`stream`**

Объект потока `MediaStream` источника из которого будет производиться запись. Может быть потоком, созданным `navigator.mediaDevices.getUserMedia()` или `<audio>`, `<video>` или `<canvas>` элементами.

**`options`** Необязательный

Объект, содержащий следующие свойства:

* `mimeType`: `mime` тип, определяет формат результата записи, который нужно использовать в качестве контейнера для создаваемого объекта `MediaRecorder`. Можно просто указать формат контейнера, а браузер сам выберет нужный кодек для записи аудио/видео, или используйте параметр codecs или параметр `profiles` для расширения информации об использовании и тонкой конфигурации кодеков. Приложения, предварительно, могут проверять поддержку браузерами определённого типа из свойства `mimeType` , вызывая метод `MediaRecorder.isTypeSupported()` (en-US).
* `audioBitsPerSecond`: Скорость записи медиа данных аудио.
* `videoBitsPerSecond`: Скорость записи медиа данных видео.
* `bitsPerSecond`: Скорость записи медиаданных аудио и видео. Может определяться вместо верхних двух. Если определяется вместе с одним из свойств выше, имеет меньший приоритет, и используется вместо отсутствующей настройки выше..

**Примечание:** Если значения битов в секунду не указаны для видео и / или аудио, для видео по умолчанию принимается значение 2,5 Мбит / с, а для аудио по умолчанию используется адаптивный режим, в зависимости от частоты дискретизации и количества каналов.

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

`NotSupportedError`

Определяет MIME тип, не поддерживающийся браузером.

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

В этом примере показано, как создать медиа рекордер для указанного потока, чья скорость передачи звука составляет 128 Кбит / с, а скорость передачи видео - 2,5 Мбит / с. Записанные мультимедийные данные будут храниться в контейнере MP4 (поэтому, если вы соберёте порции мультимедийных данных и сохраните их на диск, они будут в файле с разрешением MP4).


```js
...

if (navigator.mediaDevices.getUserMedia) {
  var constraints = { audio: true, video: true };
  var chunks = [];

  var onSuccess = function(stream) {
    var options = {
      audioBitsPerSecond : 128000,
      videoBitsPerSecond : 2500000,
      mimeType : 'video/mp4'
    }
    var mediaRecorder = new MediaRecorder(stream,options);
    m = mediaRecorder;

...
```

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

| Specification |
| --- |
| MediaStream Recording # dom-mediarecorder-mediarecorder |

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

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

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

* Использование MediaRecorder API (en-US)
* Веб диктофон: MediaRecorder + getUserMedia + Web Audio API visualization demo, by Chris Mills (source on Github.)
* simpl.info MediaStream Recording demo, by Sam Dutton.
* `Navigator.mediaDevices.getUserMedia()` (en-US)
MediaRecorder.start()
=====================

Метод **`MediaRecorder.start()`** (часть MediaRecorder API (en-US)) используется для начала захвата медиа `Blob`.

When the `start()` method is invoked, the UA queues a task that runs the following steps:

1. If the `MediaRecorder.state` is not "inactive", raise a DOM `InvalidState` error and terminate these steps. if the `MediaRecorder.state` is "inactive", continue on to the next step.
2. Set the `MediaRecorder.state` to "recording" and wait until media becomes available from the `stream` passed into `Navigator.getUserMedia`.
3. Once data becomes available, raise a `MediaRecorder.start` event and start gathering the data into a `Blob` (see FILE-API).
4. If the `timeSlice` argument has been provided, once that many milliseconds of data have been collected — or a minimum time slice imposed by the UA, whichever is greater — raise a `MediaRecorder.dataavailable` event containing the Blob of collected data, and start gathering a new Blob of data. If `timeSlice` has not been provided, continue gathering data into the original Blob.
5. When the `stream` is ended, set `MediaRecorder.state` to "inactive" and stop gathering data.
6. Raise a `MediaRecorder.dataavailable` event containing the Blob of data.
7. Raise a `MediaRecorder.stop` (en-US) event.

**Примечание:** If the browser is unable to start recording or continue recording, it *will* raise a `DOMError` (en-US) event, followed by a `MediaRecorder.dataavailable` event containing the Blob it has gathered, followed by the `MediaRecorder.stop` (en-US) event.

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

MediaRecorder.start(timeslice)
```

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

`timeslice` Необязательный

Этот параметр принимает значение в миллисекундах, и переопределяет длину куска захвата медиа для возвращения в каждом Blob. Если не указан, то все медиа данные будут занесены в один Blob, только если не был вызван метод `MediaRecorder.requestData`.

### Ошибки

An `InvalidState` error is raised if the `start()` method is called while the `MediaRecorder` object's `MediaRecorder.state` is not "inactive" — it makes no sense to start media capture if it is already happening.

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


```js
...

  record.onclick = function() {
    mediaRecorder.start();
    console.log("рекордер запущен");
  }

...
```

Specifications
--------------

| Specification |
| --- |
| MediaStream Recording # dom-mediarecorder-start |

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

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

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

* Использование MediaRecorder API (en-US)
* Веб-диктофон: MediaRecorder + getUserMedia + Web Audio API от Chris Mills (исходники на Github.)
* simpl.info Пример использования MediaStream от Sam Dutton.
* `Navigator.getUserMedia`
VRDisplayCapabilities.hasPosition
=================================

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

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

Доступное только для чтения свойство **`hasPosition`** интерфейса `VRDisplayCapabilities` возвращает `true` если VR-устройство может отслеживать и возвращать информацию о своём местоположении.

**Примечание:** Это свойство было частью старого WebVR API, который был заменён на WebXR Device API.

### Значение

`Boolean` (en-US).

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

Смотрите примеры использования в `VRDisplayCapabilities`.

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

Это свойство было частью старого WebVR API, который был заменён на WebXR Device API. Больше не планируется сделать его стандартом.

Пока все браузеры не реализуют новые WebXR API (en-US), рекомендуется использовать такие фреймворки как A-Frame, Babylon.js, Three.js или полифил для разработки приложений WebXR, которые будут работать во всех браузерах.

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

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

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

* WebVR API.
BackgroundFetchManager.fetch()
==============================

Limited availability
--------------------

This feature is not Baseline because it does not work in some of the most widely-used browsers.

* Learn more
* See full compatibility
* Report feedback
Метод **`fetch()`** интерфейса `BackgroundFetchManager` возвращает `Promise`, результатом обработки которого будет объект `BackgroundFetchRegistration` для переданного массива URL-адресов или объектов `Request`.

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


```js
fetch(id, requests);
fetch(id, requests, options);
```

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

`id`

Определяемый разработчиком идентификатор, который может быть передан другим методам для получения `backgroundFetchRegistration`.

`requests`

Объект `RequestInfo` или массив таких объектов.

`options` Необязательный

Объект `BackgroundFetchOptions`.

### Возвращаемое значение

`Promise`, результатом обработки которого будет объект `BackgroundFetchRegistration`.

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

`TypeError`

Возникает, если запрос не передан, либо если режим запроса 'no-cors', либо если нет сервис-воркера, либо если уже существует запрос с таким идентификатором, либо запрос завершился с ошибкой.

`AbortError` `DOMException` (en-US)

Указывает на то, что запрос был прерван.

`NotAllowedError` `DOMException` (en-US)

Указывает на то, что пользователю не было предоставлено разрешение на фоновые запросы.

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

Следующие примеры показывают, как использовать `fetch()`, чтобы создать `BackgroundFetchRegistration`. При активном `сервис-воркере`, используйте свойство `ServiceWorkerRegistration.backgroundFetch` (en-US) для доступа к объекту `BackgroundFetchManager` и вызовите его метод `fetch()`.


```js
navigator.serviceWorker.ready.then(async (swReg) => {
  const bgFetch = await swReg.backgroundFetch.fetch(
    "my-fetch",
    ["/ep-5.mp3", "ep-5-artwork.jpg"],
    {
      title: "Episode 5: Interesting things.",
      icons: [
        {
          sizes: "300x300",
          src: "/ep-5-icon.png",
          type: "image/png",
        },
      ],
      downloadTotal: 60 \* 1024 \* 1024,
    },
  );
});
```

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

| Specification |
| --- |
| Background Fetch # background-fetch-manager-fetch |

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

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
BackgroundFetchManager.get()
============================

Limited availability
--------------------

This feature is not Baseline because it does not work in some of the most widely-used browsers.

* Learn more
* See full compatibility
* Report feedback
Метод **`get()`** интерфейса `BackgroundFetchManager` возвращает `Promise`, результатом обработки которого будет объект `BackgroundFetchRegistration`, связанный с переданным `id`, или `undefined`, если идентификатор не найден.

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


```js
get(id);
```

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

`id`

Идентификатор `backgroundFetchRegistration`, определяемый при вызове `fetch()`.

### Возвращаемое значение

`Promise`, результатом обработки которого будет объект `BackgroundFetchRegistration` или `undefined`.

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

Следующие примеры показывают, как использовать `get()` для получения `BackgroundFetchRegistration`. При активном `сервис-воркере` используйте `ServiceWorkerRegistration.backgroundFetch` (en-US) для доступа к объекту `BackgroundFetchManager` и вызовите его метод `get()`.


```js
navigator.serviceWorker.ready.then(async (swReg) => {
  const bgFetch = await swReg.backgroundFetch.get('my-fetch');
});
my code block
```

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

| Specification |
| --- |
| Background Fetch # background-fetch-manager-get |

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

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
BackgroundFetchManager.getIds()
===============================

Limited availability
--------------------

This feature is not Baseline because it does not work in some of the most widely-used browsers.

* Learn more
* See full compatibility
* Report feedback
Метод **`getIds()`** интерфейса `BackgroundFetchManager` возвращает идентификаторы всех зарегистрированных фоновых запросов.

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


```js
getIds();
```

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

Отсутствуют.

### Возвращаемое значение

`Promise`, результатом обработки которого будет `массив` `строк`.

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

Отсутствуют.

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

Следующие примеры показывают, как получить идентификаторы всех зарегистрированных фоновых запросов. При активном `сервис-воркере` используйте свойство `ServiceWorkerRegistration.backgroundFetch` (en-US) для доступа к объекту `BackgroundFetchManager` и вызовите его метод `getIds()`.


```js
navigator.serviceWorker.ready.then(async (swReg) => {
  const ids = await swReg.backgroundFetch.getIds();
});
```

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

| Specification |
| --- |
| Background Fetch # background-fetch-manager-get-ids |

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

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
Cross-global fetch usage
========================

Эта статья объясняет крайний случай, который случается с fetch (и потенциально с другими API, предоставляющими такой же способ получения данных). Когда cross-origin fetch, включающий относительный URL, инициируется из `<iframe>` (en-US), относительный URL может использовать текущий глобальный location вместо того что задаётся в iframe.

Крайний случай
--------------

Многие сайты никогда не столкнутся с таким поведением. Чтобы увидеть его:

* Вам понадобится same-origin iframe
* Этот same-origin iframe должен располагаться с другим base URL
* Вы должны использовать функцию fetch cross-global, т. е. `frame.contentWindow.fetch()`
* Переданный в fetch URL должен быть относительным
Проблема
--------

В прошлом мы разрешали относительный URL адрес вместо текущего глобального, для примера:


```js
let absolute = new URL(relative, window.location.href);
```


Это не проблема как таковая. Просто разные API, демонстрирующие такое поведение, делали его несовместимым с поведением, определённым в спецификации, что может привести к проблемам в дальнейшем.

Решение
-------

В Firefox 60 и далее, Mozilla сопоставляет относительный URL с глобальным, которой принадлежит используемой функции `fetch()` (смотри Firefox bug 1432272). Таким образом в случае описанном выше, он разрешается в зависимости от расположения iframe:


```js
let absolute = new URL(relative, frame.contentWindow.location.href);
```


Ведётся много дискуссий о том, как привести новые спецификации в соответствие с этим изменением поведения, для того чтобы уменьшить возможные проблемы в будущем.
GlobalEventHandlers.onclose
===========================

Baseline 2022
-------------

Newly availableSince March 2022, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.

* Learn more
* See full compatibility
* Report feedback
Обработчик события для событий закрытия, отправляется в окно. (Не доступен в Firefox 2 или Safari)

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

window.onclose = funcRef;
```

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

* `funcRef` является ссылкой на функцию.
Пример
------


```js
window.onclose = resetThatServerThing;
```

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

| Specification |
| --- |
| HTML Standard # event-close |

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

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