recursal/MDN huggingface dataset:
WebGLProgram
============

**WebGLProgram** это часть WebGL API и комбинация двух составляющих `WebGLShader` (en-US)-ов, состоящих из вертикального и фрагментного шейдеров (оба написаны на GLSL). Затем они связываются в готовую к использованию программу.


```js
var program = gl.createProgram();

// Прикрепление уже существующих шейдеров
gl.attachShader(program, vertexShader);
gl.attachShader(program, fragmentShader);

gl.linkProgram(program);

if (!gl.getProgramParameter(program, gl.LINK\_STATUS)) {
  var info = gl.getProgramInfoLog(program);
  throw "Could not compile WebGL program. \n\n" + info;
}
```


Смотрите `WebGLShader` (en-US) для информации о том, как создать `vertexShader` и `fragmentShader` в примере выше.

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

### Использование программы

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


```js
// Использование программы
gl.useProgram(program);

// Связывание существующих атрибутов данных
gl.bindBuffer(gl.ARRAY\_BUFFER, buffer);
gl.enableVertexAttribArray(attributeLocation);
gl.vertexAttribPointer(attributeLocation, 3, gl.FLOAT, false, 0, 0);

// Отрисовка простого треугольника
gl.drawArrays(gl.TRIANGLES, 0, 3);
```

### Удаление программы

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


```js
gl.deleteProgram(program);
```

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

| Specification |
| --- |
| WebGL Specification # 5.6 |

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

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

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

* `WebGLShader` (en-US)
* `WebGLRenderingContext.attachShader()` (en-US)
* `WebGLRenderingContext.compileShader()`
* `WebGLRenderingContext.createProgram()` (en-US)
* `WebGLRenderingContext.createShader()` (en-US)
* `WebGLRenderingContext.deleteProgram()` (en-US)
* `WebGLRenderingContext.deleteShader()` (en-US)
* `WebGLRenderingContext.detachShader()` (en-US)
* `WebGLRenderingContext.getAttachedShaders()` (en-US)
* `WebGLRenderingContext.getProgramParameter()` (en-US)
* `WebGLRenderingContext.getProgramInfoLog()` (en-US)
* `WebGLRenderingContext.getShaderParameter()` (en-US)
* `WebGLRenderingContext.getShaderPrecisionFormat()` (en-US)
* `WebGLRenderingContext.getShaderInfoLog()`
* `WebGLRenderingContext.getShaderSource()` (en-US)
* `WebGLRenderingContext.isProgram()` (en-US)
* `WebGLRenderingContext.isShader()` (en-US)
* `WebGLRenderingContext.linkProgram()` (en-US)
* `WebGLRenderingContext.shaderSource()`
* `WebGLRenderingContext.useProgram()` (en-US)
* `WebGLRenderingContext.validateProgram()` (en-US)
BackgroundFetchManager
======================

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
**`BackgroundFetchManager`** является интерфейсом Background Fetch API, который представляет собой коллекцию ключ-значение, где ключами являются идентификаторы фоновых запросов, а значениями - объекты `BackgroundFetchRegistration`.

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

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

Методы
------

`fetch()`

Возвращает `Promise`, результатом обработки которого будет объект `BackgroundFetchRegistration` для переданного массива URL-адресов или объектов `Request`.

`get()`

Возвращает `Promise`, результатом обработки которого будет объект `BackgroundFetchRegistration`, связанный с переданным `id`, или `undefined`, если идентификатор не найден.

`getIDs()`

Возвращает идентификаторы всех зарегистрированных фоновых запросов.

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

Пример ниже показывает, как можно получить экземпляр объекта `BackgroundFetchManager` из объекта `ServiceWorkerRegistration`, а затем вызвать метод `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 |

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

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

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

Объект **`Bluetooth`** интерфейса Web Bluetooth API (en-US) возвращает объект `Promise` объекту `BluetoothDevice` (en-US) с указанными параметрами.

Интерфейс
---------
```

interface Bluetooth : EventTarget {
  [SecureContext] Promise<boolean> getAvailability();
  [SecureContext] attribute EventHandler onavailabilitychanged;
  [SecureContext, SameObject] readonly attribute BluetoothDevice? referringDevice;
  [SecureContext] Promise<BluetoothDevice> requestDevice(optional RequestDeviceOptions options);
};
Bluetooth implements BluetoothDeviceEventHandlers;
Bluetooth implements CharacteristicEventHandlers;
Bluetooth implements ServiceEventHandlers;
```

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

*Наследует свойства от родителя `EventTarget`.*

`Bluetooth.referringDevice` Только для чтения 

Возвращает ссылку на устройство, если таковое имеется, из которого пользователь открыл страницу. Например, Eddystone beacon может найти URL - адрес, который позволяет открыть строка агента адреса. Устройство Bluetooth предоставляет маяк, который будет доступен через `navigator.bluetooth.referringDevice`.

### События

`Bluetooth.onavailabilitychanged`

Обработчик событий, который запускается при возникновении события типа `availabilitychanged`.

Методы
------

`Bluetooth.getAvailability()` (en-US)

Возвращает `Promise`, который возвращает `Boolean`, указывая, поддерживает ли браузер Bluetooth. Некоторые браузеры дают возможность управлять возвращаемым значением этого метода.

`Bluetooth.requestDevice()` (en-US)

Возвращает `Promise` объекту `BluetoothDevice` (en-US) с переданными параметрами.

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

| Specification |
| --- |
| Web Bluetooth # bluetooth |

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

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

`GamepadEvent` интерфейс `Gamepad API` содержит ссылки на геймпады, подключённые к системе, передающиеся при возникновении событий Window.gamepadconnected и Window.gamepaddisconnected.

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

`GamepadEvent.gamepad` Только для чтения 

Возвращает объект `Gamepad`, предоставляющий доступ к данным геймпада, для возникнувшего события.

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

Свойства геймпада передаются при возникновении события Window.gamepadconnected.


```js
window.addEventListener("gamepadconnected", function (e) {
  console.log(
    "Gamepad connected at index %d: %s. %d buttons, %d axes.",
    e.gamepad.index,
    e.gamepad.id,
    e.gamepad.buttons.length,
    e.gamepad.axes.length,
  );
});
```


И события Window.gamepaddisconnected.


```js
window.addEventListener("gamepaddisconnected", function (e) {
  console.log(
    "Gamepad disconnected from index %d: %s",
    e.gamepad.index,
    e.gamepad.id,
  );
});
```

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

| Specification |
| --- |
| Gamepad # gamepadevent-interface |

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

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

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

Using the Gamepad API (en-US)
AbortController
===============

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

Интерфейс **`AbortController`** представляет объект контроллера, который позволяет вам при необходимости обрывать один и более DOM запросов.

Вы можете создать новый объект `AbortController` используя конструктор `AbortController.AbortController()`. Взаимодействие с DOM запросами сделано с использованием объекта `AbortSignal`.

Конструктор
-----------

`AbortController.AbortController()`

Создаёт новый экземпляр `AbortController`.

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

`AbortController.signal` Только для чтения 

Возвращает экземпляр `AbortSignal`, который может быть использован для коммуникаций/остановки DOM запросов.

Методы
------

`AbortController.abort()`

Прерывает DOM запрос до момента его завершения. Это даёт возможность обрывать fetch запросы, потребителей любых ответов с `Body` и потоки.

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

В текущем фрагменте мы пытаемся скачать видео используя Fetch API.

Для начала мы создадим контроллер используя конструктор `AbortController()`, затем возьмём ссылку на ассоциированный с ним объект `AbortSignal` используя свойство `AbortController.signal`.

При инициализации fetch запроса, мы передаём `AbortSignal` в качестве параметра (смотрите ниже `{signal}`). Это ассоциирует сигнал и контроллер с fetch запросом и даёт нам возможность остановить запрос вызовом метода `AbortController.abort()`, что можно увидеть во втором addEventListener.


```js
var controller = new AbortController();
var signal = controller.signal;

var downloadBtn = document.querySelector('.download');
var abortBtn = document.querySelector('.abort');

downloadBtn.addEventListener('click', fetchVideo);

abortBtn.addEventListener('click', function() {
  controller.abort();
  console.log('Download aborted');
});

function fetchVideo() {
  ...
  fetch(url, {signal}).then(function(response) {
    ...
  }).catch(function(e) {
    reports.textContent = 'Download error: ' + e.message;
  })
}
```


**Примечание:** При вызове `abort()`, промис `fetch()` будет отклонён с `AbortError`.

Вы можете найти полный рабочий пример на GitHub — смотрите abort-api (и живой пример).

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

| Specification |
| --- |
| DOM Standard # interface-abortcontroller |

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

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

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

* Fetch API
* Abortable Fetch от Jake Archibald
SVGTextElement
==============

Интерфейс **`SVGTextElement`** соответствует элементам `<text>`.

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

*Этот интерфейс не реализует никаких конкретных свойств, но наследует свойства от его родительского интерфейса, `SVGTextPositioningElement` (en-US).*

Методы
------

*Этот интерфейс не реализует никаких конкретных методов, но наследует методы от его родительского интерфейса, `SVGTextPositioningElement` (en-US).*

Характеристики
--------------

| Specification |
| --- |
| Scalable Vector Graphics (SVG) 2 # InterfaceSVGTextElement |

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

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

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

* `<text>`
AbortSignal
===========

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

**`AbortSignal`** интерфейс представляет собой объект сигнала, который позволяет вам общаться с DOM запросом (например, Fetch) и прервать его при необходимости с помощью объекта `AbortController`.

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

*AbortSignal также наследует свойства от своего родительского интерфейса, `EventTarget`.*

`AbortSignal.aborted` Только для чтения 

Это `Boolean` (en-US), который указывает, отменён ли запрос(ы), с которым связывался сигнал, отменён (`true`) или нет (`false`).

### Обработчики событий

`AbortSignal.onabort` (en-US)

Вызывается когда происходит событие `abort`, т.е. когда DOM запрос(ы), с которым связывался сигнал, отменён.

Методы
------

*AbortSignal наследует методы от родительского интерфейса, `EventTarget`.*

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

В следующем фрагменте мы будем загружать видео используя Fetch API.

Сначала мы создаём контроллер с помощью конструктора `AbortController()`, а затем получаем ссылку на связанный объект `AbortSignal` используя свойство `AbortController.signal`.

Когда fetch запрос инициируется, мы передаём `AbortSignal` в качестве опции внутрь объекта параметров запроса (см. `{signal}` ниже). Это связывает сигнал и контроллер с fetch запросом и позволяет нам прервать его, вызвав `AbortController.abort()`, как показано ниже во втором обработчике событий.


```js
var controller = new AbortController();
var signal = controller.signal;

var downloadBtn = document.querySelector('.download');
var abortBtn = document.querySelector('.abort');

downloadBtn.addEventListener('click', fetchVideo);

abortBtn.addEventListener('click', function() {
  controller.abort();
  console.log('Загрузка прервана');
});

function fetchVideo() {
  ...
  fetch(url, {signal}).then(function(response) {
    ...
  }).catch(function(e) {
    reports.textContent = 'Ошибка загрузки: ' + e.message;
  })
}
```


**Примечание:** Когда `abort()` вызывается, `fetch()` промис отклоняется с `AbortError`.

**Предупреждение:** Текущая версия Firefox отклоняет промис с `DOMException`

Вы можете найти полный рабочий пример на GitHub — см. abort-api (см. как он работает в живую).

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

| Specification |
| --- |
| DOM Standard # interface-AbortSignal |

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

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

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

* Fetch API
* Abortable Fetch by Jake Archibald
HTMLTrackElement
================

**`HTMLTrackElement`**

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

*Наследует свойства своего родителя, `HTMLElement`.*

`HTMLTrackElement.kind`

Тип данных `DOMString`, так как отображает значение HTML-атрибута `kind`. Показывает, как будет использоваться текстовый трек. Возможные значения: `subtitles`, `captions`, `descriptions`, `chapters`, `metadata` (субтитры, подписи, описания, главы или метаданные).

`HTMLTrackElement.src` (en-US)

Тип данных `DOMString`, так как отображает значение HTML-атрибута `src`. Указывает адрес файла текстового трека.

`HTMLTrackElement.srclang`

Тип данных `DOMString`, так как отображает значение HTML-атрибута `srclang`. Указывает язык текстового трека.

`HTMLTrackElement.label`

Тип данных `DOMString` , так как отображает значение HTML-атрибута `label`. Определяет видимый пользователю заголовок трека.

`HTMLTrackElement.default`

Тип данных `Boolean` (en-US), отображает значение HTML-атрибута `default`. Указывает, что это текстовый трек по умолчанию, если пользовательские настройки не определят другой трек, как более уместный.

`HTMLTrackElement.readyState` Только для чтения 

Возвращает значение типа `unsigned short`, которое показывает доступность трека для чтения:

| Константа | Значение | Описание |
| --- | --- | --- |
| `NONE` | 0 | Показывает, что метки текстового трека не получены. |
| `LOADING` | 1 | Показывает, что текстовый трек загружается, и пока не было обнаружено фатальных ошибок. Дополнительные метки могут быть добавлены в трек парсером. |
| `LOADED` | 2 | Указывает, что текстовая дорожка загружена без фатальных ошибок. |
| `ERROR` | 3 | Указывает, что текстовый трек был получен, но когда пользовательский агент попытался его использовать, произошла какая-то ошибка. Некоторые или все метки, вероятно, отсутствуют и не будут получены. |

`HTMLTrackElement.track` Только для чтения 

Возвращает `TextTrack` (en-US) is the track element's text track data.



| `track` Только для чтения  | `TextTrack` (en-US) | The track element's text track data. |
| --- | --- | --- |

Методы
------

*Нет специфичных методов; наследует методы из родительского элемента, `HTMLElement`.*

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

| Specification |
| --- |
| HTML Standard # htmltrackelement |

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

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

See also
--------

* The HTML element implementing this interface: `<track>`.
HTMLDocument
============

HTMLDocument - это абстрактный интерфейс DOM (en-US), который обеспечивает доступ к специальным свойствам и методам, не представленным по умолчанию в регулярном (XML) документе.

Его методы и свойства включены в страницу `document` и перечислены отдельно в их собственном разделе на вышеупомянутой связанной странице DOM.

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

* http://www.w3.org/TR/DOM-Level-2-HTM...ml#ID-26809268
BatteryManager
==============

Интерфейс `BatteryManager` позволяет взаимодействовать с Battery Status API (en-US) и предоставляет доступ к информации об уровне заряда батареи устройства. Метод `navigator.getBattery()` возвращает промис, содержащий интерфейс `BatteryManager`.

EventTarget

BatteryManagerСвойства экземпляра
-------------------

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

Значение с булевым типом, заряжается сейчас батарея или нет.

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

Число оставшихся секунд до полной зарядки, или 0, если устройство заряжено.

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

Число оставшихся секунд до полной разрядки устройства.

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

Число между 0.0 и 1.0, показывающее уровень заряда батареи устройства.

Методы
------

*Наследует методы родительского интерфейса*: `EventTarget`.

События
-------

`chargingchange` (en-US)

Вызывается при обновлении состояния процесса зарядки батареи (свойство `charging` (en-US)).

`chargingtimechange` (en-US)

Вызывается при обновлении времени до полной зарядки батареи (свойство `chargingTime` (en-US)).

`dischargingtimechange` (en-US)

Вызывается при обновлении времени до разрядки батареи (свойство `dischargingTime` (en-US)).

`levelchange` (en-US)

Вызывается при обновление уровня заряда батареи (свойство `level` (en-US)).

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

| Specification |
| --- |
| Battery Status API # the-batterymanager-interface |

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

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

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

* Battery Status API (en-US)
* `navigator.getBattery`
Storage
=======

`Интерфейс Storage` из Web Storage API предоставляет доступ для session storage или local storage для конкретного домена, позволяя вам к примеру добавлять, изменять или удалять сохранённые элементы данных.

Если вы хотите управлять session storage для домена, вы вызываете `Window.sessionStorage` метод; Если вы хотите управлять local storage домена, вы вызываете `Window.localStorage`.

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

`Storage.length` Только для чтения 

Возвращает число, представляющее количество элементов в объекте `Storage`.

Методы
------

`Storage.key()`

Приняв число n, метод вернёт имя n-ного ключа в Storage


`Storage.getItem()`

Приняв имя ключа, метод вернёт для него значение.

`Storage.setItem()`

Приняв имя ключа и значение, метод добавит этот ключ в Storage или обновит его значение, если ключ уже существовал.

`Storage.removeItem()`

Приняв имя ключа, метод удалит этот ключ из Storage

`Storage.clear()`

При вызове метод удалит все ключи из Storage.

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

В данном примере мы получаем доступ к объекту Storage вызывая localStorage. Для начала мы проверяем содержит ли local storage элементы данных используя `!localStorage.getItem('bgcolor')`. Если да, мы вызываем функцию `setStyles()` которая получает элементы данных используя `localStorage.getItem()` и использует их значения для обновления стилей на странице. Если нет, мы вызывает другую функцию, `populateStorage()`, которая использует `localStorage.setItem()` что бы установить значения для элементов, потом вызываем `setStyles()`.


```js
if (!localStorage.getItem("bgcolor")) {
  populateStorage();
} else {
  setStyles();
}

function populateStorage() {
  localStorage.setItem("bgcolor", document.getElementById("bgcolor").value);
  localStorage.setItem("font", document.getElementById("font").value);
  localStorage.setItem("image", document.getElementById("image").value);

  setStyles();
}

function setStyles() {
  var currentColor = localStorage.getItem("bgcolor");
  var currentFont = localStorage.getItem("font");
  var currentImage = localStorage.getItem("image");

  document.getElementById("bgcolor").value = currentColor;
  document.getElementById("font").value = currentFont;
  document.getElementById("image").value = currentImage;

  htmlElem.style.backgroundColor = "#" + currentColor;
  pElem.style.fontFamily = currentFont;
  imgElem.setAttribute("src", currentImage);
}
```


**Примечание:** Если хотите увидеть данный пример в работе, посмотрите наше Web Storage Demo.

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

| Specification |
| --- |
| HTML Standard # storage |

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

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

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

Используя Web Storage API