recursal/MDN huggingface dataset:
WebGLRenderingContext.compileShader()
=====================================

**WebGLRenderingContext.compileShader()** метод WebGL API компилирующий исходный код GLSL шейдера в бинарные данные для использования программой `WebGLProgram`.

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

void gl.compileShader(shader);
```

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

`shader`

Вершинный или фрагментный шейдер `WebGLShader` (en-US).

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


```js
var shader = gl.createShader(gl.VERTEX\_SHADER);
gl.shaderSource(shader, shaderSource);
gl.compileShader(shader);
```

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

| Specification |
| --- |
| WebGL Specification # 5.14.9 |

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

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

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

* `WebGLProgram`
* `WebGLShader` (en-US)
* `WebGLRenderingContext.attachShader()` (en-US)
* `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)
WebGLRenderingContext.getShaderInfoLog()
========================================

**WebGLRenderingContext.getShaderInfoLog** возвращает логи для указанной шейдерной программы `WebGLShader` (en-US). Оно содержит предупреждения, информацию для отладки и информацию о компиляции.

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

gl.getShaderInfoLog(shader);
```

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

shader

Шейдер `WebGLShader` (en-US) чьи логи мы запрашиваем.

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

`DOMString` может содержать диагностические сообщения, предупреждения и другую информацию о последней операции компиляции. Когда `WebGLShader` (en-US) объект создан, его информационный журнал будет строкой длинной 0.

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

### Проверить сообщения компиляции


```js
/\* Загружаем исходный код программы. \*/
gl.shaderSource(shader, shaderCode);

/\* Компилируем программу. \*/
gl.compileShader(shader);

/\* Получаем список сообщений \*/
var message = gl.getShaderInfoLog(shader);

if (message.length > 0) {
  /\* Сообщение может быть ошибкой или предупреждением \*/
  throw message;
}
```

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

| Specification |
| --- |
| WebGL Specification # 5.14.9 |

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

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

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

* `WebGLRenderingContext.getShaderParameter()` (en-US) – использование с `gl.COMPILE_STATUS` для проверки ошибок компиляции.
* `WebGLRenderingContext.getError()` (en-US)
WebGLRenderingContext.activeTexture()
=====================================

**`WebGLRenderingContext.activeTexture()`** метод WebGL API указывает какую текстуру сделать активной.

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

void gl.activeTexture(texture);
```

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

`texture`

Номер текстуры которую необходимо активировать. Значение `gl.TEXTUREI` где *I* значение в диапазоне от 0 до `gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS - 1`.

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

None.

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

Если *texture* не относится к `gl.TEXTUREI`, где *I* значение в диапазоне от 0 до `gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS - 1`, то получаем исключение `gl.INVALID_ENUM` .

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

Вызов со значением `gl.TEXTURE1` выберет текстуру в качестве текущей. Последующие вызовы будут изменять эту текстуру.


```js
gl.activeTexture(gl.TEXTURE1);
```


Количество текстур зависит от реализации, вы можете получить количество текстур с помощью константы `MAX_COMBINED_TEXTURE_IMAGE_UNITS`. Согласно спецификации не менее 8.


```js
gl.getParameter(gl.MAX\_COMBINED\_TEXTURE\_IMAGE\_UNITS);
```


чтобы получить текущую активную текстуру вызовите `gl.getParameter` с константой `ACTIVE_TEXTURE`.


```js
gl.activeTexture(gl.TEXTURE0);
gl.getParameter(gl.ACTIVE\_TEXTURE);
// вернёт "33984" (0x84C0, gl.TEXTURE0 enum value)
```

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

| Specification |
| --- |
| WebGL Specification # 5.14.3 |

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

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

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

* `WebGLRenderingContext.getParameter()` (en-US)
Node.isEqualNode()
==================

**`Node.isEqualNode()`** проверяет, равны ли два узла. Два узла равны, когда они имеют один и тот же тип, определяющий характеристики (для элементов это будет их идентификатор, количество потомков и т. д.), Его атрибуты совпадают и т. д. Конкретный набор точек данных, которые должны совпадать, зависит от типов узлов.

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

var isEqualNode = node.isEqualNode(otherNode);
```


* `otherNode`: Узел `Node` с которым надо сравнить.
Пример
------

В этом примере мы создаём три блока `<div>`. Первый и третий имеют одинаковое содержание и атрибуты, в то время как второй отличается. Затем мы запускаем некоторый JavaScript-код для сравнения узлов с помощью isEqualNode () и выводим результаты.

### HTML


```html
<div>This is the first element.</div>
<div>This is the second element.</div>
<div>This is the first element.</div>

<p id="output"></p>
```


```
#output {
  width: 440px;
  border: 2px solid black;
  border-radius: 5px;
  padding: 10px;
  margin-top: 20px;
  display: block;
}
```

### JavaScript


```js
let output = document.getElementById("output");
let divList = document.getElementsByTagName("div");

output.innerHTML +=
  "div 0 equals div 0: " + divList[0].isEqualNode(divList[0]) + "<br/>";
output.innerHTML +=
  "div 0 equals div 1: " + divList[0].isEqualNode(divList[1]) + "<br/>";
output.innerHTML +=
  "div 0 equals div 2: " + divList[0].isEqualNode(divList[2]) + "<br/>";
```

### Results

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

| Specification |
| --- |
| DOM Standard # ref-for-dom-node-isequalnode① |

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

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

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

Сравнивает позицию текущего узла и другого узла в любом другом документе.

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

node.compareDocumentPosition( otherNode )
```


* `node` это узел, который сравнивается
* `otherNode` это узел, с которым идёт сравнение.

Возвращаемое значение вычисляется как отношение, которое имеется между `otherNode` и `node`.

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

Возвращаемое значение - это битовая маска со следующими значениями:

| Имя | Значение |
| --- | --- |
| `DOCUMENT_POSITION_DISCONNECTED` | 1 |
| `DOCUMENT_POSITION_PRECEDING` | 2 |
| `DOCUMENT_POSITION_FOLLOWING` | 4 |
| `DOCUMENT_POSITION_CONTAINS` | 8 |
| `DOCUMENT_POSITION_CONTAINED_BY` | 16 |
| `DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC` | 32 |

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


```js
var head = document.getElementsByTagName("head").item(0);
if (
  head.compareDocumentPosition(document.body) & Node.DOCUMENT\_POSITION\_FOLLOWING
) {
  console.log("well-formed document");
} else {
  console.log("<head> is not before <body>");
}
```


**Примечание:** *Из-за того, что результат, возвращаемый* `compareDocumentPosition`, является битовой маской, побитовый оператор и (en-US) должен использоваться для осмысленных значений.

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

| Specification |
| --- |
| DOM Standard # ref-for-dom-node-comparedocumentposition① |

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

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

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

* `Node.contains` (en-US)
* John Resig - Comparing Document Position
Node.isConnected
================

Baseline Widely available
-------------------------

This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.

* Learn more
* See full compatibility
* Report feedback
The **`isConnected`** read-only property of the `Node` interface returns a boolean indicating whether the Node is connected (directly or indirectly) to the context object, for example the `Document` object in the case of the normal DOM, or the `ShadowRoot` (en-US) in the case of a shadow DOM.

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

var isItConnected = nodeObjectInstance.isConnected
```

### Return value

A `Boolean` (en-US) that is `true` if the node is connected to its relevant context object, and `false` if not.

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

Стандартный DOM пример:


```js
let test = document.createElement("p");
console.log(test.isConnected); // returns false
document.body.appendChild(test);
console.log(test.isConnected); // returns true
```


A shadow DOM example:


```js
// Create a shadow root
var shadow = this.attachShadow({ mode: "open" });

// Create some CSS to apply to the shadow dom
var style = document.createElement("style");
console.log(style.isConnected); // returns false

style.textContent =
  ".wrapper {" +
  "position: relative;" +
  "}" +
  ".info {" +
  "font-size: 0.8rem;" +
  "width: 200px;" +
  "display: inline-block;" +
  "border: 1px solid black;" +
  "padding: 10px;" +
  "background: white;" +
  "border-radius: 10px;" +
  "opacity: 0;" +
  "transition: 0.6s all;" +
  "position: absolute;" +
  "bottom: 20px;" +
  "left: 10px;" +
  "z-index: 3;" +
  "}" +
  // attach the created style element to the shadow dom

  shadow.appendChild(style);
console.log(style.isConnected); // returns true
```

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

| Specification |
| --- |
| DOM Standard # ref-for-dom-node-isconnected① |

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

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

Свойство **`Node.baseURI`** только для чтения, возвращающее абсолютный базовый URL узла.

Базовый URL используется для разрешения относительных URLs, когда браузеру нужно получить абсолютный URL, например, когда обрабатывает элемент HTML `<img>`, `src` атрибут или XML `xlink:href` атрибут.

В самом простом случае, базовый URL это просто местонахождение документа, но это может зависеть от многих факторов, включая элемент `<base>` в HTML и атрибут `xml:base` (en-US) в XML.

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

var baseURI = node.baseURI;
```


* `baseURI` это `DOMString` представляющий базовый URL обусловленный `Node`. Может быть `null` если не удалось получить абсолютный URI
* `node.baseURI` только для чтения.
* `node.baseURI` может измениться со временем (с.м. ниже).
Подробности
-----------

### Базовый URL документа

Базовый URL *документа* по умолчанию, адрес документа (как отображено в браузере и доступно в `window.location`), но может измениться по умолчанию:

* Когда HTML `<base>` тег найден в документе;
* Когда этот новый документ создан динамически.

Смотрите Раздел базовый URLs в действующем стандарте HTML для уточнения деталей.

Вы можете использовать ``document`.baseURI` для получения базового URL документа. Заметим, что получение базового URL для документа, может возвращать различные URLs в течение долгого времени, если `<base>` теги или местонахождение документа изменилось.

### Базовый URL элемента

Базовый URL *элемента* в HTML обычно равен базовому URL документу узла.

Если документ содержит атрибуты `xml:base` (en-US) (которые вы не должны использовать в документах HTML), `element.baseURI` принимает во внимание `xml:base` атрибуты родительского элемента, когда вычисляет базовый URL. Для уточнения деталей смотрите xml:base (en-US).

Вы можете использовать ``element`.baseURI` для получения базового URL of элемента.

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

| Specification |
| --- |
| DOM Standard # ref-for-dom-node-baseuri① |

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

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

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

* `<base>` element (HTML)
* `xml:base` (en-US) атрибуты (XML документы).
* `Node.baseURIObject` (en-US) - вариант этого API для Mozilla дополнений и внутреннего кода. Возвращает базовый URL как `nsIURI`.
Node.isDefaultNamespace()
=========================

Метод **`Node.isDefaultNamespace()`** принимает URI пространства имён в качестве аргумента и возвращает `Boolean` со значением `true` если пространство имён является пространством имён данного узла по умолчанию или `false` если нет.

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

result = node.isDefaultNamespace(namespaceURI)
```


* `result` содержит в себе возвращаемое значение `true` или `false`.
* `namespaceURI` это строка представляющая собой пространство имён, на которое элемент будет проверен.
Пример
------


```js
var XULNS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
var el = document.getElementsByTagNameNS(XULNS, "textbox")[0];

alert(el.isDefaultNamespace(XULNS)); // true
```

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

| Specification |
| --- |
| DOM Standard # dom-node-isdefaultnamespace |

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

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

Метод **`Node.insertBefore()`** добавляет элемент в список дочерних элементов родителя перед указанным элементом.

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

var insertedElement = parentElement.insertBefore(newElement, referenceElement);
```


В Mozilla Firefox, если referenceElement не задан или равен null, newElement вставляется в конец списка дочерних элементов. В IE, referenceElement равный undefined, сгенерируется исключение "Invalid argument", в то время как Chrome сгенерирует исключение "Uncaught TypeError", ожидая 2 аргумента.

* `insertedElement` Вставленный элемент.
* `parentElement` Родитель для нового элемента.
* `newElement` Элемент для вставки.
* `referenceElement` Элемент, перед которым будет вставлен `newElement`.
Пример
------


```html
<div id="parentElement">
  <span id="childElement">foo bar</span>
</div>

<script>
 // Создаём новый <span>
 var sp1 = document.createElement("span");

 // Получаем ссылку на элемент, перед которым мы хотим вставить sp1
 var sp2 = document.getElementById("childElement");
 //Получаем ссылку на родителя sp2
 var parentDiv = sp2.parentNode;

 // Вставляем sp1 перед sp2
 parentDiv.insertBefore(sp1, sp2);
</script>
```


Однако нет метода insertAfter. Он может быть заменён использованием метода insertBefore в связке с `nextSibling` (en-US).

В предыдущем примере sp1 может быть вставлен после sp2 следующим образом:
```

parentDiv.insertBefore(sp1, sp2.nextSibling);
```


Если `sp2` не имеет следующего элемента, то он будет последним дочерним элементом, `sp2.nextSibling` вернёт `null`, а `sp1` вставится в конец дочернего узла (сразу после sp2).

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

Вставка элемента перед первым дочерним элементом с помощью firstChild (en-US).


```js
// Получаем ссылку на элемент в который мы хотим добавить новый элемент
var parentElement = document.getElementById("parentElement");
// Получаем ссылку на первый дочерний элемент
var theFirstChild = parentElement.firstChild;

// Создаём новый элемент, который будем добавлять
var newElement = document.createElement("div");

// Вставляем новый элемент перед первым дочерним элементом
parentElement.insertBefore(newElement, theFirstChild);
```


Когда у родителя нет первого дочернего элемента, `firstChild` вернёт `null`. Новый элемент всё равно будет выставляться после последнего дочернего элемента. Но так как родитель не имеет первого дочернего элемента, то он не будет иметь и последнего. Следовательно, после добавления в него элемента, этот элемент будет единственным дочерним элементом.

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

| Specification |
| --- |
| DOM Standard # dom-node-insertbefore |

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

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

Свойство **`Node.nextSibling`** используется только для чтения и возвращает узел, непосредственно следующий за данным узлом в списке `childNodes` его родительского элемента, или `null` если данный узел последний в этом списке.

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

nextNode = node.nextSibling
```

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

 Браузеры, основанные на Gecko, вставляют текстовые узлы в документ для представления пробелов в разметке.
 Поэтому узел, полученный, например, при использовании `Node.firstChild` или `Node.previousSibling` может относиться к
 пробелу, а не к тому элементу, который автор хотел получить.

 Смотрите Пробел в DOM (en-US) и
 W3C DOM 3 FAQ: Почему некоторые текстовые узлы пустые?
 для дополнительной информации.

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


```html
<div id="div-01">Вот div-01</div>
<div id="div-02">Вот div-02</div>

<script type="text/javascript">
 var el = document.getElementById("div-01").nextSibling,
 i = 1;

 console.log("Потомки div-01:");

 while (el) {
 console.log(i + ". " + el.nodeName);
 el = el.nextSibling;
 i++;
 }
</script>

<!--
 Следующий пример напишет в консоль:

 Потомки div-01:

 1. #text
 2. DIV
 3. #text
 4. SCRIPT

-->
```


В приведённом выше примере вы можете видеть, что `#text` узлы вставляются в DOM, где между тегами встречаются пробелы (т.е. после закрывающего тега элемента и до открывающего тега рядом). Не создаётся пробелов между элементами, вставленных с помощью `document.write`

Возможность включения текстовых узлов в DOM должна быть разрешена, когда DOM обходится с помощью `nextSibling`. Смотрите раздел "Примечания".

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

* DOM Level 1 Core: nextSibling
* DOM Level 2 Core: nextSibling
Смотрите также
--------------

* `Element.nextElementSibling`
Node.appendChild
================

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

**`Node.appendChild()`** добавляет узел в конец списка дочерних элементов указанного родительского узла. Если данный дочерний элемент является ссылкой на существующий узел в документе, то функция `appendChild()` перемещает его из текущей позиции в новую позицию (нет необходимости удалять узел из родительского узла перед добавлением его к какому-либо другому узлу).

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

Если данный дочерний элемент является `DocumentFragment`, то все содержимое `DocumentFragment` перемещается в дочерний список указанного родительского узла.

**Примечание:** Доступен новый API! > `ParentNode.append()` (en-US) поддерживает несколько аргументов и добавляемые строки.

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

var child = element.appendChild(child);
```


* `element` родительский элемент.
* `child` это элемент вставляется в конец `element`.
### Возвращаемое значение

Возвращается дочерний элемент (`aChild`), кроме тех случаев, когда `child` это `DocumentFragment`, в таком случае возвращается пустой `DocumentFragment`.

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

Цепочка может работать не так, как ожидалось, из-за того, что `appendChild()` возвращает дочерний элемент:


```js
let aBlock = document
  .createElement("block")
  .appendChild(document.createElement("b"));
```


Присваивает переменной `aBlock` элемент `<b></b>`, а не `<block></block>`, как вы могли ожидать.

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


```js
// Создаём новый элемент параграфа, и вставляем в конец document body
var p = document.createElement("p");
document.body.appendChild(p);
```

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

| Specification |
| --- |
| DOM Standard # dom-node-appendchild |

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

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

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

* `Node.removeChild`
* `Node.replaceChild`
* `Node.insertBefore`
* `Node.hasChildNodes`
Node.contains
=============

Метод **`Node.contains()`** возвращает `Boolean` значение, указывающее, является ли узел потомком данного узла, т. е. сам узел, один из его прямых потомков ( `childNodes` ), один из детей его детей и так далее.Синтаксис
---------
```

node.contains( otherNode )
```


* `node` элемент который сравнивается.
* `otherNode` элемент с которым производится сравнение.
Пример
------

Эта функция проверяет, находится ли элемент в теле страницы.


```js
function isInPage(node) {
  return node === document.body ? false : document.body.contains(node);
}
```

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

| Specification |
| --- |
| DOM Standard # ref-for-dom-node-contains① |

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

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

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

* `Node.compareDocumentPosition`
* `Node.hasChildNodes`
Node.normalize()
================

Метод **`Node.normalize()`** преобразует указанный узел и все его под-деревья в "нормализованный" вид. В нормализованном под-дереве нет ни пустых, ни смежных текстовых узлов.

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

element.normalize();
```

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


```js
var wrapper = document.createElement("div");

wrapper.appendChild(document.createTextNode("Part 1 "));
wrapper.appendChild(document.createTextNode("Part 2 "));

// At this point, wrapper.childNodes.length === 2
// wrapper.childNodes[0].textContent === "Part 1 "
// wrapper.childNodes[1].textContent === "Part 2 "

wrapper.normalize();

// Now, wrapper.childNodes.length === 1
// wrapper.childNodes[0].textContent === "Part 1 Part 2 "
```

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

| Specification |
| --- |
| DOM Standard # ref-for-dom-node-normalize① |

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

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

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

* `Text.splitText` (en-US)
Node.lookupPrefix()
===================

Метод **`Node.lookupPrefix()`** возвращает `DOMString` содержащий префикс для данного пространства имён URI, если он присутствует, и `null` если нет. Когда возможно присутствие нескольких префиксов, результат зависит от реализации.

Из-за ошибки bug 312019, этот метод не работает с динамическим назначением пространства имён, которое установлено с тем же свойством `Node.prefix`.

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

* http://www.w3.org/TR/DOM-Level-3-Cor...amespacePrefix