recursal/MDN huggingface dataset:
Event.initEvent()
=================

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

The **`Event.initEvent()`** method is used to initialize the value of an `event` created using `Document.createEvent()` (en-US).

Events initialized in this way must have been created with the `Document.createEvent()` (en-US) method. This method must be called to set the event before it is dispatched, using `EventTarget.dispatchEvent()`. Once dispatched, it doesn't do anything anymore.

**Примечание:** Не используйте этот метод, т.к. он устаревший. (deprecated)

Вместо него используйте такой специальный конструктор событий, как `Event()`. Страница Creating and triggering events (en-US) даст больше информации о возможностях использования.

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

event.initEvent(type, bubbles, cancelable);
```


`type`

`DOMString`, определяющая тип события.

`bubbles`

Is a `Boolean` deciding whether the event should bubble up through the event chain or not. Once set, the read-only property `Event.bubbles` will give its value.

`cancelable`

Is a `Boolean` defining whether the event can be canceled. Once set, the read-only property `Event.cancelable` will give its value.

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

// Create the event.
var event = document.createEvent('Event');

// Create a click event that bubbles up and
// cannot be canceled
event.initEvent('click', true, false);

// Listen for the event.
elem.addEventListener('click', function (e) {
  // e.target matches elem
}, false);

elem.dispatchEvent(event);
```

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

| Specification |
| --- |
| DOM Standard # ref-for-dom-event-initevent① |

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

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

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

* The constructor to use instead of this deprecated method: `Event()`. More specific constructors can be used too.
Event.currentTarget
===================

Определяет элемент, в котором в данный момент обрабатывается событие, при движении события внутри DOM. Всегда совпадает элементом, на котором обработчик события был назначен, в отличие от свойства `event.target`, идентифицирующего элемент, на котором событие возникло.

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

`event.currentTarget` используется, когда один и тот же обработчик события присваивается нескольким элементам.


```js
function hide(e) {
  e.currentTarget.style.visibility = "hidden";
  // Когда данная функция используется в качестве обработчика события: this === e.currentTarget
}

var ps = document.getElementsByTagName("p");

for (var i = 0; i < ps.length; i++) {
  ps[i].addEventListener("click", hide, false);
}

// click around and make paragraphs disappear
```

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

| Specification |
| --- |
| DOM Standard # ref-for-dom-event-currenttarget② |

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

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

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

Comparison of Event Targets
Event.stopPropagation()
=======================

Прекращает дальнейшую передачу текущего события.

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

event.stopPropagation();
```

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

См. Пример 5: Event Propagation для более детального объяснения данного метода и всего механизма передачи событий в DOM документе.

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

| Specification |
| --- |
| DOM Standard # ref-for-dom-event-stoppropagation① |

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

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

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

* Смотрите DOM specification для понимания потока событий. (DOM Level 3 Events draft содержит иллюстрации.)
* `Event.preventDefault()` – это дополнительный метод, который запрещает исполнение метода по умолчанию, предназначенного для данного события.
Event.defaultPrevented
======================

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

Возвращает boolean-значение, информирующее о том, был ли вызван `event.preventDefault()` в текущем обработчике события.

**Примечание:** Используйте это свойство вместо `устаревшего метода getPreventDefault()` (смотри Firefox bug 691151).

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


```js
var defaultWasPrevented = event.defaultPrevented;
```

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

 if (e.defaultPrevented) {
   /* по умолчанию не выполнится */
 }
```

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

| Specification |
| --- |
| DOM Standard # ref-for-dom-event-defaultprevented① |

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

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

Свойство **`Gamepad.index`** интерфейса `Gamepad` возвращает целое автоинкрементируемое значение, уникальное для каждого устройства, подключённого к системе.

Это может быть полезно для распознавания нескольких контроллеров; отключённый, и подключённый заново геймпад, будет иметь тот же индекс.

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

readonly    attribute long                index;
```

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


```js
window.addEventListener("gamepadconnected", function () {
  var gp = navigator.getGamepads()[0];
  gamepadInfo.innerHTML =
    "Gamepad connected at index " + gp.index + ": " + gp.id + ".";
});
```

### Значение

`Number`.

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

| Specification |
| --- |
| Gamepad # dom-gamepad-index |

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

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

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

Using the Gamepad API (en-US)
Gamepad.axes
============

Свойство **`Gamepad.axes`** интерфейса `Gamepad` возвращает массив, показывающий состояние элементов управления, имеющих оси направления, такие как джойстики на геймпаде.

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

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

readonly    attribute double[]            axes;
```

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


```js
function gameLoop() {
  if (navigator.webkitGetGamepads) {
    var gp = navigator.webkitGetGamepads()[0];
  } else {
    var gp = navigator.getGamepads()[0];
  }

  if (gp.axes[0] != 0) {
    b -= gp.axes[0];
  } else if (gp.axes[1] != 0) {
    a += gp.axes[1];
  } else if (gp.axes[2] != 0) {
    b += gp.axes[2];
  } else if (gp.axes[3] != 0) {
    a -= gp.axes[3];
  }

  ball.style.left = a \* 2 + "px";
  ball.style.top = b \* 2 + "px";

  var start = rAF(gameLoop);
}
```

Значение
--------

Массив значений `double`

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

| Specification |
| --- |
| Gamepad # dom-gamepad-axes |

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

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

See also
--------

Using the Gamepad API (en-US)
Gamepad.buttons
===============

Свойство **`Gamepad.buttons`** интерфейса `Gamepad` возвращает массив, состоящий из объектов `gamepadButton`, представляющие кнопки, представленные на устройстве (геймпаде).

Каждый элемент в массиве равен 0 если кнопка не нажата, и не-нуль (обычно 1.0) если нажата. Каждый объект `gamepadButton` содержит два параметра: `pressed` и `value`:

* Свойство `pressed` - boolean индикатор, показывающий, нажата ли кнопка (`true`) или нет (`false`).
* Свойство `value` - число с плавающей точкой, показывающая степень нажатия на аналоговую кнопку (как триггеры на многих современных геймпадах). Значение нормализованное в диапазоне 0.0 – 1.0, где 0.0 указывает, что кнопка не нажата, а 1.0 - что нажата полностью.
Синтаксис
---------
```

readonly    attribute GamepadButton[]     buttons;
```

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

Приведённый код взят из моего *(автора статьи)* демо Gamepad API button (вы можете Посмотреть демо, и посмотреть исходники на GitHub). Важно — в Chrome `Navigator.getGamepads` необходимо установить префикс `webkit`, и значения кнопки будут представлять из себя массив дробных чисел, тогда как в Firefox `Navigator.getGamepads` нет необходимости устанавливать префикс, и значения будут представлять собой массив объектов `GamepadButton`; Свойство `GamepadButton.value` или `GamepadButton.pressed` необходимо для получения состояния кнопки, в зависимости от от типа кнопки. В данном простом примере обрабатывается оба вида кнопок.


```js
function gameLoop() {
  if (navigator.webkitGetGamepads) {
    var gp = navigator.webkitGetGamepads()[0];

    if (gp.buttons[0] == 1) {
      b--;
    } else if (gp.buttons[1] == 1) {
      a++;
    } else if (gp.buttons[2] == 1) {
      b++;
    } else if (gp.buttons[3] == 1) {
      a--;
    }
  } else {
    var gp = navigator.getGamepads()[0];

    if (gp.buttons[0].value > 0 || gp.buttons[0].pressed == true) {
      b--;
    } else if (gp.buttons[1].value > 0 || gp.buttons[1].pressed == true) {
      a++;
    } else if (gp.buttons[2].value > 0 || gp.buttons[2].pressed == true) {
      b++;
    } else if (gp.buttons[3].value > 0 || gp.buttons[3].pressed == true) {
      a--;
    }
  }

  ball.style.left = a \* 2 + "px";
  ball.style.top = b \* 2 + "px";

  var start = window.requestAnimationFrame(gameLoop);
}
```

Значение
--------

Массив из объектов `gamepadButton`

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

| Specification |
| --- |
| Gamepad # dom-gamepad-buttons |

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

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

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

Using the Gamepad API (en-US)
Gamepad.connected
=================

Свойство **`Gamepad.connected`** интерфейса `Gamepad` возвращает логическое значение того, подключён ли всё ещё геймпад к системе.

Если геймпад подключён - значение равно `true`; если нет - `false`.

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

 readonly    attribute boolean             connected;
```

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


```js
var gp = navigator.getGamepads()[0];
console.log(gp.connected);
```

Значение
--------

`Boolean`.

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

| Specification |
| --- |
| Gamepad # dom-gamepad-connected |

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

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

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

Using the Gamepad API (en-US)
Gamepad.timestamp
=================

Свойство **`Gamepad.timestamp`** интерфейса `Gamepad` возвращает `DOMHighResTimeStamp`, представляющий собой время последнего обновления геймпада.

Идея состоит в том, чтобы позволить разработчику определить, были ли изменены данные для `axes` и `button` на аппаратном обеспечении. Значение должно быть установлено относительно атрибута `navigationStart` интерфейса ``PerformanceTiming` (en-US)`. Значения монотонно увеличиваются, поэтому их можно сравнивать, чтобы определить порядок изменений, т.к. новые значения всегда будут больше или равны старым.

**Примечание:** В данный момент, это свойство нигде не поддерживается.

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

readonly    attribute DOMHighResTimeStamp timestamp;
```

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


```js
var gp = navigator.getGamepads()[0];
console.log(gp.timestamp);
```

Значение
--------

`DOMHighResTimeStamp`.

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

| Specification |
| --- |
| Gamepad # dom-gamepad-timestamp |

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

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

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

Using the Gamepad API (en-US)
Gamepad.mapping
===============

Свойство **`Gamepad.mapping`** интерфейса `Gamepad` возвращает строковый индикатор, указывающий, изменил ли браузер элементы управления на уже известный шаблон

На данный момент существует один поддерживаемый шаблон - standard gamepad. Если браузер позволяет поменять элементы управления в данном шаблоне, свойство `mapping` будет установлено строка `"standard"`.

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

readonly    attribute DOMString           mapping;
```

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


```js
var gp = navigator.getGamepads()[0];
console.log(gp.mapping);
```

Значение
--------

A `string`.

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

| Specification |
| --- |
| Gamepad # dom-gamepad-mapping |

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

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

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

Using the Gamepad API (en-US)
Gamepad.id
==========

Свойство **`Gamepad.id`** интерфейса `Gamepad` возвращает строку, содержащую некоторую информацию о контроллере.

Существующий синтаксис не стандартизирован, но в Firefox эта строка представляет собой три значения, разделённые тире (`-`):

* Две четырёхзначных шестнадцатеричных строки, содержащих USB vendor id (`VID`) и product id (`PID`) контроллера
* Имя контроллера, предоставленное драйвером.

Например, PS2 контроллер вернёт **`810-3-USB Gamepad`**.

Эта информация позволяет вам найти соответствие для элементов управления контроллера, а также, отобразить полезную информацию для пользователя.

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

readonly    attribute DOMString           id;
```

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


```js
window.addEventListener("gamepadconnected", function () {
  var gp = navigator.getGamepads()[0];
  gamepadInfo.innerHTML =
    "Gamepad connected at index " + gp.index + ": " + gp.id + ".";
});
```

Значение
--------

`String`.

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

| Specification |
| --- |
| Gamepad # dom-gamepad-id |

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

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

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

Using the Gamepad API (en-US)
Gamepad.displayId
=================

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

Свойство **displayId** только для чтения `Gamepad` возвращаемый интерфейс\* `VRDisplay.displayId` (en-US) связанный с `VRDisplay` (en-US) — `VRDisplay` (дисплей виртуальной реальности) в котором геймпад управляет отображаемой сценой.\*

Геймпад считается связанным с `VRDisplay` (en-US) если он сообщает о позиции, которая находится в том же месте, что и `VRDisplay.pose`.

Syntax
------


```js
var myDisplayId = gamepadInstance.displayId;
```

### Value

Число, представляющее связанный интерфейс `VRDisplay.displayId` (en-US).Если число равно 0, то геймпад не связан с дисплеем VR( виртуальной реальности).

Examples
--------


```js
window.addEventListener("gamepadconnected", function (e) {
  if (!e.gamepad.displayId) {
    console.log("Gamepad connected");
  } else {
    console.log(
      "Gamepad connected, associated with VR display " + e.gamepad.displayId,
    );
  }
});
```

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

#### No specification found

No specification data found for `api.Gamepad.displayId`.  
Check for problems with this page or contribute a missing `spec_url` to mdn/browser-compat-data. Also make sure the specification is included in w3c/browser-specs.

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

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

See also
--------

* WebVR API
WebAssembly.compile()
=====================

Функция **`WebAssembly.compile()`** компилирует `WebAssembly.Module` (en-US) из двоичного кода WebAssembly. Эта функция полезна, если необходимо компилировать модуль до того, как его можно создать (в противном случае следует использовать функцию `WebAssembly.instantiate()` (en-US).

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

Promise<WebAssembly.Module> WebAssembly.compile(bufferSource);
```

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

*bufferSource*

Типизированный массив typed array или ArrayBuffer, содержащий двоичный код модуля `.wasm`, который вы хотите скомпилировать.

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

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

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

* Если `bufferSource` не является typed array, генерируется `TypeError`.
* Если компиляция не удалась, промис отклоняется с помощью `WebAssembly.CompileError` (en-US).
Примеры
-------

В следующем примере выполняется компиляция загруженного `simple.wasm` байт-кода с использованием функции `compile()`, а затем отправляется его worker-работнику, использующему postMessage().


```js
var worker = new Worker("wasm\_worker.js");

fetch("simple.wasm")
  .then((response) => response.arrayBuffer())
  .then((bytes) => WebAssembly.compile(bytes))
  .then((mod) => worker.postMessage(mod));
```


**Примечание:** Вероятно, вы захотите использовать `WebAssembly.compileStreaming()` в большинстве случаев, поскольку он более эффективен, чем `compile()`.

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

| Specification |
| --- |
| WebAssembly JavaScript Interface # dom-webassembly-compile |

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

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

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

* WebAssembly обзорная страница
* WebAssembly концепции
* Использование WebAssembly JavaScript API
WebAssembly.compileStreaming()
==============================

Функция **`WebAssembly.compileStreaming()`** компилирует `WebAssembly.Module` (en-US) непосредственно из потокового исходника. Эта функция полезна, если необходимо скомпилировать модуль до того, как его можно создать (в противном случае следует использовать функцию `WebAssembly.instantiateStreaming()` (en-US).

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

Promise<WebAssembly.Module> WebAssembly.compileStreaming(source);
```

### Parameters

*source*

Промис, или `Response`, который будет выполнен с одним, представляющим основной источник модулем `.wasm`, который вы хотите передать и скомпилировать.

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

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

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

* Если `bufferSource` не является typed array, генерируется `TypeError`.
* Если компиляция не удалась, промис отклоняется с помощью `WebAssembly.CompileError` (en-US).
Примеры
-------

 Следующий пример (см. Нашу демонстрацию compile-streaming.html на GitHub и view it live) напрямую передаёт модуль .wasm из исходника, затем компилирует его в объект `WebAssembly.Module` (en-US).
 Поскольку функция `compileStreaming()` принимает промис для объекта `Response`, вы можете напрямую передать ему вызов `fetch()`, и он передаст ответ в выполняемую функцию.


```js
var importObject = { imports: { imported\_func: (arg) => console.log(arg) } };

WebAssembly.compileStreaming(fetch("simple.wasm"))
  .then((module) => WebAssembly.instantiate(module, importObject))
  .then((instance) => instance.exports.exported\_func());
```


Затем создаётся полученный экземпляр модуля с помощью `WebAssembly.instantiate()` (en-US) и вызывается экспортированная функция.

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

| Specification |
| --- |
| WebAssembly Web API # dom-webassembly-compilestreaming |

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

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

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

* WebAssembly обзорная страница
* WebAssembly концепции
* Использование WebAssembly JavaScript API
Расширения браузера
===================

WebExtension API — кросс-браузерная система разработки дополнений браузера.
 В значительной степени эта система совместима с Chrome Extensions API, которая поддерживается в Google Chrome и Opera. Расширения, написанные для этих браузеров, в большинстве случаев будут работать с Firefox или Microsoft Edge лишь с минимальными изменениями. Эти API также полностью совместимы с мультипоточным Firefox.

Также мы намерены расширять API для поддержки нужд разработчиков дополнений, поэтому, если у вас есть идеи, то мы их с удовольствием выслушаем. Вы можете связаться с нами через dev-addons mailing list или #webextensions на IRC.

### Приступая к работе

* Что такое расширения?
* Ваше первое расширение
* Ваше второе расширение
* Внутреннее устройство расширения
* Примеры расширений
### How to

* Перехват HTTP-запросов
* Изменить веб-страницу
* Добавить кнопку на панель инструментов (en-US)
* Реализация страницы настроек (en-US)
* Работа с буфером обмена (en-US)
* Работа с вкладками браузера
* Доступ и изменение закладок
* Доступ и изменение куки (cookies)
### Интерфейс пользователя

* Введение
* Кнопка на панели инструментов
* Кнопка в адресной строке (en-US)
* Всплывающие окна (en-US)
* Контекстное меню
* Боковые панели
* Страница настройки дополнения
* Дополнительные web-страницы (en-US)
* Уведомления
* Угадывание адреса по мере ввода
* Панели инструмента разработчика (en-US)
### Основные понятия

* Обзор JavaScript API
* Компоненты пользовательского интерфейса (en-US)
* Скрипты Content scripts
* Match patterns (шаблоны совпадения)
* Internationalization
* Content Security Policy (политика безопасного контента)
* Native messaging (нативный обмен сообщениями) (en-US)
### Адаптация

* Портирование расширения из Google Chrome
* Портирование старых дополнений Firefox
* Сравнение с Add-on SDK
* Сравнение с XUL/XPCOM-расширениями
* Несовместимость с Chrome
### Рабочий процесс (workflow) Firefox

* Установка
* Отладка
* Начало работы с инструментом Web-ext
* Справочник команд Web-ext
* Расширения и Add-on ID
* Публикация вашего расширения (en-US)
### Справочники

* Обзор JavaScript API
* Таблицы совместимости браузера для JavaScript APIs

#### JavaScript APIs

* cookies
* downloads
* windows
* Веб Запрос

#### Manifest keys

* content\_security\_policy
* description
* manifest\_version
* permissions
* ключ background
* ключ icons
* ключ name
* ключ version