recursal/MDN huggingface dataset:
UIEvent: свойство which
=======================

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

Доступное только для чтение свойство **`UIEvent.which`** интерфейса `UIEvent` (en-US) возвращает число, указывающее на то, какая клавиша мыши была нажата или числовой код (`keyCode`) или код символа (`charCode`) нажатой клавиши на клавиатуре.

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

### Значение для `KeyboardEvent` 
Non-standard

 Для `KeyboardEvent` `event.which` содержит числовой код нажатой клавиши.
 Смотрите `KeyboardEvent.charCode` (en-US) и `KeyboardEvent.keyCode` (en-US) для дополнительной информации.

**Примечание:** Для новых приложений используйте `KeyboardEvent.key` или `KeyboardEvent.code` (en-US).

### Значение для `MouseEvent` 
Non-standard

Для `MouseEvent` `event.which` содержит число, представляющее нажатую клавишу:

* `0`: Клавиша не нажата
* `1`: Левая клавиша
* `2`: Средняя клавиша
* `3`: Правая клавиша

Для мыши, настроенной на использование левой рукой, действия кнопок меняются на противоположные. В этом случае значения считываются справа налево.

**Примечание:** Для новых приложений используйте `MouseEvent.button`.

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


```html
<html lang="en">
  <head>
    <title>Пример charCode/keyCode/which</title>

    <script>
 function showKeyPress(evt) {
 alert(
 `Обработчик onkeypress:\n` +
 `свойство keyCode: ${evt.keyCode}\n` +
 `свойство which: ${evt.which}\n` +
 `свойство charCode: ${evt.charCode}\n` +
 `символ нажатой клавиши: ${String.fromCharCode(evt.charCode)}\n`,
 );
 }

 function keyDown(evt) {
 alert(
 `Обработчик onkeydown:\n` +
 `свойство keyCode: ${evt.keyCode}\n` +
 `свойство which: ${evt.which}\n`,
 );
 }
 </script>
  </head>

  <body onkeypress="showKeyPress(event);" onkeydown="keyDown(event);">
    <p>Нажмите любую клавишу.</p>
  </body>
</html>
```

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

| Specification |
| --- |
| UI Events # dom-uievent-which |

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

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

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

* `KeyboardEvent`
* `MouseEvent`
File.name
=========

Возвращает имя файла представленного объектом типа `File`. По соображениям безопасности не содержит пути к файлу.

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

var name = file.name;
```

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

Строка, содержащая имя файла без пути, например, "My Resume.rtf".

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


```html
<input type="file" multiple onchange="processSelectedFiles(this)" />
```



```js
function processSelectedFiles(fileInput) {
  var files = fileInput.files;

  for (var i = 0; i < files.length; i++) {
    alert("Filename " + files[i].name);
  }
}
```


Проверьте результаты ниже:

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

| Specification |
| --- |
| File API # dfn-name |

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

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

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

* Использование файлов в веб приложениях
NamedNodeMap.getNamedItem()
===========================

Метод **`getNamedItem()`** интерфейса `NamedNodeMap` возвращает значение `Attr`, соответствующее заданному имени, или значение null, если соответствующий атрибут отсутствует.

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

myAttr = attrs.getNamedItem(name)
```

### Parameters

* `name` имя нужного атрибута
Совместимость с браузерами
--------------------------

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

Свойство только для чтения **`canTrickleIceCandidates`** , объекта **`RTCPeerConnection`**, возвращает значение типа `Boolean` , которое указывает на то, может ли удалённый пир принимать кандидаты, согласно спецификации trickled ICE candidates.
**ICE trickling (ICE просачивание)** - процесс продолжающейся отправки кандидатов, после первоначальной передачи предложения или ответа удалённому пиру..

Свойство инициализируется только после вызова метода `RTCPeerConnection.setRemoteDescription()` (en-US). Было бы идеально, если бы ваш протокол сигнализации предоставлял способ определения поддержки просачивания кандидатов, для того, что бы не полагаться на это свойство. Браузер, поддерживающий WebRTC, всегда будет поддерживать ICE просачивание.

Если оно не поддерживается, или о поддержке неизвестно, то проверив ложное значение этого свойства, необходимо подождать, пока значение свойства `iceGatheringState` (en-US) измениться на `"completed"` до создания и передачи первоначального предложения. Таким образом, отправка предложения сдерживается до сборки всех кандидатов.

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

 var canTrickle = RTCPeerConnection.canTrickleIceCandidates;
```

### Значение

Тип `Boolean` содержит `true` , если удалённый пир может принимать просвечивающие ICE кандидаты, и `false` , если не может. Если удалённый пир ещё не инициализирован, свойство возвращает `null`.

**Примечание:** Значение свойства инициализируется после того, как локальный пир вызовет метод `RTCPeerConnection.setRemoteDescription()` (en-US); Возвращаемый объект описания используется агентом ICE для определения возможности удалённого пира поддерживать просачивающихся ICE кандидатов.

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


```js
var pc = new RTCPeerConnection();
// Следующий код может быть использован для обработки предложения от пира, когда
// он не знает поддерживает ли он просачивание
pc.setRemoteDescription(remoteOffer)
  .then(\_ => pc.createAnswer())
  .then(answer => pc.setLocalDescription(answer))
  .then(\_ =>
    if (pc.canTrickleIceCandidates) {
      return pc.localDescription;
    }
    return new Promise(r => {
      pc.addEventListener('icegatheringstatechange', e => {
        if (e.target.iceGatheringState === 'complete') {
          r(pc.localDescription);
        }
      });
    });
  })
  .then(answer => sendAnswerToPeer(answer)) // сигнальное сообщение
  .catch(e => handleError(e));

pc.addEventListener('icecandidate', e => {
  if (pc.canTrickleIceCandidates) {
    sendCandidateToPeer(e.candidate); // сигнальное сообщение
  }
});
```

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

| Specification |
| --- |
| WebRTC: Real-Time Communication in Browsers # dom-rtcpeerconnection-cantrickleicecandidates |

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

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

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

* WebRTC (en-US)
* `RTCPeerConnection.addIceCandidate()` (en-US)
* Жизненный цикл сессии WebRTC
RTCPeerConnection.connectionState
=================================

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

Когда значение свойство изменяется, возникает событие `connectionstatechange` на объекте интерфейса `RTCPeerConnection` .

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

var connectionState = RTCPeerConnection.connectionState;
```

### Значение

Текущий статус соединения представлен одним из значений перечисления `RTCPeerConnectionState`.

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


```js
var pc = new RTCPeerConnection(configuration);

/\* ... \*/

var connectionState = pc.connectionState;
```

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

| Specification |
| --- |
| WebRTC: Real-Time Communication in Browsers # dom-peerconnection-connection-state |

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

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

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

* Жизненный цикл сессии WebRTC
* `RTCPeerConnection`
* `connectionstatechange`
* WebRTC (en-US)
RTCPeerConnection()
===================

Конструктор **`RTCPeerConnection()`** возвращает новый экземпляр объекта `RTCPeerConnection`, который представляет соединение между локальным устройством и удалённым пиром (участником соединения)

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

pc = new RTCPeerConnection([configuration]);
```

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

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

Объект класса `RTCConfiguration`, предоставляющий свойства для конфигурации нового экземпляра соединения.

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

Экземпляр класса `RTCPeerConnection` , сконфигурированный по свойствам параметра `configuration`, если используется, иначе сконфигурированный по умолчанию.

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

| Specification |
| --- |
| WebRTC: Real-Time Communication in Browsers # dom-peerconnection |

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

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

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

* Сигнализированные и видеовызов
* Обзор архитектуры WebRTC (en-US)
* Жизненный цикл сессии WebRTC
* `RTCPeerConnection`
RTCPeerConnection.currentRemoteDescription
==========================================

Только для чтения свойство **`RTCPeerConnection.currentRemoteDescription`** возвращает объект `RTCSessionDescription` (en-US) , представляющий удалённую сторону соединения, как последний, успешно согласованный объект данных, с момента завершения согласования и установки соединения объектом `RTCPeerConnection` с удалённым пиром.

Для изменения значения свойства `currentRemoteDescription`, вызовите метод `RTCPeerConnection.setRemoteDescription()` (en-US), который запускает серию событий, приводящих к установке нового значения. Подробнее о том, что точно происходит и почему изменение значения не происходит немедленно, смотрите Ожидающие и текущие объекты описания.

**Примечание:** В отличии от `RTCPeerConnection.remoteDescription` (en-US), это значение действительный текущий статус соединения; `remoteDescription` может указывать на объект описания, на который соединение находиться в процессе перехода..

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

sessionDescription = RTCPeerConnection.currentRemoteDescription;
```

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

Текущий объект описания, представляющий удалённую сторону соединения, если она присутствует. Если ни один объект описания не установлен, значением будет `null`.

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

Пример рассматривает свойство `currentRemoteDescription` и отображает предупреждение, содержащее значения свойств `type` и `sdp` ,объекта `RTCSessionDescription` (en-US).


```js
var pc = new RTCPeerConnection();
…
var sd = pc.currentRemoteDescription;
if (sd) {
  alert("Local session: type='" +
        sd.type + "'; sdp description='" +
        sd.sdp + "'");
}
else {
  alert("No local session yet.");
}
```

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

| Specification |
| --- |
| WebRTC: Real-Time Communication in Browsers # dom-peerconnection-currentremotedesc |

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

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

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

* `RTCPeerConnection.setRemoteDescription()` (en-US), `RTCPeerConnection.pendingRemoteDescription` (en-US), `RTCPeerConnection.remoteDescription` (en-US)
* `RTCPeerConnection.setRemoteDescription()` (en-US), `RTCPeerConnection.remoteDescription` (en-US), `RTCPeerConnection.pendingRemoteDescription` (en-US), `RTCPeerConnection.currentRemoteDescription`
* WebRTC (en-US)
RTCPeerConnection.currentLocalDescription
=========================================

Только для чтения свойство **`RTCPeerConnection.currentLocalDescription`** возвращает объект `RTCSessionDescription` (en-US) , описывающий локальную сторону соединения, как самый последний, удачно согласованный объект описания, с момента последнего завершения согласования `RTCPeerConnection` и соединения с удалённым пиром (участником соединения) .

Для изменения `currentLocalDescription`, вызовите метод `RTCPeerConnection.setLocalDescription()` (en-US), который запускает серию событий, приводящих к присвоению значения. Более подробно о том, что точно происходит и почему изменения происходят не сразу, смотрите Ожидающие и текущие объекты описания.

**Примечание:** В отличие от `RTCPeerConnection.localDescription` (en-US), это значение представляет актуальный, текущий статус локальной стороны соединения; `localDescription` может устанавливать описание, на которое соединение находится в процессе перехода.

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

sessionDescription = RTCPeerConnection.currentLocalDescription;
```

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

Текущий объект описания локальной стороны соединения. Если установка значения не удалась, значением станет `null`.

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

В этом примере рассматривается свойство `currentLocalDescription` и отображается предупреждение, содержащее свойства объекта `RTCSessionDescription` (en-US) `type` и `sdp` .


```js
var pc = new RTCPeerConnection();
…
var sd = pc.currentLocalDescription;
if (sd) {
  alert("Локальная сессия: type='" +
        sd.type + "'; sdp description='" +
        sd.sdp + "'");
}
else {
  alert("Локальной сессии ещё нет.");
}
```

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

| Specification |
| --- |
| WebRTC: Real-Time Communication in Browsers # dom-peerconnection-currentlocaldesc |

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

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

**Примечание:** The addition of `currentLocalDescription` and `pendingLocalDescription` (en-US) to the WebRTC spec is relatively recent. In browsers which don't support them, just use `localDescription` (en-US).

See also
--------

* `RTCPeerConnection.setLocalDescription()` (en-US), `RTCPeerConnection.pendingLocalDescription` (en-US), `RTCPeerConnection.localDescription` (en-US)
* `RTCPeerConnection.setRemoteDescription()` (en-US), `RTCPeerConnection.remoteDescription` (en-US), `RTCPeerConnection.pendingRemoteDescription` (en-US), `RTCPeerConnection.currentRemoteDescription`
* WebRTC (en-US)
Worker.terminate()
==================

Метод **`terminate()`** интерфейса `Worker` немедленно завершает работу `worker`. Работнику не даётся возможность завершить свою работу, он останавливается сразу.

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


```js
myWorker.terminate();
```

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

Нет.

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

Void.

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

В следующем фрагменте кода показано создание потока `Worker` с помощью конструктора `Worker()`, который немедленно завершается.


```js
var myWorker = new Worker("worker.js");

myWorker.terminate();
```

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

| Specification |
| --- |
| HTML Standard # dom-worker-terminate-dev |

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

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

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

Интерфейс `Worker`.
Worker()
========

Конструктор **`Worker()`** создаёт объект `Worker`, который выполняет скрипт по указанному URL-адресу. Этот скрипт должен подчиняться политике одного источника (same-origin policy).

Если URL имеет недопустимый синтаксис или нарушена политика одного источника, то будет вызвано `DOMException` (en-US) типа `SECURITY_ERR`.

**Примечание:** that there is a disagreement among browser manufacturers about whether a data URI is of the same origin or not. Though Gecko 10.0 and later accept data URIs, that's not the case in all other browsers.

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


```js
var myWorker = new Worker(aURL, options);
```

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

*aURL*

`USVString` (en-US), представляющая URL-адрес скрипта который будет выполняться `worker`. Он должен подчиняться политике одного источника.

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

An object containing option properties that can be set when creating the object instance. Available properties are as follows:

* `type`: A `DOMString` specifying the type of worker to create. The value can be `classic` or `module`. If not specified, the default used is `classic`.
* `credentials`: A `DOMString` specifying the type of credentials to use for the worker. The value can be\* `omit`\*, `same-origin`, or *`include`. If not specified, or if type is `classic`, the default used is `omit` (no credentials required).*
* \_`name`: A \_`DOMString` specifying an identifying name for the `DedicatedWorkerGlobalScope` (en-US) representing the scope of the worker, which is mainly useful for debugging purposes.

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

* A `SecurityError` is raised if the document is not allowed to start workers.
* A `NetworkError` is raised if the MIME type of one of the script is `text/csv`, `image/*`, `video/*`, or `audio/*`. It should always be `text/javascript.`
* A `SyntaxError` is raised if a *URL* cannot be parsed.
Пример
------

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


```js
var myWorker = new Worker("worker.js");

first.onchange = function () {
  myWorker.postMessage([first.value, second.value]);
  console.log("Message posted to worker");
};
```


Больше примеров можно найти здесь: Basic dedicated worker example (run dedicated worker).

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

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

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

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

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

Интерфейс `Worker`
Worker.onmessage
================

Свойство **`onmessage`** интерфейса `Worker` представляет собой обработчик `event handler`, который будет вызван когда произойдёт событие `message`. Тип этого события `MessageEvent` (en-US) и оно будет вызвано когда worker-объект получит сообщение из выполняемого им кода (т.е из метода `DedicatedWorkerGlobalScope.postMessage` (en-US) .

**Примечание:** Данные события доступны в свойстве data события `message`.

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


```js
myWorker.onmessage = function(e) { ... }
```

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

Следующий пример кода показывает создание объекта `Worker` используя конструктор `Worker()`. События попадают в объект, когда значение внутри поля ввода формы `first` изменяется. Обработчик onmessage указан для обработки сообщений, которые приходят назад из кода объекта в текущий контекст выполнения.


```js
var myWorker = new Worker("worker.js");

first.onchange = function () {
  myWorker.postMessage([first.value, second.value]);
  console.log("Сообщение, отправленное в worker-объект");
};

myWorker.onmessage = function (e) {
  result.textContent = e.data;
  console.log("Сообщение полученное из worker-объекта");
};
```


В скрипте `worker.js`, обработчик `onmessage` используется для обработки событий, полученных из главного скрипта:


```js
onmessage = function (e) {
  console.log("Сообщение полученное из главного скрипта");
  var workerResult = "Результат: " + e.data[0] \* e.data[1];
  console.log("Отправка сообщения назад в главный скрипт");
  postMessage(workerResult);
};
```


Посмотрите как в скрипте `worker.js` вызывается обработчик `onmessage`. В нем присутствует только глобальное свойство `onmessage`, потому что worker-объект фактически является областью видимости (`DedicatedWorkerGlobalScope` (en-US)).

Для полного примера смотрите наш Basic dedicated worker example (run dedicated worker).

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

| Specification |
| --- |
| HTML Standard # event-message |

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

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

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

Интерфейс `Worker`, которому принадлежит этот обработчик.
RandomSource.getRandomValues()
==============================

Метод **`RandomSource.getRandomValues()`** позволяет вам получать криптографически стойкие числа. Массив, переданный как параметр, заполняется случайными числами (случайными в криптографическом смысле).

Для того, чтобы гарантировать достаточную производительность, реализации используют не настоящий генератор случайных чисел (RNG, en - Random Number Generator), а генератор псевдо-случайных чисел, которому предоставлено начальное зерно (wiki - https://en.wikipedia.org/wiki/Random\_seed) с достаточной энтропией (http://cryptography.ru/ref/энтропия). Реализация генератора псевдо-случайных чисел (PRNG, en - PseudoRandom Number Generator) отличается от других реализаций RNG, но она больше подходит для использования в криптографии. Реализации также требуют использование начального зерна с достаточной энтропией, как источник системно-уровневой энтропии.

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

cryptoObj.getRandomValues(typedArray);
```

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

`typedArray`

Целочисленный массив `TypedArray`, например `Int8Array`, `Uint8Array` (en-US), `Uint16Array` (en-US), `Int32Array`, или `Uint32Array` (en-US). Все элементы массива замещаются случайными числами.

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

* Исключение `QuotaExceededError` `DOMException` (en-US) выбрасывается если запрошенная длина больше чем 65536 байт.
Пример
------


```js
/\* Предполагается что функция window.crypto.getRandomValues доступна \*/

var array = new Uint32Array(10);
window.crypto.getRandomValues(array);

console.log("Ваше счастливое число:");
for (var i = 0; i < array.length; i++) {
  console.log(array[i]);
}
```

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

| Specification |
| --- |
| Web Cryptography API # Crypto-method-getRandomValues |

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

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

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

* `Window.crypto` чтобы получить объект `Crypto`.
* `Math.random`, не криптографический способ получения случайных чисел.
GamepadEvent.gamepad
====================

Свойство **`GamepadEvent.gamepad`**, интерфейса **`GamepadEvent`,** возвращает объект `Gamepad`, предоставляющий доступ к данным геймпада для событий `gamepadconnected` и `gamepaddisconnected`.

**Примечание:** Эти события не возникают Chrome, только в Firefox. В Chrome вы должны использовать `Navigator.getGamepads` для доступа к объекту `Gamepad`.

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

readonly    attribute Gamepad 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,
  );
});
```

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

Объект `Gamepad`.

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

| Specification |
| --- |
| Gamepad # dom-gamepadevent-gamepad |

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

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

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

Using the Gamepad API (en-US)