recursal/MDN huggingface dataset:
Window.getSelection()
=====================

Коротко
-------

Метод возвращает объект `Selection` (en-US), представленный в виде диапазона текста, который пользователь выделил на странице.

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

selection = window.getSelection();
```

### Значение

Объект `Selection` (en-US).

При добавлении в параметр пустую строку или воспользовавшись методом `Selection.toString()` вам вернут строку, которую выделил пользователь.

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


```js
function foo() {
  var selObj = window.getSelection();
  alert(selObj);
  var selRange = selObj.getRangeAt(0);
  // вернёт диапазон Range
}
```

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

### String representation of the Selection object

В JavaScript при попытке передать в функцию, принимающую строку (как на пример `window.alert()` или же `document.write()`), функция попробует сделать из любого параметра строку, даже если этот параметр является объектом, функцией со своими методами и свойствами.

В приведённом выше примере `selObj.toString() автоматически задействуется, когда мы передаём в``window.alert()` переменную selObj как параметр, который должен быть строкой. Однако мы не можем использовать свойства и метода объекта String, как на пример : `length`, `substr`. В следствии чего, вам необходимо будет применить вручную метод `toString(), как тут:`


```js
var selectedText = selObj.toString();
```


* `selObj` это объект `Selection`.
* `selectedText` это строка (Выделенный текст).
### Родственные объекты

Вы так же можете использовать такой способ вызова `Document.getSelection()`, который работает идентично `Window.getSelection()`.

Поля ввода HTML (inputs) предоставляют более удобный API для работы с выделенным текстом (смотрите `HTMLInputElement.setSelectionRange()`).

На заметку, разница между *selection* и *focus*. `Document.activeElement` - это то, что вернётся элемент, который выделен (focused) .

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

| Specification |
| --- |
| Selection API # dom-window-getselection |

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

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

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

* Selection API (en-US)
* `Selection` (en-US)
* `Range`
* `Document.getSelection()`
* `HTMLInputElement.setSelectionRange()`
MediaError.code
===============

Свойство **`MediaError.code`** доступно только для чтения, возвращает числовое значение, представляющее тип ошибки, возникшей на элементе носителя. Чтобы получить текстовую строку с конкретной диагностической информацией, см. раздел `MediaError.message` (en-US).

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

var myError = mediaError.code;
```

### Значение

Числовое значение, указывающее общий тип возникшей ошибки. Возможные значения описаны ниже, в разделе Media error code constants.

#### Константы кода ошибки носителя

| Name | Value | Description |
| --- | --- | --- |
| `MEDIA_ERR_ABORTED` | `1` | Извлечение связанного ресурса было прервано запросом пользователя. |
| `MEDIA_ERR_NETWORK` | `2` | Произошла какая-то сетевая ошибка, которая помешала успешному извлечению носителя, несмотря на то, что он был ранее доступен. |
| `MEDIA_ERR_DECODE` | `3` | Несмотря на то, что ранее ресурс был определён, как используемый, при попытке декодировать медиаресурс произошла ошибка. |
| `MEDIA_ERR_SRC_NOT_SUPPORTED` | `4` | Связанный объект ресурса или поставщика мультимедиа (например, `MediaStream`) был признан неподходящим. |

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

В этом примере создаётся элемент `<video>`, устанавливается обработчик ошибок для него, а затем устанавливается атрибут элемента `src` для видеоресурса, который должен присутствовать в элементе. Обработчик ошибок просто выводит сообщение


```js
var obj = document.createElement("video");
obj.onerror = function () {
  console.log("Ошибка с носителями информации: " + obj.error.code);
};
obj.src = "https://example.com/blahblah.mp4";
```

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

| Specification |
| --- |
| HTML Standard # dom-mediaerror-code-dev |

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

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

Изучите также
-------------

* Интерфейс, определяющий его, `MediaError`.
Document.location
=================

Доступное только для чтения свойство **`Document.location`** возвращает объект `Location`, который содержит информацию о URL страницы и предоставляет методы для изменения этого URL и загрузки другого URL.

Хотя `Document.location` это *read-only* объект `Location`, вы всё же можете присвоить ему `DOMString`. Это означает, что в большинстве случаев вы можете работать с document.location так, будто это строка: `document.location = 'http://www.example.com'` фактически то же, что и `document.location.href = 'http://www.example.com'`.

Чтобы получить URL как строку, вы можете использовать *read-only* свойство `document.URL`.

Если страница находится вне текущего контекста, вернётся `null`.

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

locationObj = document.location
document.location = 'http://www.mozilla.org' // Эквиваленто след.
document.location.href = 'http://www.mozilla.org'
```

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


```js
dump(document.location);
// Выведет строку
// "http://www.example.com/juicybits.html" в консоли
```

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

| Specification |
| --- |
| HTML Standard # the-location-interface |

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

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

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

* Интерфейс возвращаемого значения, `Location`.
* Похожая информация, но привязанная к контексту, `Window.location`
Document: событие scroll
========================

Событие **`scroll`** возникает при прокрутке области просмотра документа или элемента.

| Всплытие | Да |
| Отменяемый | Нет |
| Интерфейс | `Event` |
| Свойство обработчика событий | `onscroll` |

**Примечание:** В iOS UIWebViews события `scroll` не срабатывают во время самого прокручивания, только по его завершении. См. issue в Bootstrap #16202. Safari и WKWebViews не подвержены этому багу.

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

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

Поскольку события прокрутки могут запускаться с высокой скоростью, обработчик событий не должен выполнять вычислительно-ёмкие операции, такие как модификации DOM. Вместо этого рекомендуется пропускать такты события, используя `requestAnimationFrame()`, `setTimeout()` или `CustomEvent` (en-US), как показано ниже.

Обратите внимание, однако, что входные события и кадры анимации запускаются примерно с одинаковой скоростью, и поэтому приведённая ниже оптимизация зачастую не требуется. В примере ниже оптимизируется событие `scroll` для `requestAnimationFrame`:


```js
// Источник: http://www.html5rocks.com/en/tutorials/speed/animations/

let last_known_scroll_position = 0;
let ticking = false;

function doSomething(scroll\_pos) {
  // Делаем что-нибудь с позицией скролла
}

window.addEventListener("scroll", function (e) {
  last_known_scroll_position = window.scrollY;

  if (!ticking) {
    window.requestAnimationFrame(function () {
      doSomething(last_known_scroll_position);
      ticking = false;
    });

    ticking = true;
  }
});
```


Больше похожих примеров можно найти на странице события `resize`.

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

| Specification |
| --- |
| CSSOM View Module # eventdef-document-scroll |
| HTML Standard # handler-onscroll |

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

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

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

* Element: событие `scroll`
Document.documentURI
====================

Свойство **`documentURI`** интерфейса `Document` возвращает строку с текущим адресом документа.

Первоначально определено в DOM3 как атрибут для чтения и записи. В спецификации DOM4 это свойство доступно только для чтения.

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


```js
var string = document.documentURI;
```

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

HTML документы содержат свойство `document.URL` которое возвращает то же значение. Но в отличие от `URL`, свойство `documentURI` доступно для всех типов документов.

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

| Specification |
| --- |
| DOM Standard # ref-for-dom-document-documenturi① |

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

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

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

**Примечание:** Свойства `document.charset` и `document.inputEncoding` это устаревшие алиасы `document.characterSet`. Не используйте их больше.

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

var string = document.characterSet
```

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

<button onclick="alert(document.characterSet);">Показать кодировку</button>
// вернёт кодировку документа вида "ISO-8859-1" или "UTF-8"
```

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

| Specification |
| --- |
| DOM Standard # ref-for-dom-document-characterset① |

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

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

Возвращает массивоподобный (итерируемый) объект всех дочерних элементов, соответствующих всем из указанных имён классов. В случае вызова по отношению к объекту 'document', поиск происходит по всему документу, включая корневой элемент. Вызывать `getElementsByClassName()` можно также применительно к любому элементу: возвращены будут лишь те элементы, которые являются потомками указанного корневого элемента и имеют при этом указанные классы.

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

var elements = document.getElementsByClassName(names); // или:
var elements = rootElement.getElementsByClassName(names);
```


* *В "elements"* будет текущая `HTMLCollection` найденных элементов.
* *"names"* - строка, состоящая из списка имён искомых классов; имена классов разделяют пробелами.
* getElementsByClassName может быть вызвана по отношению к любому элементу, не только для документа целиком. ("document"). Элемент, по отношению к которому осуществляется вызов, используется для целей поиска в качестве корневого элемента.
Примеры
-------

Получить все элементы класса 'test':


```js
document.getElementsByClassName("test");
```


Получить все элементы, для которых заданы класс 'red' и класс 'test':


```js
document.getElementsByClassName("red test");
```


Получить все элементы класса 'test', являющиеся дочерними для элемента с ID 'main':


```js
document.getElementById("main").getElementsByClassName("test");
```


Мы также можем использовать методы из Array.prototype по отношению к любой `HTMLCollection`, передавая коллекцию в качестве значения *this* метода. Код в примере найдёт все элементы 'div' с классом 'test':


```js
var testElements = document.getElementsByClassName("test");
var testDivs = Array.prototype.filter.call(
  testElements,
  function (testElement) {
    return testElement.nodeName === "DIV";
  },
);
```

Получение элементов класса 'test'
---------------------------------

Ниже приведён пример наиболее употребительного способа использования данного метода.


```html
<!doctype html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>Document</title>
  </head>
  <body>
    <div id="parent-id">
      <p>hello word1</p>
      <p class="test">hello word2</p>
      <p>hello word3</p>
      <p>hello word4</p>
    </div>
    <script>
 var parentDOM = document.getElementById("parent-id");

 var test = parentDOM.getElementsByClassName("test"); //test is not target element
 console.log(test); //HTMLCollection[1]

 var testTarget = parentDOM.getElementsByClassName("test")[0]; //hear , this element is target
 console.log(testTarget); //<p class="test">hello word2</p>
 </script>
  </body>
</html>
```

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

| Specification |
| --- |
| DOM Standard # ref-for-dom-document-getelementsbyclassname① |

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

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

Возвращает узел `<body>` или `<frameset>` (en-US) текущей страницы, или **`null`** если таких элементов не существует.

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

var objRef = document.body;
document.body = objRef;
```

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


```js
// в HTML: <body id="oldBodyElement"></body>
alert(document.body.id); // "oldBodyElement"

var aNewBodyElement = document.createElement("body");

aNewBodyElement.id = "newBodyElement";
document.body = aNewBodyElement;
alert(document.body.id); // "newBodyElement"
```

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

**`document.body`** это элемент, который включает в себя содержимое страницы. На страницах с `<body>` вернётся элемент `<body>`, а с frameset - элемент `<frameset>`.

**`body`** может быть заменено, но это удалит все его дочерние элементы.

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

| Specification |
| --- |
| HTML Standard # dom-document-body-dev |

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

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

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

* `document.head`
Document.anchors
================

**`anchors`** возвращает массив всех якорей в документе.

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

nodeList = document.anchors;
```

### Значение

`HTMLCollection`.

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


```js
if (document.anchors.length >= 5) {
  dump("найдено слишком много якорей");
  window.location = "http://www.google.com";
}
```


Следующий пример автоматически генерирует список якорей из заглавий блоков, имеющихся на странице:


```html
<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>Test</title>
    <script>
 function init() {
 var toc = document.getElementById("toc");
 var i, li, newAnchor;
 for (i = 0; i < document.anchors.length; i++) {
 li = document.createElement("li");
 newAnchor = document.createElement("a");
 newAnchor.href = "#" + document.anchors[i].name;
 newAnchor.innerHTML = document.anchors[i].text;
 li.appendChild(newAnchor);
 toc.appendChild(li);
 }
 }
 </script>
  </head>
  <body onload="init()">
    <h1>Title</h1>
    <h2><a name="contents">Contents</a></h2>
    <ul id="toc"></ul>

    <h2><a name="plants">Plants</a></h2>
    <ol>
      <li>Apples</li>
      <li>Oranges</li>
      <li>Pears</li>
    </ol>

    <h2><a name="veggies">Veggies</a></h2>
    <ol>
      <li>Carrots</li>
      <li>Celery</li>
      <li>Beats</li>
    </ol>
  </body>
</html>
```


Посмотреть на JSFiddle

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

По причине обратной совместимости возвращаемый массив якорей включает в себя лишь якоря, созданные с помощью атрибута **name**, а не а **id**.

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

| Specification |
| --- |
| HTML Standard # dom-document-anchors |

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

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

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

**`Document`** конструктор создаёт новый `Document` объект, который является веб-страницей, загруженной в браузере и служит точкой входа в содержание страницы.

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

var document = new Document()
```

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

| Specification |
| --- |
| DOM Standard # ref-for-dom-document-document① |

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

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

Доступное только для чтения свойство **`Document.hidden`** возвращает булево значение, показывающее является ли страница скрытой или нет.

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

var boolean = document.hidden
```

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


```js
document.addEventListener("visibilitychange", function () {
  console.log(document.hidden);
  // Modify behavior...
});
```

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

| Specification |
| --- |
| HTML Standard # dom-document-hidden |

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

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

**`Document.documentElement`** - свойство только для чтения, которое возвращает элемент `Element` , который является коренным элементом документа `document` (en-US) (например элемент `<html>` для HTML документов).

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

var element = document.documentElement;
```

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


```js
var rootElement = document.documentElement;
var firstTier = rootElement.childNodes;

// firstTier -переменная объекта NodeList непосредственных потомков корневого элемента
for (var i = 0; i < firstTier.length; i++) {
  // что-то делает с каждым прямым потомком корневого элемента
  // как и firstTier[i]
}
```

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

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

HTML документ обычно содержит один дочерний узел - `<html>`, возможно с объявлением DOCTYPE перед ним. XML документы часто содержат множественные дочерние узлы: корневой элемент, объявление DOCTYPE, и инструкции по обработке (en-US).

Поэтому вам стоит использовать `document.documentElement` вместо `document.firstChild` для доступа к корневому элементу.

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

| Specification |
| --- |
| DOM Standard # ref-for-dom-document-documentelement① |

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

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

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

Свойство **`applets`** объекта `Document` возвращает пустую коллекцию `HTMLCollection`. Это свойство сохраняется только для совместимости; в старых версиях браузеров оно возвращало список апплетов документа.

**Примечание:** Поддержка элемента `<applet>` удалена во всех браузерах. Поэтому вызов `document.applets` всегда возвращает пустую коллекцию.

### Значение

Пустая `HTMLCollection`.

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

| Specification |
| --- |
| HTML Standard # dom-document-applets |

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

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

Выводит в документ строку со знаком перевода каретки в конце.

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

document.writeln(line);
```

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

* `line` - строка содержащая текст.
Пример
------
```

document.writeln("<p>введите пароль:</p>");
```

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

**document.writeln** тоже самое, что document.write но добавляет знак новой строки.

**Примечание:** `document.writeln` (как и `document.write`) не работает с XHTML документами (вы получите ошибку "Operation is not supported" (`NS_ERROR_DOM_NOT_SUPPORTED_ERR`) в консоли ошибок). Происходит это, если открыть локальный файл с расширением .xhtml или документ с MIME типом application/xhtml+xml. Больше информации доступно на W3C XHTML FAQ.

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

writeln
Document.createTextNode()
=========================

Создаёт новый текстовый узел.

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

var text = document.createTextNode(data);
```


* `text` - это текстовый узел.
* `data` - это строка с данными, которые будут помещены в текстовый узел.
Пример
------


```js
<!DOCTYPE html>
<html lang="en">
<head>
<title>createTextNode example</title>
<script>
function addTextNode(text) {
  var newtext = document.createTextNode(text),
      p1 = document.getElementById("p1");

  p1.appendChild(newtext);
}
</script>
</head>

<body>
  <button onclick="addTextNode('YES! ');">YES!</button>
  <button onclick="addTextNode('NO! ');">NO!</button>
  <button onclick="addTextNode('WE CAN! ');">WE CAN!</button>

  <hr />

  <p id="p1">First line of paragraph.</p>
</body>
</html>
```

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

| Specification |
| --- |
| DOM Standard # ref-for-dom-document-createtextnode① |

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

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

Свойство **`Document.readyState`** описывает состояние загрузки `document`.

Когда значение этого свойства изменяется, в объекте `document` запускается событие `readystatechange (en-US)`.

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

var string = document.readyState;
```

### Значения

Свойство **readyState** объекта document может иметь одно из следующих значений:

`loading`

Страница все ещё загружается.

`interactive`

Страница уже загружена и DOM дерево построено, но дополнительные ресурсы, такие как изображения и iframe (en-US), все ещё загружаются.

`complete`

Страница и все дополнительные ресурсы уже загружены. Это состояние указывает, что событие `load (en-US)` уже вызвано.

При изменении значения, данного свойства, вызывается событие `readystatechange (en-US)` на объекте `document`.

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

### Разные состояния загрузки страницы


```js
switch (document.readyState) {
  case "loading":
    // Страница все ещё загружается
    break;
  case "interactive":
    // Страница уже загружена. Теперь мы можем получить доступ к DOM объектам.
    var span = document.createElement("span");
    span.textContent = "A <span> element.";
    document.body.appendChild(span);
    break;
  case "complete":
    // Страница загружена вместе с дополнительными ресурсами.
    console.log(
      "The first CSS rule is: " + document.styleSheets[0].cssRules[0].cssText,
    );
    break;
}
```

### readystatechange как альтернатива событию DOMContentLoaded


```js
// альтернатива событию DOMContentLoaded
document.onreadystatechange = function () {
  if (document.readyState == "interactive") {
    initApplication();
  }
};
```

### readystatechange как альтернатива событию load


```js
// альтернатива событию load
document.onreadystatechange = function () {
  if (document.readyState == "complete") {
    initApplication();
  }
};
```

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

| Specification |
| --- |
| HTML Standard # current-document-readiness |

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

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

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

* Событие `readystatechange (en-US)`
* Событие `DOMContentLoaded (en-US)`
* Событие `load (en-US)`
Document.all
============

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

The `Document` Свойство **`all`** только для чтения интерфейса возвращает: `HTMLAllCollection` (en-US) С корнем в узле документа. Другими словами, он возвращает все содержимое страницы.

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

var htmlAllCollection = document.all;
```

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

В `HTMLAllCollection` (en-US) содержится все узлы в документе.

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

| Specification |
| --- |
| HTML Standard # dom-document-all |

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

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