From c058fa0fb22dc40ef0225b21a97578cddd0aaffa Mon Sep 17 00:00:00 2001 From: Florian Merz Date: Thu, 11 Feb 2021 14:51:05 +0100 Subject: unslug ru: move --- .../asynchronous/timeouts_and_intervals/index.html | 638 ++++++++++++++++++ .../index.html" | 638 ------------------ .../javascript/building_blocks/events/index.html | 606 +++++++++++++++++ .../index.html" | 606 ----------------- .../first_steps/a_first_splash/index.html | 675 +++++++++++++++++++ .../learn/javascript/first_steps/arrays/index.html | 678 +++++++++++++++++++ files/ru/learn/javascript/first_steps/index.html | 56 ++ .../learn/javascript/first_steps/math/index.html | 423 ++++++++++++ .../first_steps/silly_story_generator/index.html | 148 +++++ .../javascript/first_steps/strings/index.html | 284 ++++++++ .../first_steps/useful_string_methods/index.html | 723 +++++++++++++++++++++ .../javascript/first_steps/variables/index.html | 372 +++++++++++ .../first_steps/what_is_javascript/index.html | 339 ++++++++++ .../first_steps/what_went_wrong/index.html | 249 +++++++ .../adding_bouncing_balls_features/index.html | 212 ++++++ .../ru/learn/javascript/objects/basics/index.html | 257 ++++++++ files/ru/learn/javascript/objects/index.html | 47 ++ .../javascript/objects/inheritance/index.html | 266 ++++++++ files/ru/learn/javascript/objects/json/index.html | 353 ++++++++++ .../objects/object-oriented_js/index.html | 286 ++++++++ .../objects/object_building_practice/index.html | 302 +++++++++ .../objects/object_prototypes/index.html | 285 ++++++++ .../adding_bouncing_balls_features/index.html" | 212 ------ .../index.html" | 47 -- .../inheritance/index.html" | 266 -------- .../json/index.html" | 353 ---------- .../object-oriented_js/index.html" | 286 -------- .../object_building_practice/index.html" | 302 --------- .../object_prototypes/index.html" | 285 -------- .../index.html" | 257 -------- .../a_first_splash/index.html" | 675 ------------------- .../arrays/index.html" | 678 ------------------- .../index.html" | 56 -- .../math/index.html" | 423 ------------ .../useful_string_methods/index.html" | 723 --------------------- .../variables/index.html" | 372 ----------- .../what_is_javascript/index.html" | 339 ---------- .../index.html" | 148 ----- .../index.html" | 284 -------- .../index.html" | 249 ------- 40 files changed, 7199 insertions(+), 7199 deletions(-) create mode 100644 files/ru/learn/javascript/asynchronous/timeouts_and_intervals/index.html delete mode 100644 "files/ru/learn/javascript/asynchronous/\321\202\320\260\320\271\320\274\320\260\321\203\321\202\321\213_\320\270_\320\270\320\275\321\202\320\265\321\200\320\262\320\260\320\273\321\213/index.html" create mode 100644 files/ru/learn/javascript/building_blocks/events/index.html delete mode 100644 "files/ru/learn/javascript/building_blocks/\321\201\320\276\320\261\321\213\321\202\320\270\321\217/index.html" create mode 100644 files/ru/learn/javascript/first_steps/a_first_splash/index.html create mode 100644 files/ru/learn/javascript/first_steps/arrays/index.html create mode 100644 files/ru/learn/javascript/first_steps/index.html create mode 100644 files/ru/learn/javascript/first_steps/math/index.html create mode 100644 files/ru/learn/javascript/first_steps/silly_story_generator/index.html create mode 100644 files/ru/learn/javascript/first_steps/strings/index.html create mode 100644 files/ru/learn/javascript/first_steps/useful_string_methods/index.html create mode 100644 files/ru/learn/javascript/first_steps/variables/index.html create mode 100644 files/ru/learn/javascript/first_steps/what_is_javascript/index.html create mode 100644 files/ru/learn/javascript/first_steps/what_went_wrong/index.html create mode 100644 files/ru/learn/javascript/objects/adding_bouncing_balls_features/index.html create mode 100644 files/ru/learn/javascript/objects/basics/index.html create mode 100644 files/ru/learn/javascript/objects/index.html create mode 100644 files/ru/learn/javascript/objects/inheritance/index.html create mode 100644 files/ru/learn/javascript/objects/json/index.html create mode 100644 files/ru/learn/javascript/objects/object-oriented_js/index.html create mode 100644 files/ru/learn/javascript/objects/object_building_practice/index.html create mode 100644 files/ru/learn/javascript/objects/object_prototypes/index.html delete mode 100644 "files/ru/learn/javascript/\320\276\320\261\321\212\320\265\320\272\321\202\321\213/adding_bouncing_balls_features/index.html" delete mode 100644 "files/ru/learn/javascript/\320\276\320\261\321\212\320\265\320\272\321\202\321\213/index.html" delete mode 100644 "files/ru/learn/javascript/\320\276\320\261\321\212\320\265\320\272\321\202\321\213/inheritance/index.html" delete mode 100644 "files/ru/learn/javascript/\320\276\320\261\321\212\320\265\320\272\321\202\321\213/json/index.html" delete mode 100644 "files/ru/learn/javascript/\320\276\320\261\321\212\320\265\320\272\321\202\321\213/object-oriented_js/index.html" delete mode 100644 "files/ru/learn/javascript/\320\276\320\261\321\212\320\265\320\272\321\202\321\213/object_building_practice/index.html" delete mode 100644 "files/ru/learn/javascript/\320\276\320\261\321\212\320\265\320\272\321\202\321\213/object_prototypes/index.html" delete mode 100644 "files/ru/learn/javascript/\320\276\320\261\321\212\320\265\320\272\321\202\321\213/\320\276\321\201\320\275\320\276\320\262\321\213/index.html" delete mode 100644 "files/ru/learn/javascript/\320\277\320\265\321\200\320\262\321\213\320\265_\321\210\320\260\320\263\320\270/a_first_splash/index.html" delete mode 100644 "files/ru/learn/javascript/\320\277\320\265\321\200\320\262\321\213\320\265_\321\210\320\260\320\263\320\270/arrays/index.html" delete mode 100644 "files/ru/learn/javascript/\320\277\320\265\321\200\320\262\321\213\320\265_\321\210\320\260\320\263\320\270/index.html" delete mode 100644 "files/ru/learn/javascript/\320\277\320\265\321\200\320\262\321\213\320\265_\321\210\320\260\320\263\320\270/math/index.html" delete mode 100644 "files/ru/learn/javascript/\320\277\320\265\321\200\320\262\321\213\320\265_\321\210\320\260\320\263\320\270/useful_string_methods/index.html" delete mode 100644 "files/ru/learn/javascript/\320\277\320\265\321\200\320\262\321\213\320\265_\321\210\320\260\320\263\320\270/variables/index.html" delete mode 100644 "files/ru/learn/javascript/\320\277\320\265\321\200\320\262\321\213\320\265_\321\210\320\260\320\263\320\270/what_is_javascript/index.html" delete mode 100644 "files/ru/learn/javascript/\320\277\320\265\321\200\320\262\321\213\320\265_\321\210\320\260\320\263\320\270/\321\201\320\276\320\267\320\264\320\260\321\202\320\265\320\273\321\214_\320\263\320\273\321\203\321\213\321\205_\320\270\321\201\321\202\320\276\321\200\320\270\320\271/index.html" delete mode 100644 "files/ru/learn/javascript/\320\277\320\265\321\200\320\262\321\213\320\265_\321\210\320\260\320\263\320\270/\321\201\321\202\321\200\320\276\320\272\320\270/index.html" delete mode 100644 "files/ru/learn/javascript/\320\277\320\265\321\200\320\262\321\213\320\265_\321\210\320\260\320\263\320\270/\321\207\321\202\320\276_\320\277\320\276\321\210\320\273\320\276_\320\275\320\265_\321\202\320\260\320\272/index.html" (limited to 'files/ru/learn/javascript') diff --git a/files/ru/learn/javascript/asynchronous/timeouts_and_intervals/index.html b/files/ru/learn/javascript/asynchronous/timeouts_and_intervals/index.html new file mode 100644 index 0000000000..e3aa0c72b8 --- /dev/null +++ b/files/ru/learn/javascript/asynchronous/timeouts_and_intervals/index.html @@ -0,0 +1,638 @@ +--- +title: 'Объединенный асинхронный JavaScript: Таймайты и интервалы' +slug: Learn/JavaScript/Asynchronous/Таймауты_и_интервалы +translation_of: Learn/JavaScript/Asynchronous/Timeouts_and_intervals +--- +
{{LearnSidebar}}
+ +
{{PreviousMenuNext("Learn/JavaScript/Asynchronous/Introducing", "Learn/JavaScript/Asynchronous/Promises", "Learn/JavaScript/Asynchronous")}}
+ +

В этом руководстве рассматриваются традиционные методы, доступные в JavaScript для асинхронного выполнения кода по истечении заданного периода времени или через регулярный интервал (например, заданное количество раз в секунду), обсуждаются их полезные свойства и рассматриваются присущие им проблемы. .

+ + + + + + + + + + + + +
Необходимые условия:Базовая компьютерная грамотность, достаточное понимание основ JavaScript.
Цель:Понимание асинхронных циклов и интервалов, и то как их можно использовать.
+ +

Введение

+ +

В течение долгого времени веб-платформа предлагала программистам JavaScript ряд функций, которые позволяли им асинхронно выполнять код по истечении определенного временного интервала и повторно выполнять асинхронный блок кода, пока вы не скажете ему остановиться.

+ +

Эти функции:

+ +
+
setTimeout()
+
Выполняет указанный блок кода один раз по истечении указанного времени
+
setInterval()
+
Выполняет указанный блок кода несколько раз с определенным интервалом между каждым вызовом.
+
requestAnimationFrame()
+
Современная версия setInterval (). Выполняут указанный блок кода перед тем, как браузер в следующий раз перерисовывает отображение, позволяя запускать анимацию с подходящей частотой кадров независимо от среды, в которой она выполняется.
+
+ +

Асинхронный код, установленный этими функциями, выполняется в основном потоке (по истечении указанного им таймера).

+ +
+

Важно знать, что вы можете (и часто будете) запускать другой код до выполнения вызова setTimeout () или между итерациями setInterval (). В зависимости от того, насколько интенсивно используются эти операции для процессора, они могут еще больше задержать выполнение асинхронного кода, поскольку любой асинхронный код будет выполняться только после того, как станет доступен основной поток. (Другими словами, когда стек пуст.) Вы узнаете больше по этому вопросу по мере изучения этой статьи.

+
+ +

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

+ +

setTimeout()

+ +

Как мы ранее отметили, setTimeout () выполняет определенный блок кода один раз по истечении заданного времени. Принимает следующие параметры:

+ + + +
+

NOTE:  Указанное время (или задержка) не является гарантированным временем выполнения, а скорее минимальным временем выполнения. Обратные вызовы, которые вы передаете этим функциям, не могут выполняться, пока стек в основном потоке не станет пустым.

+ +

Как следствие, такой код, как setTimeout (fn, 0), будет выполняться, как только стек будет пуст, а не сразу. Если вы выполните такой код, как setTimeout (fn, 0), но сразу после выполнения цикла, который насчитывает от 1 до 10 миллиардов, ваш обратный вызов будет выполнен через несколько секунд.

+
+ +

В следующем примере, браузер будет ожидать две секунды перед тем как  выполнит анонимную функцию, тогда отобразит сообщение (живой пример, и исходный код):

+ +
let myGreeting = setTimeout(function() {
+  alert('Hello, Mr. Universe!');
+}, 2000)
+ +

Указанные вами функции не обязательно должны быть анонимными. Вы можете дать своей функции имя и даже определить ее где-нибудь еще и передать ссылку на функцию в setTimeout (). Следующие две версии фрагмента кода эквивалентны первой:

+ +
// С именованной функцией
+let myGreeting = setTimeout(function sayHi() {
+  alert('Hello, Mr. Universe!');
+}, 2000)
+
+// С функцией определенной отдельно
+function sayHi() {
+  alert('Hello Mr. Universe!');
+}
+
+let myGreeting = setTimeout(sayHi, 2000);
+ +

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

+ +

setTimeout () возвращает значение идентификатора, которое можно использовать для ссылки на тайм-аут позже, например, когда вы хотите его остановить.

+ +

Передача параметров в функцию setTimeout ()

+ +

Любые параметры, которые вы хотите передать функции, выполняемой внутри setTimeout (), должны быть переданы ей как дополнительные параметры в конце списка.

+ +

Например, вы можете реорганизовать предыдущую функцию, чтобы она передавала привет любому имени, переданному ей:

+ +
function sayHi(who) {
+  alert(`Hello ${who}!`);
+}
+ +

Теперь вы можете передать имя в вызов setTimeout () в качестве третьего параметра:

+ +
let myGreeting = setTimeout(sayHi, 2000, 'Mr. Universe');
+ +

Очистка таймаутов

+ +

Наконец, если был создан тайм-аут, вы можете отменить его до истечения указанного времени, вызвав clearTimeout(), передав ему идентификатор вызова setTimeout() в качестве параметра. Итак, чтобы отменить указанный выше тайм-аут, вы должны сделать следующее:

+ +
clearTimeout(myGreeting);
+ +
+

Note: См.greeter-app.html для более полной демонстрации, которая позволяет вам указать имя для приветствия и отменить приветствие с помощью отдельной кнопки (см. исходный код).

+
+ +

setInterval()

+ +

setTimeout () отлично работает, когда вам нужно один раз запустить код по истечении заданного периода времени. Но что происходит, когда вам нужно запускать код снова и снова - например, в случае анимации?

+ +

Здесь пригодится setInterval() . Работает очень похоже на setTimeout (), за исключением того, что функция, которую вы передаете в качестве первого параметра, выполняется повторно не менее чем за количество миллисекунд, заданных вторым параметром. Вы также можете передать любые параметры, необходимые для выполняемой функции, в качестве последующих параметров вызова setInterval ().

+ +

Давайте посмотрим на пример. Следующая функция создает новый объект Date(), с помощью toLocaleTimeString() извлекает из него строку с временем и отображает ее в пользовательском интерфейсе. Затем он запускает функцию один раз в секунду с помощью setInterval(), создавая эффект цифровых часов, которые обновляются раз в секунду ( реальный пример, и исходный код):

+ +
function displayTime() {
+   let date = new Date();
+   let time = date.toLocaleTimeString();
+   document.getElementById('demo').textContent = time;
+}
+
+const createClock = setInterval(displayTime, 1000);
+ +

Как и setTimeout (), setInterval () возвращает определенное значение, которое вы можете использовать позже, когда вам нужно очистить интервал.

+ +

Очистка интервала

+ +

setInterval () выполняет задачу постоянно. setInterval () продолжает выполнять задачу вечно, если вы что-то с ней не сделаете. Возможно, вам понадобится способ остановить такие задачи, иначе вы можете получить ошибки, если браузер не сможет выполнить какие-либо другие версии задачи или если анимация, обрабатываемая задачей, завершилась. Вы можете сделать это так же, как останавливаете timeouts - передавая идентификатор, возвращаемый вызовом setInterval (), в функцию clearInterval ():

+ +
const myInterval = setInterval(myFunction, 2000);
+
+clearInterval(myInterval);
+ +

Активное обучение: Создание собственного секундомера!

+ +

Учитывая все вышесказанное, у нас есть для вас задача. Возьмите копию нашего примера setInterval-clock.html , и измените ее так, чтобы создать свой собственный простой секундомер.

+ +

Вам нужно отображать время, как и раньше, но в этом примере вам нужно:

+ + + +

Несколько подсказок для вас:

+ + + +
+

Note: Если вы застряли, вы можете увидеть нашу версию (см. также исходный код ).

+
+ +

Что нужно помнить о setTimeout () и setInterval ()

+ +

При работе с setTimeout () и setInterval () следует помнить о нескольких вещах. Давайте рассмотрим их.

+ +

Рекурсивые таймауты

+ +

Есть еще один способ использования setTimeout (): вы можете вызвать его рекурсивно для повторного запуска одного и того же кода вместо использования setInterval ().

+ +

В приведенном ниже примере используется рекурсивный setTimeout () для запуска переданной функции каждые 100 миллисекунд:

+ +
let i = 1;
+
+setTimeout(function run() {
+  console.log(i);
+  i++;
+  setTimeout(run, 100);
+}, 100);
+ +

Сравните приведенный выше пример со следующим - здесь используется setInterval () для достижения того же эффекта:

+ +
let i = 1;
+
+setInterval(function run() {
+  console.log(i);
+  i++
+}, 100);
+ +

Чем рекурсивный setTimeout () отличается от setInterval () ?

+ +

Разница между двумя версиями приведенного выше кода невелика.

+ + + +

Когда ваш код потенциально может занять больше времени, чем назначенный вами интервал времени, лучше использовать рекурсивный setTimeout () - это сохранит постоянный временной интервал между выполнениями независимо от того, сколько времени потребуется для выполнения кода, и вы избежите ошибок.

+ +

Немедленные таймауты

+ +

Использование 0 в качестве значения для setTimeout () позволяет планировать выполнение указанной функции обратного вызова как можно скорее, но только после того, как будет запущен основной поток кода.

+ +

Например, код приведенный ниже (рабочий код) выводит alert содержащий "Hello", затем alert содержащий "World" как только вы нажмете ОК в первом alert.

+ +
setTimeout(function() {
+  alert('World');
+}, 0);
+
+alert('Hello');
+ +

Это может быть полезно в тех случаях, когда вы хотите установить блок кода для запуска, как только весь основной поток завершит работу - поместите его в цикл событий async, чтобы он запускался сразу после этого.

+ +

Очистка с помощью clearTimeout() или clearInterval()

+ +

clearTimeout () и clearInterval () используют один и тот же список записей для очистки. Интересно, что это означает, что вы можете использовать любой метод для очистки setTimeout () или setInterval ().

+ +

Для согласованности следует использовать clearTimeout () для очистки записей setTimeout () и clearInterval () для очистки записей setInterval (). Это поможет избежать путаницы.

+ +

requestAnimationFrame()

+ +

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

+ +

Он был создан в ответ на проблемы с setInterval (), который, например, не работает с частотой кадров, оптимизированной для устройства, иногда пропускает кадры, продолжает работать, даже если вкладка не является активной вкладкой или анимация прокручивается со страницы и т. д.(Читай об этом больше в CreativeJS.)

+ +
+

Note: Вы можете найти примеры использования requestAnimationFrame() в этом курсе — например в  Рисование графики, and Практика построения объектов.

+
+ +

Метод принимает в качестве аргумента обратный вызов, который должен быть вызван перед перерисовкой. Это общий шаблон, в котором он используется:

+ +
function draw() {
+   // Drawing code goes here
+   requestAnimationFrame(draw);
+}
+
+draw();
+ +

Идея состоит в том, чтобы определить функцию, в которой ваша анимация обновляется (например, ваши спрайты перемещаются, счет обновляется, данные обновляются или что-то еще). Затем вы вызываете его, чтобы начать процесс. В конце функционального блока вы вызываете requestAnimationFrame () со ссылкой на функцию, переданной в качестве параметра, и это дает браузеру указание вызвать функцию снова при следующей перерисовке дисплея. Затем он выполняется непрерывно, поскольку код рекурсивно вызывает requestAnimationFrame ().

+ +
+

Note: Если вы хотите выполнить простое постоянное анимирование DOM , CSS Анимация вероятно будет быстрее. Она высисляется непосредственно внутренним кодом браузера, а не JavaScript.

+ +

Однако, если вы делаете что-то более сложное, включающее объекты, которые не доступны напрямую в the DOM (такие как 2D Canvas API или WebGL ), requestAnimationFrame() предпочтительный вариант в большинстве случаев.

+
+ +

Как быстро работает ваша анимация?

+ +

Плавность анимации напрямую зависит от частоты кадров анимации и измеряется в кадрах в секунду (fps). Чем выше это число, тем плавнее будет выглядеть ваша анимация до точки.

+ +

Поскольку большинство экранов имеют частоту обновления 60 Гц, максимальная частота кадров, к которой вы можете стремиться, составляет 60 кадров в секунду (FPS) при работе с веб-браузерами. Однако большее количество кадров означает больше обработки, которая часто может вызывать заикание и пропуски, также известные как пропадание кадров или заедание.

+ +

Если у вас есть монитор с частотой обновления 60 Гц и вы хотите достичь 60 кадров в секунду, у вас есть около 16,7 миллисекунд (1000/60) для выполнения кода анимации для рендеринга каждого кадра. Это напоминание о том, что вам нужно помнить об объеме кода, который вы пытаетесь запустить во время каждого прохождения цикла анимации.

+ +

requestAnimationFrame () всегда пытается приблизиться к этому волшебному значению 60 FPS, насколько это возможно. Иногда это невозможно - если у вас действительно сложная анимация и вы запускаете ее на медленном компьютере, частота кадров будет меньше. Во всех случаях requestAnimationFrame () всегда будет делать все возможное с тем, что у него есть.

+ +

Чем отличается requestAnimationFrame() от setInterval() and setTimeout()?

+ +

Давайте поговорим еще немного о том, чем метод requestAnimationFrame () отличается от других методов, используемых ранее. Глядя на наш код сверху:

+ +
function draw() {
+   // Drawing code goes here
+   requestAnimationFrame(draw);
+}
+
+draw();
+ +

Такой же код с использованием setInterval():

+ +
function draw() {
+   // Drawing code goes here
+}
+
+setInterval(draw, 17);
+ +

Как мы уже говорили ранее, вы не указываете временной интервал для requestAnimationFrame (). Просто он работает максимально быстро и плавно в текущих условиях. Браузер также не тратит время на запуск, если по какой-то причине анимация выходит за пределы экрана и т. д.

+ +

setInterval (), с другой стороны, требует указания интервала. Мы пришли к нашему окончательному значению 17 по формуле 1000 миллисекунд / 60 Гц, а затем округлили его в большую сторону. Округление - хорошая идея; если вы округлите в меньшую сторону, браузер может попытаться запустить анимацию со скоростью, превышающей 60 кадров в секунду, и в любом случае это не повлияет на плавность анимации. Как мы уже говорили, стандартная частота обновления - 60 Гц.

+ +

В том числе временная метка

+ +

Фактическому обратному вызову, переданному в функцию requestAnimationFrame (), также может быть задан параметр: значение отметки времени, которое представляет время с момента начала работы requestAnimationFrame ().

+ +

Это полезно, поскольку позволяет запускать вещи в определенное время и в постоянном темпе, независимо от того, насколько быстрым или медленным может быть ваше устройство. Общий шаблон, который вы бы использовали, выглядит примерно так:

+ +
let startTime = null;
+
+function draw(timestamp) {
+    if (!startTime) {
+      startTime = timestamp;
+    }
+
+   currentTime = timestamp - startTime;
+
+   // Do something based on current time
+
+   requestAnimationFrame(draw);
+}
+
+draw();
+ +

Поддержка браузерами

+ +

requestAnimationFrame () поддерживается в более поздних версиях браузеров, чем setInterval () / setTimeout (). Интересно, что он доступен в Internet Explorer 10 и выше.

+ +

Итак, если вам не тербуется поддержка старых версий IE, нет особых причин не использовать requestAnimationFrame().

+ +

Простой пример

+ +

Хватит теории! Давайте выполним упражнение с использованием requestAnimationFrame() . Создадим простую анимацию "spinner animation"—вы могли ее видеть в приложениях когда происходят задержки при ответе с сервера и т.п..

+ +
+

Note: Для такой простой анимации, вам следовало бы использовать CSS . Однако такой вид анимации очень полезен для демонстрации requestAnimationFrame() , вы скорее всего будете использовать этот метод когда делаете что-то более сложное, например обновление отображения игры в каждом кадре.

+
+ +
    +
  1. +

    Возьмите базовый HTML шаблон (такой как этот).

    +
  2. +
  3. +

    Поместите пустой  {{htmlelement("div")}} елемент внутри элемента {{htmlelement("body")}}, затем добавьте внутрь символ ↻ . Этот символ будет действовать как spinner в нашем примере.

    +
  4. +
  5. +

    Применитеpply следующий CSS к HTML шаблону (любым предпочитаемым способом). Он установ красный фон на странице, высоту <body> равную 100% высоты {{htmlelement("html")}} , и центрирует <div> внутри <body>, по горизонтали и вертикали.

    + +
    html {
    +  background-color: white;
    +  height: 100%;
    +}
    +
    +body {
    +  height: inherit;
    +  background-color: red;
    +  margin: 0;
    +  display: flex;
    +  justify-content: center;
    +  align-items: center;
    +}
    +
    +div {
    +  display: inline-block;
    +  font-size: 10rem;
    +}
    +
  6. +
  7. +

    Разместите  {{htmlelement("script")}} элемент перед </body> .

    +
  8. +
  9. +

    Разместите следующий JavaScript код в  <script> . Здесь вы сохраняете ссылку на <div> внутри, устанавливаете дяпеременной rotateCount значение 0, устанавливаете неинициализированную переменную, которая позже будет использоваться для хранения ссылки на вызов requestAnimationFrame(), и устанавливаете для переменной startTime значение null, которая будет позже использоваться для хранения времени начала requestAnimationFrame().

    + +
    const spinner = document.querySelector('div');
    +let rotateCount = 0;
    +let startTime = null;
    +let rAF;
    +
    +
  10. +
  11. +

    Под предыдущим кодом вставьте функцию draw() соторая будет использоваться для хранения нашешо кода анимации, который включает параметр timestamp :

    + +
    function draw(timestamp) {
    +
    +}
    +
  12. +
  13. +

    Внутри draw () добавьте следующие строки. Они определят время начала, если оно еще не определено (это произойдет только на первой итерации цикла), и установят для параметра rotateCount значение для поворота счетчика (текущая временная метка, возьмите начальную временную метку, разделенную на три, чтобы замедлиться):

    + +
      if (!startTime) {
    +   startTime = timestamp;
    +  }
    +
    +  rotateCount = (timestamp - startTime) / 3;
    +
    +
  14. +
  15. +

    Под предыдущей строкой внутри draw () добавьте следующий блок - он проверяет, превышает ли значение rotateCount 359 (например, 360, полный круг). Если это так, он устанавливает значение по модулю 360 (то есть остаток, оставшийся после деления значения на 360), поэтому круговая анимация может продолжаться непрерывно с разумным низким значением. Обратите внимание, что это не является строго необходимым, но легче работать со значениями от 0 до 359 градусов, чем со значениями типа «128000 градусов».

    + +
    if (rotateCount > 359) {
    +  rotateCount %= 360;
    +}
    +
  16. +
  17. Затем, под предыдущим блоком, добавьте следующую строку, чтобы вращать spinner: +
    spinner.style.transform = `rotate(${rotateCount}deg)`;
    +
  18. +
  19. +

    В самом низу внутри функции draw () вставьте следующую строку. Это ключ ко всей операции - вы устанавливаете для переменной, определенной ранее, активный вызов requestAnimation (), который принимает функцию draw () в качестве своего параметра. Это запускает анимацию, постоянно выполняя функцию draw () со скоростью, близкой к 60 FPS.

    + +
    rAF = requestAnimationFrame(draw);
    +
  20. +
  21. +

    Ниже, вызовите функцию draw() для запуска анимации.

    + +
    draw();
    +
  22. +
+ +
+

Note: Вы можете посмотреть рабочий образец на GitHub. ( исходный код.)

+
+ +

Очbстка вызова  requestAnimationFrame() 

+ +

Очистить вызов requestAnimationFrame () можно, вызвав соответствующий метод cancelAnimationFrame (). (Обратите внимание, что имя функции начинается с «cancel», а не «clear», как у методов «set ...».)

+ +

Просто передайте ему значение, возвращаемое вызовом requestAnimationFrame () для отмены, которое вы сохранили в переменной rAF:

+ +
cancelAnimationFrame(rAF);
+ +

Активное обучение: запуск и остановка нашей анимации

+ +

В этом упражнении мы хотели бы, чтобы вы протестировали метод cancelAnimationFrame (), взяв наш предыдущий пример и обновив его, добавив прослушиватель событий для запуска и остановки счетчика при щелчке мышью в любом месте страницы.

+ +

Подсказки:

+ + + +
+

Note: Для начала попробуйте сами; если вы действительно застряли, посмотрите наш живой пример и исходный код.

+
+ +

Регулировка анимации requestAnimationFrame() 

+ +

Одним из ограничений requestAnimationFrame () является то, что вы не можете выбирать частоту кадров. В большинстве случаев это не проблема, так как обычно вы хотите, чтобы ваша анимация работала как можно плавнее. Но как насчет того, чтобы создать олдскульную 8-битную анимацию?

+ +

Это было проблемой, например в анимации ходьбы, вдохновленной островом обезьян, из статьи Drawing Graphics:

+ +

{{EmbedGHLiveSample("learning-area/javascript/apis/drawing-graphics/loops_animation/7_canvas_walking_animation.html", '100%', 260)}}

+ +

В этом примере вы должны анимировать как положение персонажа на экране, так и отображаемый спрайт. В анимации спрайта всего 6 кадров. Если бы вы показывали разные кадры спрайта для каждого кадра, отображаемого на экране, с помощью requestAnimationFrame (), Guybrush двигал бы конечностями слишком быстро, и анимация выглядела бы нелепо. Следовательно, в этом примере регулируется скорость, с которой спрайт циклически повторяет свои кадры, используя следующий код:

+ +
if (posX % 13 === 0) {
+  if (sprite === 5) {
+    sprite = 0;
+  } else {
+    sprite++;
+  }
+}
+ +

Таким образом, код циклически повторяет спрайт только один раз каждые 13 кадров анимации.

+ +

... Фактически, это примерно каждые 6,5 кадров, поскольку мы обновляем posX (положение персонажа на экране) на два кадра:

+ +
if (posX > width/2) {
+  newStartPos = -( (width/2) + 102 );
+  posX = Math.ceil(newStartPos / 13) * 13;
+  console.log(posX);
+} else {
+  posX += 2;
+}
+ +

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

+ +

Метод, который вы используете для регулирования анимации, будет зависеть от вашего конкретного кода. Например, в предыдущем примере счетчика вы могли заставить его двигаться медленнее, увеличивая rotateCount только на единицу в каждом кадре вместо двух.

+ +

Активное обучение: игра на реакцию

+ +

В последнем разделе этой статьи вы создадите игру на реакцию для двух игроков. В игре будет два игрока, один из которых управляет игрой с помощью клавиши A, а другой - с помощью клавиши L.

+ +

При нажатии кнопки «Start» счетчик, подобный тому, что мы видели ранее, отображается в течение случайного промежутка времени от 5 до 10 секунд. По истечении этого времени появится сообщение «PLAYERS GO !!» - как только это произойдет, первый игрок, который нажмет свою кнопку управления, выиграет игру.

+ +

{{EmbedGHLiveSample("learning-area/javascript/asynchronous/loops-and-intervals/reaction-game.html", '100%', 500)}}

+ +

Давайте поработаем над этим:

+ +
    +
  1. +

    Прежде всего, скачайте стартовый файл. Он содержит законченную структуру HTML и стили CSS, что дает нам игровую доску, которая показывает информацию двух игроков (как показано выше), но с счетчиком и параграфом результатов, отображаемыми друг над другом. Вам нужно просто написать JavaScript код.

    +
  2. +
  3. +

    Внутри пустого элемента {{htmlelement("script")}} на вашей старнице, начните с добавления следующих строк кода, котороые определяют некотороые переменные и константы, которые вам понадобятся в дальнейшем:

    + +
    const spinner = document.querySelector('.spinner p');
    +const spinnerContainer = document.querySelector('.spinner');
    +let rotateCount = 0;
    +let startTime = null;
    +let rAF;
    +const btn = document.querySelector('button');
    +const result = document.querySelector('.result');
    + +

    В следующем порядке:

    + +
      +
    1. Ссылка на спиннер, чтобы вы могли его анимировать.
    2. +
    3. Ссылка на элемент {{htmlelement("div")}} содержащий спиннер, используемый для отображения и скрытия.
    4. +
    5. Счетчик поворотов. Он определяет, на сколько вы хотите показывать вращение спиннера на каждом кадре анимации.
    6. +
    7. Нулевое время начала. Это будет заполнено временем начала, когда счетчик начнет вращаться.
    8. +
    9. Неинициализировання переменная для последующего хранения вызова {{domxref("Window.requestAnimationFrame", "requestAnimationFrame()")}} который анимирует спиннер.
    10. +
    11. Ссылка на кнопку Start .
    12. +
    13. Ссылка на параграф результатов.
    14. +
    +
  4. +
  5. +

    Ниже добавьте следующую функцию. Она просто берет два числа и возвращает случайное число между ними. Это понадобится вам позже, чтобы сгенерировать случайный интервал ожидания.

    + +
    function random(min,max) {
    +  var num = Math.floor(Math.random()*(max-min)) + min;
    +  return num;
    +}
    +
  6. +
  7. +

    Затем добавьте функцию draw(), которая анимирует спиннер. Это очень похоже на версию из предыдущего примера простого счетчика:

    + +
    function draw(timestamp) {
    +  if(!startTime) {
    +   startTime = timestamp;
    +  }
    +
    +  rotateCount = (timestamp - startTime) / 3;
    +
    +  if(rotateCount > 359) {
    +    rotateCount %= 360;
    +  }
    +
    +  spinner.style.transform = 'rotate(' + rotateCount + 'deg)';
    +  rAF = requestAnimationFrame(draw);
    +}
    +
  8. +
  9. +

    Теперь пришло время настроить начальное состояние приложения при первой загрузке страницы. Добавьте следующие две строки, которые просто скрывают абзац результатов и контейнер счетчика с помощью display: none ;.

    + +
    result.style.display = 'none';
    +spinnerContainer.style.display = 'none';
    +
  10. +
  11. +

    Затем определите функцию reset (), которая возвращает приложение в исходное состояние, необходимое для повторного запуска игры после ее завершения. Добавьте в конец кода следующее:

    + +
    function reset() {
    +  btn.style.display = 'block';
    +  result.textContent = '';
    +  result.style.display = 'none';
    +}
    +
  12. +
  13. +

    Хорошо, хватит подготовки! Пришло время сделать игру доступной! Добавьте в свой код следующий блок. Функция start () вызывает draw (), чтобы запустить вращение спиннера и отобразить его в пользовательском интерфейсе, скрыть кнопку Start, чтобы вы не могли испортить игру, запустив ее несколько раз одновременно, и запускает вызов setTimeout (), который выполняется функция setEndgame () по прошествии случайного интервала от 5 до 10 секунд. Следующий блок также добавляет прослушиватель событий к вашей кнопке для запуска функции start () при ее нажатии.

    + +
    btn.addEventListener('click', start);
    +
    +function start() {
    +  draw();
    +  spinnerContainer.style.display = 'block';
    +  btn.style.display = 'none';
    +  setTimeout(setEndgame, random(5000,10000));
    +}
    + +
    +

    Note: Вы увидете, что этот пример вызывает setTimeout() без сохранения возвращаемого значения. (не  let myTimeout = setTimeout(functionName, interval).) 

    + +

    Это прекрасно работает, если вам не нужно очищать интервал / тайм-аут в любой момент. Если вы это сделаете, вам нужно будет сохранить возвращенный идентификатор!

    +
    + +

    Конечным результатом предыдущего кода является то, что при нажатии кнопки «Start» отображается спиннер, и игроки вынуждены ждать произвольное количество времени, прежде чем их попросят нажать их кнопку. Эта последняя часть обрабатывается функцией setEndgame (), которую вы определите позже.

    +
  14. +
  15. +

    Добавьте в свой код следующую функцию:

    + +
    function setEndgame() {
    +  cancelAnimationFrame(rAF);
    +  spinnerContainer.style.display = 'none';
    +  result.style.display = 'block';
    +  result.textContent = 'PLAYERS GO!!';
    +
    +  document.addEventListener('keydown', keyHandler);
    +
    +  function keyHandler(e) {
    +    let isOver = false;
    +    console.log(e.key);
    +
    +    if (e.key === "a") {
    +      result.textContent = 'Player 1 won!!';
    +      isOver = true;
    +    } else if (e.key === "l") {
    +      result.textContent = 'Player 2 won!!';
    +      isOver = true;
    +    }
    +
    +    if (isOver) {
    +      document.removeEventListener('keydown', keyHandler);
    +      setTimeout(reset, 5000);
    +    }
    +  };
    +}
    + +

    Выполните следующие инструкции:

    + +
      +
    1. Во-первых, отмените анимацию спиннера с помощью {{domxref("window.cancelAnimationFrame", "cancelAnimationFrame()")}} (всегда полезно очистить ненужные процессы), и скройте контейнер счетчика.
    2. +
    3. Затем, отобразите абзац с результатами и установите для его текстового содержимого значение "PLAYERS GO!!"  чтобы сообщить игрокам, что теперь они могут нажать свою кнопку, чтобы победить.
    4. +
    5. Прикрепите к документу прослушиватель событий keydown . При нажатии любой кнопки запускается функция keyHandler().
    6. +
    7. Внутри keyHandler(), код включает обьект события в качестве параметра (представленного e) — его свойство {{domxref("KeyboardEvent.key", "key")}} содержит только что нажатую клавишу, и вы можете использовать это для твета на определенные нажатия клавиш определенными действиями.
    8. +
    9. Установите для переменной isOver значение false, чтобы мы могли отслеживать, были ли нажаты правильные клавиши, чтобы игрок 1 или 2 выиграл. Мы не хотим, чтобы игра заканчивалась при нажатии неправильной клваиши.
    10. +
    11. Регистрация e.key в консоли, это полезный способ узнать значение различных клавиш, которые вы нажимаете.
    12. +
    13. Когда e.key принимает значение "a", отобразить сообщение о том, что Player 1 выиграл, а когда e.key это "l", отобразить сообщение о том, что Player 2 выиграл. (Note: Это будет работать только со строчными буквами a и l — если переданы прописные A или L , это считается другими клавишами!) Если была нажата одна из этих клавиш, установите для isOver значение true.
    14. +
    15. Только еслиf isOver равно true, удалите прослушиватель событий keydown с помощью {{domxref("EventTarget.removeEventListener", "removeEventListener()")}} чтобы после того, как произошло выигрышное нажатие, больше не было возможности ввода с клавиатуры, чтобы испортить финальный результат игры. Вы также используете setTimeout() для вызова reset() через 5 секунд — как обьяснялось ранее, эта функция сбрасывает игру обратно в исходное состояние, чтобы можно было начать новую игру.
    16. +
    +
  16. +
+ +

Вот и все - вы справились!

+ +
+

Note: Если вы где то застряли, взгляните на наша версия игры (см. также исходный код ).

+
+ +

Заключение

+ +

Вот и все — все основы асинхронных циклов и интервалов рассмотрены в статье. Вы найдете эти методы полезными во многих ситуациях, но постарайтесь не злоупотреблять ими! Поскольку они по-прежнему выполняются в основном потоке, тяжелые и интенсивные обратные вызовы (особенно те, которые управляют DOM) могут действительно замедлить страницу, если вы не будете осторожныl.

+ +

{{PreviousMenuNext("Learn/JavaScript/Asynchronous/Introducing", "Learn/JavaScript/Asynchronous/Promises", "Learn/JavaScript/Asynchronous")}}

+ +

В этом модуле

+ + + +
+
+
diff --git "a/files/ru/learn/javascript/asynchronous/\321\202\320\260\320\271\320\274\320\260\321\203\321\202\321\213_\320\270_\320\270\320\275\321\202\320\265\321\200\320\262\320\260\320\273\321\213/index.html" "b/files/ru/learn/javascript/asynchronous/\321\202\320\260\320\271\320\274\320\260\321\203\321\202\321\213_\320\270_\320\270\320\275\321\202\320\265\321\200\320\262\320\260\320\273\321\213/index.html" deleted file mode 100644 index e3aa0c72b8..0000000000 --- "a/files/ru/learn/javascript/asynchronous/\321\202\320\260\320\271\320\274\320\260\321\203\321\202\321\213_\320\270_\320\270\320\275\321\202\320\265\321\200\320\262\320\260\320\273\321\213/index.html" +++ /dev/null @@ -1,638 +0,0 @@ ---- -title: 'Объединенный асинхронный JavaScript: Таймайты и интервалы' -slug: Learn/JavaScript/Asynchronous/Таймауты_и_интервалы -translation_of: Learn/JavaScript/Asynchronous/Timeouts_and_intervals ---- -
{{LearnSidebar}}
- -
{{PreviousMenuNext("Learn/JavaScript/Asynchronous/Introducing", "Learn/JavaScript/Asynchronous/Promises", "Learn/JavaScript/Asynchronous")}}
- -

В этом руководстве рассматриваются традиционные методы, доступные в JavaScript для асинхронного выполнения кода по истечении заданного периода времени или через регулярный интервал (например, заданное количество раз в секунду), обсуждаются их полезные свойства и рассматриваются присущие им проблемы. .

- - - - - - - - - - - - -
Необходимые условия:Базовая компьютерная грамотность, достаточное понимание основ JavaScript.
Цель:Понимание асинхронных циклов и интервалов, и то как их можно использовать.
- -

Введение

- -

В течение долгого времени веб-платформа предлагала программистам JavaScript ряд функций, которые позволяли им асинхронно выполнять код по истечении определенного временного интервала и повторно выполнять асинхронный блок кода, пока вы не скажете ему остановиться.

- -

Эти функции:

- -
-
setTimeout()
-
Выполняет указанный блок кода один раз по истечении указанного времени
-
setInterval()
-
Выполняет указанный блок кода несколько раз с определенным интервалом между каждым вызовом.
-
requestAnimationFrame()
-
Современная версия setInterval (). Выполняут указанный блок кода перед тем, как браузер в следующий раз перерисовывает отображение, позволяя запускать анимацию с подходящей частотой кадров независимо от среды, в которой она выполняется.
-
- -

Асинхронный код, установленный этими функциями, выполняется в основном потоке (по истечении указанного им таймера).

- -
-

Важно знать, что вы можете (и часто будете) запускать другой код до выполнения вызова setTimeout () или между итерациями setInterval (). В зависимости от того, насколько интенсивно используются эти операции для процессора, они могут еще больше задержать выполнение асинхронного кода, поскольку любой асинхронный код будет выполняться только после того, как станет доступен основной поток. (Другими словами, когда стек пуст.) Вы узнаете больше по этому вопросу по мере изучения этой статьи.

-
- -

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

- -

setTimeout()

- -

Как мы ранее отметили, setTimeout () выполняет определенный блок кода один раз по истечении заданного времени. Принимает следующие параметры:

- - - -
-

NOTE:  Указанное время (или задержка) не является гарантированным временем выполнения, а скорее минимальным временем выполнения. Обратные вызовы, которые вы передаете этим функциям, не могут выполняться, пока стек в основном потоке не станет пустым.

- -

Как следствие, такой код, как setTimeout (fn, 0), будет выполняться, как только стек будет пуст, а не сразу. Если вы выполните такой код, как setTimeout (fn, 0), но сразу после выполнения цикла, который насчитывает от 1 до 10 миллиардов, ваш обратный вызов будет выполнен через несколько секунд.

-
- -

В следующем примере, браузер будет ожидать две секунды перед тем как  выполнит анонимную функцию, тогда отобразит сообщение (живой пример, и исходный код):

- -
let myGreeting = setTimeout(function() {
-  alert('Hello, Mr. Universe!');
-}, 2000)
- -

Указанные вами функции не обязательно должны быть анонимными. Вы можете дать своей функции имя и даже определить ее где-нибудь еще и передать ссылку на функцию в setTimeout (). Следующие две версии фрагмента кода эквивалентны первой:

- -
// С именованной функцией
-let myGreeting = setTimeout(function sayHi() {
-  alert('Hello, Mr. Universe!');
-}, 2000)
-
-// С функцией определенной отдельно
-function sayHi() {
-  alert('Hello Mr. Universe!');
-}
-
-let myGreeting = setTimeout(sayHi, 2000);
- -

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

- -

setTimeout () возвращает значение идентификатора, которое можно использовать для ссылки на тайм-аут позже, например, когда вы хотите его остановить.

- -

Передача параметров в функцию setTimeout ()

- -

Любые параметры, которые вы хотите передать функции, выполняемой внутри setTimeout (), должны быть переданы ей как дополнительные параметры в конце списка.

- -

Например, вы можете реорганизовать предыдущую функцию, чтобы она передавала привет любому имени, переданному ей:

- -
function sayHi(who) {
-  alert(`Hello ${who}!`);
-}
- -

Теперь вы можете передать имя в вызов setTimeout () в качестве третьего параметра:

- -
let myGreeting = setTimeout(sayHi, 2000, 'Mr. Universe');
- -

Очистка таймаутов

- -

Наконец, если был создан тайм-аут, вы можете отменить его до истечения указанного времени, вызвав clearTimeout(), передав ему идентификатор вызова setTimeout() в качестве параметра. Итак, чтобы отменить указанный выше тайм-аут, вы должны сделать следующее:

- -
clearTimeout(myGreeting);
- -
-

Note: См.greeter-app.html для более полной демонстрации, которая позволяет вам указать имя для приветствия и отменить приветствие с помощью отдельной кнопки (см. исходный код).

-
- -

setInterval()

- -

setTimeout () отлично работает, когда вам нужно один раз запустить код по истечении заданного периода времени. Но что происходит, когда вам нужно запускать код снова и снова - например, в случае анимации?

- -

Здесь пригодится setInterval() . Работает очень похоже на setTimeout (), за исключением того, что функция, которую вы передаете в качестве первого параметра, выполняется повторно не менее чем за количество миллисекунд, заданных вторым параметром. Вы также можете передать любые параметры, необходимые для выполняемой функции, в качестве последующих параметров вызова setInterval ().

- -

Давайте посмотрим на пример. Следующая функция создает новый объект Date(), с помощью toLocaleTimeString() извлекает из него строку с временем и отображает ее в пользовательском интерфейсе. Затем он запускает функцию один раз в секунду с помощью setInterval(), создавая эффект цифровых часов, которые обновляются раз в секунду ( реальный пример, и исходный код):

- -
function displayTime() {
-   let date = new Date();
-   let time = date.toLocaleTimeString();
-   document.getElementById('demo').textContent = time;
-}
-
-const createClock = setInterval(displayTime, 1000);
- -

Как и setTimeout (), setInterval () возвращает определенное значение, которое вы можете использовать позже, когда вам нужно очистить интервал.

- -

Очистка интервала

- -

setInterval () выполняет задачу постоянно. setInterval () продолжает выполнять задачу вечно, если вы что-то с ней не сделаете. Возможно, вам понадобится способ остановить такие задачи, иначе вы можете получить ошибки, если браузер не сможет выполнить какие-либо другие версии задачи или если анимация, обрабатываемая задачей, завершилась. Вы можете сделать это так же, как останавливаете timeouts - передавая идентификатор, возвращаемый вызовом setInterval (), в функцию clearInterval ():

- -
const myInterval = setInterval(myFunction, 2000);
-
-clearInterval(myInterval);
- -

Активное обучение: Создание собственного секундомера!

- -

Учитывая все вышесказанное, у нас есть для вас задача. Возьмите копию нашего примера setInterval-clock.html , и измените ее так, чтобы создать свой собственный простой секундомер.

- -

Вам нужно отображать время, как и раньше, но в этом примере вам нужно:

- - - -

Несколько подсказок для вас:

- - - -
-

Note: Если вы застряли, вы можете увидеть нашу версию (см. также исходный код ).

-
- -

Что нужно помнить о setTimeout () и setInterval ()

- -

При работе с setTimeout () и setInterval () следует помнить о нескольких вещах. Давайте рассмотрим их.

- -

Рекурсивые таймауты

- -

Есть еще один способ использования setTimeout (): вы можете вызвать его рекурсивно для повторного запуска одного и того же кода вместо использования setInterval ().

- -

В приведенном ниже примере используется рекурсивный setTimeout () для запуска переданной функции каждые 100 миллисекунд:

- -
let i = 1;
-
-setTimeout(function run() {
-  console.log(i);
-  i++;
-  setTimeout(run, 100);
-}, 100);
- -

Сравните приведенный выше пример со следующим - здесь используется setInterval () для достижения того же эффекта:

- -
let i = 1;
-
-setInterval(function run() {
-  console.log(i);
-  i++
-}, 100);
- -

Чем рекурсивный setTimeout () отличается от setInterval () ?

- -

Разница между двумя версиями приведенного выше кода невелика.

- - - -

Когда ваш код потенциально может занять больше времени, чем назначенный вами интервал времени, лучше использовать рекурсивный setTimeout () - это сохранит постоянный временной интервал между выполнениями независимо от того, сколько времени потребуется для выполнения кода, и вы избежите ошибок.

- -

Немедленные таймауты

- -

Использование 0 в качестве значения для setTimeout () позволяет планировать выполнение указанной функции обратного вызова как можно скорее, но только после того, как будет запущен основной поток кода.

- -

Например, код приведенный ниже (рабочий код) выводит alert содержащий "Hello", затем alert содержащий "World" как только вы нажмете ОК в первом alert.

- -
setTimeout(function() {
-  alert('World');
-}, 0);
-
-alert('Hello');
- -

Это может быть полезно в тех случаях, когда вы хотите установить блок кода для запуска, как только весь основной поток завершит работу - поместите его в цикл событий async, чтобы он запускался сразу после этого.

- -

Очистка с помощью clearTimeout() или clearInterval()

- -

clearTimeout () и clearInterval () используют один и тот же список записей для очистки. Интересно, что это означает, что вы можете использовать любой метод для очистки setTimeout () или setInterval ().

- -

Для согласованности следует использовать clearTimeout () для очистки записей setTimeout () и clearInterval () для очистки записей setInterval (). Это поможет избежать путаницы.

- -

requestAnimationFrame()

- -

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

- -

Он был создан в ответ на проблемы с setInterval (), который, например, не работает с частотой кадров, оптимизированной для устройства, иногда пропускает кадры, продолжает работать, даже если вкладка не является активной вкладкой или анимация прокручивается со страницы и т. д.(Читай об этом больше в CreativeJS.)

- -
-

Note: Вы можете найти примеры использования requestAnimationFrame() в этом курсе — например в  Рисование графики, and Практика построения объектов.

-
- -

Метод принимает в качестве аргумента обратный вызов, который должен быть вызван перед перерисовкой. Это общий шаблон, в котором он используется:

- -
function draw() {
-   // Drawing code goes here
-   requestAnimationFrame(draw);
-}
-
-draw();
- -

Идея состоит в том, чтобы определить функцию, в которой ваша анимация обновляется (например, ваши спрайты перемещаются, счет обновляется, данные обновляются или что-то еще). Затем вы вызываете его, чтобы начать процесс. В конце функционального блока вы вызываете requestAnimationFrame () со ссылкой на функцию, переданной в качестве параметра, и это дает браузеру указание вызвать функцию снова при следующей перерисовке дисплея. Затем он выполняется непрерывно, поскольку код рекурсивно вызывает requestAnimationFrame ().

- -
-

Note: Если вы хотите выполнить простое постоянное анимирование DOM , CSS Анимация вероятно будет быстрее. Она высисляется непосредственно внутренним кодом браузера, а не JavaScript.

- -

Однако, если вы делаете что-то более сложное, включающее объекты, которые не доступны напрямую в the DOM (такие как 2D Canvas API или WebGL ), requestAnimationFrame() предпочтительный вариант в большинстве случаев.

-
- -

Как быстро работает ваша анимация?

- -

Плавность анимации напрямую зависит от частоты кадров анимации и измеряется в кадрах в секунду (fps). Чем выше это число, тем плавнее будет выглядеть ваша анимация до точки.

- -

Поскольку большинство экранов имеют частоту обновления 60 Гц, максимальная частота кадров, к которой вы можете стремиться, составляет 60 кадров в секунду (FPS) при работе с веб-браузерами. Однако большее количество кадров означает больше обработки, которая часто может вызывать заикание и пропуски, также известные как пропадание кадров или заедание.

- -

Если у вас есть монитор с частотой обновления 60 Гц и вы хотите достичь 60 кадров в секунду, у вас есть около 16,7 миллисекунд (1000/60) для выполнения кода анимации для рендеринга каждого кадра. Это напоминание о том, что вам нужно помнить об объеме кода, который вы пытаетесь запустить во время каждого прохождения цикла анимации.

- -

requestAnimationFrame () всегда пытается приблизиться к этому волшебному значению 60 FPS, насколько это возможно. Иногда это невозможно - если у вас действительно сложная анимация и вы запускаете ее на медленном компьютере, частота кадров будет меньше. Во всех случаях requestAnimationFrame () всегда будет делать все возможное с тем, что у него есть.

- -

Чем отличается requestAnimationFrame() от setInterval() and setTimeout()?

- -

Давайте поговорим еще немного о том, чем метод requestAnimationFrame () отличается от других методов, используемых ранее. Глядя на наш код сверху:

- -
function draw() {
-   // Drawing code goes here
-   requestAnimationFrame(draw);
-}
-
-draw();
- -

Такой же код с использованием setInterval():

- -
function draw() {
-   // Drawing code goes here
-}
-
-setInterval(draw, 17);
- -

Как мы уже говорили ранее, вы не указываете временной интервал для requestAnimationFrame (). Просто он работает максимально быстро и плавно в текущих условиях. Браузер также не тратит время на запуск, если по какой-то причине анимация выходит за пределы экрана и т. д.

- -

setInterval (), с другой стороны, требует указания интервала. Мы пришли к нашему окончательному значению 17 по формуле 1000 миллисекунд / 60 Гц, а затем округлили его в большую сторону. Округление - хорошая идея; если вы округлите в меньшую сторону, браузер может попытаться запустить анимацию со скоростью, превышающей 60 кадров в секунду, и в любом случае это не повлияет на плавность анимации. Как мы уже говорили, стандартная частота обновления - 60 Гц.

- -

В том числе временная метка

- -

Фактическому обратному вызову, переданному в функцию requestAnimationFrame (), также может быть задан параметр: значение отметки времени, которое представляет время с момента начала работы requestAnimationFrame ().

- -

Это полезно, поскольку позволяет запускать вещи в определенное время и в постоянном темпе, независимо от того, насколько быстрым или медленным может быть ваше устройство. Общий шаблон, который вы бы использовали, выглядит примерно так:

- -
let startTime = null;
-
-function draw(timestamp) {
-    if (!startTime) {
-      startTime = timestamp;
-    }
-
-   currentTime = timestamp - startTime;
-
-   // Do something based on current time
-
-   requestAnimationFrame(draw);
-}
-
-draw();
- -

Поддержка браузерами

- -

requestAnimationFrame () поддерживается в более поздних версиях браузеров, чем setInterval () / setTimeout (). Интересно, что он доступен в Internet Explorer 10 и выше.

- -

Итак, если вам не тербуется поддержка старых версий IE, нет особых причин не использовать requestAnimationFrame().

- -

Простой пример

- -

Хватит теории! Давайте выполним упражнение с использованием requestAnimationFrame() . Создадим простую анимацию "spinner animation"—вы могли ее видеть в приложениях когда происходят задержки при ответе с сервера и т.п..

- -
-

Note: Для такой простой анимации, вам следовало бы использовать CSS . Однако такой вид анимации очень полезен для демонстрации requestAnimationFrame() , вы скорее всего будете использовать этот метод когда делаете что-то более сложное, например обновление отображения игры в каждом кадре.

-
- -
    -
  1. -

    Возьмите базовый HTML шаблон (такой как этот).

    -
  2. -
  3. -

    Поместите пустой  {{htmlelement("div")}} елемент внутри элемента {{htmlelement("body")}}, затем добавьте внутрь символ ↻ . Этот символ будет действовать как spinner в нашем примере.

    -
  4. -
  5. -

    Применитеpply следующий CSS к HTML шаблону (любым предпочитаемым способом). Он установ красный фон на странице, высоту <body> равную 100% высоты {{htmlelement("html")}} , и центрирует <div> внутри <body>, по горизонтали и вертикали.

    - -
    html {
    -  background-color: white;
    -  height: 100%;
    -}
    -
    -body {
    -  height: inherit;
    -  background-color: red;
    -  margin: 0;
    -  display: flex;
    -  justify-content: center;
    -  align-items: center;
    -}
    -
    -div {
    -  display: inline-block;
    -  font-size: 10rem;
    -}
    -
  6. -
  7. -

    Разместите  {{htmlelement("script")}} элемент перед </body> .

    -
  8. -
  9. -

    Разместите следующий JavaScript код в  <script> . Здесь вы сохраняете ссылку на <div> внутри, устанавливаете дяпеременной rotateCount значение 0, устанавливаете неинициализированную переменную, которая позже будет использоваться для хранения ссылки на вызов requestAnimationFrame(), и устанавливаете для переменной startTime значение null, которая будет позже использоваться для хранения времени начала requestAnimationFrame().

    - -
    const spinner = document.querySelector('div');
    -let rotateCount = 0;
    -let startTime = null;
    -let rAF;
    -
    -
  10. -
  11. -

    Под предыдущим кодом вставьте функцию draw() соторая будет использоваться для хранения нашешо кода анимации, который включает параметр timestamp :

    - -
    function draw(timestamp) {
    -
    -}
    -
  12. -
  13. -

    Внутри draw () добавьте следующие строки. Они определят время начала, если оно еще не определено (это произойдет только на первой итерации цикла), и установят для параметра rotateCount значение для поворота счетчика (текущая временная метка, возьмите начальную временную метку, разделенную на три, чтобы замедлиться):

    - -
      if (!startTime) {
    -   startTime = timestamp;
    -  }
    -
    -  rotateCount = (timestamp - startTime) / 3;
    -
    -
  14. -
  15. -

    Под предыдущей строкой внутри draw () добавьте следующий блок - он проверяет, превышает ли значение rotateCount 359 (например, 360, полный круг). Если это так, он устанавливает значение по модулю 360 (то есть остаток, оставшийся после деления значения на 360), поэтому круговая анимация может продолжаться непрерывно с разумным низким значением. Обратите внимание, что это не является строго необходимым, но легче работать со значениями от 0 до 359 градусов, чем со значениями типа «128000 градусов».

    - -
    if (rotateCount > 359) {
    -  rotateCount %= 360;
    -}
    -
  16. -
  17. Затем, под предыдущим блоком, добавьте следующую строку, чтобы вращать spinner: -
    spinner.style.transform = `rotate(${rotateCount}deg)`;
    -
  18. -
  19. -

    В самом низу внутри функции draw () вставьте следующую строку. Это ключ ко всей операции - вы устанавливаете для переменной, определенной ранее, активный вызов requestAnimation (), который принимает функцию draw () в качестве своего параметра. Это запускает анимацию, постоянно выполняя функцию draw () со скоростью, близкой к 60 FPS.

    - -
    rAF = requestAnimationFrame(draw);
    -
  20. -
  21. -

    Ниже, вызовите функцию draw() для запуска анимации.

    - -
    draw();
    -
  22. -
- -
-

Note: Вы можете посмотреть рабочий образец на GitHub. ( исходный код.)

-
- -

Очbстка вызова  requestAnimationFrame() 

- -

Очистить вызов requestAnimationFrame () можно, вызвав соответствующий метод cancelAnimationFrame (). (Обратите внимание, что имя функции начинается с «cancel», а не «clear», как у методов «set ...».)

- -

Просто передайте ему значение, возвращаемое вызовом requestAnimationFrame () для отмены, которое вы сохранили в переменной rAF:

- -
cancelAnimationFrame(rAF);
- -

Активное обучение: запуск и остановка нашей анимации

- -

В этом упражнении мы хотели бы, чтобы вы протестировали метод cancelAnimationFrame (), взяв наш предыдущий пример и обновив его, добавив прослушиватель событий для запуска и остановки счетчика при щелчке мышью в любом месте страницы.

- -

Подсказки:

- - - -
-

Note: Для начала попробуйте сами; если вы действительно застряли, посмотрите наш живой пример и исходный код.

-
- -

Регулировка анимации requestAnimationFrame() 

- -

Одним из ограничений requestAnimationFrame () является то, что вы не можете выбирать частоту кадров. В большинстве случаев это не проблема, так как обычно вы хотите, чтобы ваша анимация работала как можно плавнее. Но как насчет того, чтобы создать олдскульную 8-битную анимацию?

- -

Это было проблемой, например в анимации ходьбы, вдохновленной островом обезьян, из статьи Drawing Graphics:

- -

{{EmbedGHLiveSample("learning-area/javascript/apis/drawing-graphics/loops_animation/7_canvas_walking_animation.html", '100%', 260)}}

- -

В этом примере вы должны анимировать как положение персонажа на экране, так и отображаемый спрайт. В анимации спрайта всего 6 кадров. Если бы вы показывали разные кадры спрайта для каждого кадра, отображаемого на экране, с помощью requestAnimationFrame (), Guybrush двигал бы конечностями слишком быстро, и анимация выглядела бы нелепо. Следовательно, в этом примере регулируется скорость, с которой спрайт циклически повторяет свои кадры, используя следующий код:

- -
if (posX % 13 === 0) {
-  if (sprite === 5) {
-    sprite = 0;
-  } else {
-    sprite++;
-  }
-}
- -

Таким образом, код циклически повторяет спрайт только один раз каждые 13 кадров анимации.

- -

... Фактически, это примерно каждые 6,5 кадров, поскольку мы обновляем posX (положение персонажа на экране) на два кадра:

- -
if (posX > width/2) {
-  newStartPos = -( (width/2) + 102 );
-  posX = Math.ceil(newStartPos / 13) * 13;
-  console.log(posX);
-} else {
-  posX += 2;
-}
- -

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

- -

Метод, который вы используете для регулирования анимации, будет зависеть от вашего конкретного кода. Например, в предыдущем примере счетчика вы могли заставить его двигаться медленнее, увеличивая rotateCount только на единицу в каждом кадре вместо двух.

- -

Активное обучение: игра на реакцию

- -

В последнем разделе этой статьи вы создадите игру на реакцию для двух игроков. В игре будет два игрока, один из которых управляет игрой с помощью клавиши A, а другой - с помощью клавиши L.

- -

При нажатии кнопки «Start» счетчик, подобный тому, что мы видели ранее, отображается в течение случайного промежутка времени от 5 до 10 секунд. По истечении этого времени появится сообщение «PLAYERS GO !!» - как только это произойдет, первый игрок, который нажмет свою кнопку управления, выиграет игру.

- -

{{EmbedGHLiveSample("learning-area/javascript/asynchronous/loops-and-intervals/reaction-game.html", '100%', 500)}}

- -

Давайте поработаем над этим:

- -
    -
  1. -

    Прежде всего, скачайте стартовый файл. Он содержит законченную структуру HTML и стили CSS, что дает нам игровую доску, которая показывает информацию двух игроков (как показано выше), но с счетчиком и параграфом результатов, отображаемыми друг над другом. Вам нужно просто написать JavaScript код.

    -
  2. -
  3. -

    Внутри пустого элемента {{htmlelement("script")}} на вашей старнице, начните с добавления следующих строк кода, котороые определяют некотороые переменные и константы, которые вам понадобятся в дальнейшем:

    - -
    const spinner = document.querySelector('.spinner p');
    -const spinnerContainer = document.querySelector('.spinner');
    -let rotateCount = 0;
    -let startTime = null;
    -let rAF;
    -const btn = document.querySelector('button');
    -const result = document.querySelector('.result');
    - -

    В следующем порядке:

    - -
      -
    1. Ссылка на спиннер, чтобы вы могли его анимировать.
    2. -
    3. Ссылка на элемент {{htmlelement("div")}} содержащий спиннер, используемый для отображения и скрытия.
    4. -
    5. Счетчик поворотов. Он определяет, на сколько вы хотите показывать вращение спиннера на каждом кадре анимации.
    6. -
    7. Нулевое время начала. Это будет заполнено временем начала, когда счетчик начнет вращаться.
    8. -
    9. Неинициализировання переменная для последующего хранения вызова {{domxref("Window.requestAnimationFrame", "requestAnimationFrame()")}} который анимирует спиннер.
    10. -
    11. Ссылка на кнопку Start .
    12. -
    13. Ссылка на параграф результатов.
    14. -
    -
  4. -
  5. -

    Ниже добавьте следующую функцию. Она просто берет два числа и возвращает случайное число между ними. Это понадобится вам позже, чтобы сгенерировать случайный интервал ожидания.

    - -
    function random(min,max) {
    -  var num = Math.floor(Math.random()*(max-min)) + min;
    -  return num;
    -}
    -
  6. -
  7. -

    Затем добавьте функцию draw(), которая анимирует спиннер. Это очень похоже на версию из предыдущего примера простого счетчика:

    - -
    function draw(timestamp) {
    -  if(!startTime) {
    -   startTime = timestamp;
    -  }
    -
    -  rotateCount = (timestamp - startTime) / 3;
    -
    -  if(rotateCount > 359) {
    -    rotateCount %= 360;
    -  }
    -
    -  spinner.style.transform = 'rotate(' + rotateCount + 'deg)';
    -  rAF = requestAnimationFrame(draw);
    -}
    -
  8. -
  9. -

    Теперь пришло время настроить начальное состояние приложения при первой загрузке страницы. Добавьте следующие две строки, которые просто скрывают абзац результатов и контейнер счетчика с помощью display: none ;.

    - -
    result.style.display = 'none';
    -spinnerContainer.style.display = 'none';
    -
  10. -
  11. -

    Затем определите функцию reset (), которая возвращает приложение в исходное состояние, необходимое для повторного запуска игры после ее завершения. Добавьте в конец кода следующее:

    - -
    function reset() {
    -  btn.style.display = 'block';
    -  result.textContent = '';
    -  result.style.display = 'none';
    -}
    -
  12. -
  13. -

    Хорошо, хватит подготовки! Пришло время сделать игру доступной! Добавьте в свой код следующий блок. Функция start () вызывает draw (), чтобы запустить вращение спиннера и отобразить его в пользовательском интерфейсе, скрыть кнопку Start, чтобы вы не могли испортить игру, запустив ее несколько раз одновременно, и запускает вызов setTimeout (), который выполняется функция setEndgame () по прошествии случайного интервала от 5 до 10 секунд. Следующий блок также добавляет прослушиватель событий к вашей кнопке для запуска функции start () при ее нажатии.

    - -
    btn.addEventListener('click', start);
    -
    -function start() {
    -  draw();
    -  spinnerContainer.style.display = 'block';
    -  btn.style.display = 'none';
    -  setTimeout(setEndgame, random(5000,10000));
    -}
    - -
    -

    Note: Вы увидете, что этот пример вызывает setTimeout() без сохранения возвращаемого значения. (не  let myTimeout = setTimeout(functionName, interval).) 

    - -

    Это прекрасно работает, если вам не нужно очищать интервал / тайм-аут в любой момент. Если вы это сделаете, вам нужно будет сохранить возвращенный идентификатор!

    -
    - -

    Конечным результатом предыдущего кода является то, что при нажатии кнопки «Start» отображается спиннер, и игроки вынуждены ждать произвольное количество времени, прежде чем их попросят нажать их кнопку. Эта последняя часть обрабатывается функцией setEndgame (), которую вы определите позже.

    -
  14. -
  15. -

    Добавьте в свой код следующую функцию:

    - -
    function setEndgame() {
    -  cancelAnimationFrame(rAF);
    -  spinnerContainer.style.display = 'none';
    -  result.style.display = 'block';
    -  result.textContent = 'PLAYERS GO!!';
    -
    -  document.addEventListener('keydown', keyHandler);
    -
    -  function keyHandler(e) {
    -    let isOver = false;
    -    console.log(e.key);
    -
    -    if (e.key === "a") {
    -      result.textContent = 'Player 1 won!!';
    -      isOver = true;
    -    } else if (e.key === "l") {
    -      result.textContent = 'Player 2 won!!';
    -      isOver = true;
    -    }
    -
    -    if (isOver) {
    -      document.removeEventListener('keydown', keyHandler);
    -      setTimeout(reset, 5000);
    -    }
    -  };
    -}
    - -

    Выполните следующие инструкции:

    - -
      -
    1. Во-первых, отмените анимацию спиннера с помощью {{domxref("window.cancelAnimationFrame", "cancelAnimationFrame()")}} (всегда полезно очистить ненужные процессы), и скройте контейнер счетчика.
    2. -
    3. Затем, отобразите абзац с результатами и установите для его текстового содержимого значение "PLAYERS GO!!"  чтобы сообщить игрокам, что теперь они могут нажать свою кнопку, чтобы победить.
    4. -
    5. Прикрепите к документу прослушиватель событий keydown . При нажатии любой кнопки запускается функция keyHandler().
    6. -
    7. Внутри keyHandler(), код включает обьект события в качестве параметра (представленного e) — его свойство {{domxref("KeyboardEvent.key", "key")}} содержит только что нажатую клавишу, и вы можете использовать это для твета на определенные нажатия клавиш определенными действиями.
    8. -
    9. Установите для переменной isOver значение false, чтобы мы могли отслеживать, были ли нажаты правильные клавиши, чтобы игрок 1 или 2 выиграл. Мы не хотим, чтобы игра заканчивалась при нажатии неправильной клваиши.
    10. -
    11. Регистрация e.key в консоли, это полезный способ узнать значение различных клавиш, которые вы нажимаете.
    12. -
    13. Когда e.key принимает значение "a", отобразить сообщение о том, что Player 1 выиграл, а когда e.key это "l", отобразить сообщение о том, что Player 2 выиграл. (Note: Это будет работать только со строчными буквами a и l — если переданы прописные A или L , это считается другими клавишами!) Если была нажата одна из этих клавиш, установите для isOver значение true.
    14. -
    15. Только еслиf isOver равно true, удалите прослушиватель событий keydown с помощью {{domxref("EventTarget.removeEventListener", "removeEventListener()")}} чтобы после того, как произошло выигрышное нажатие, больше не было возможности ввода с клавиатуры, чтобы испортить финальный результат игры. Вы также используете setTimeout() для вызова reset() через 5 секунд — как обьяснялось ранее, эта функция сбрасывает игру обратно в исходное состояние, чтобы можно было начать новую игру.
    16. -
    -
  16. -
- -

Вот и все - вы справились!

- -
-

Note: Если вы где то застряли, взгляните на наша версия игры (см. также исходный код ).

-
- -

Заключение

- -

Вот и все — все основы асинхронных циклов и интервалов рассмотрены в статье. Вы найдете эти методы полезными во многих ситуациях, но постарайтесь не злоупотреблять ими! Поскольку они по-прежнему выполняются в основном потоке, тяжелые и интенсивные обратные вызовы (особенно те, которые управляют DOM) могут действительно замедлить страницу, если вы не будете осторожныl.

- -

{{PreviousMenuNext("Learn/JavaScript/Asynchronous/Introducing", "Learn/JavaScript/Asynchronous/Promises", "Learn/JavaScript/Asynchronous")}}

- -

В этом модуле

- - - -
-
-
diff --git a/files/ru/learn/javascript/building_blocks/events/index.html b/files/ru/learn/javascript/building_blocks/events/index.html new file mode 100644 index 0000000000..db13cec676 --- /dev/null +++ b/files/ru/learn/javascript/building_blocks/events/index.html @@ -0,0 +1,606 @@ +--- +title: Введение в события +slug: Learn/JavaScript/Building_blocks/События +tags: + - Изучение + - Обработчик событий + - Руководство + - события +translation_of: Learn/JavaScript/Building_blocks/Events +--- +
{{LearnSidebar}}
+ +
{{PreviousMenuNext("Learn/JavaScript/Building_blocks/Return_values","Learn/JavaScript/Building_blocks/Image_gallery", "Learn/JavaScript/Building_blocks")}}
+ +

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

+ + + + + + + + + + + + +
Предпосылки:Базовая компьютерная грамотность, базовое понимание HTML и CSS, Первые шаги в JavaScript.
Задача:Понять фундаментальную теорию событий, как они работают в браузерах и как события могут различаться в разных средах программирования.
+ +

Серия удачных событий

+ +

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

+ +

+ +

В Web события запускаются внутри окна браузера и, как правило, прикрепляются к конкретному элементу, который в нем находится. Это может быть один элемент, набор элементов, документ HTML, загруженный на текущей вкладке, или все окно браузера. Существует множество различных видов событий, которые могут произойти, например:

+ + + +

Подробнее о событиях можно посмотреть в Справочнике по событиям.

+ +

Каждое доступное событие имеет обработчик событий  блок кода (обычно это функция JavaScript, вводимая вами в качестве разработчика), который будет запускаться при срабатывании события. Когда такой блок кода определен на запуск в ответ на возникновение события, мы говорим, что мы регистрируем обработчик событий. Обратите внимание, что обработчики событий иногда называют прослушивателями событий (event listeners). Они в значительной степени взаимозаменяемы для наших целей, хотя, строго говоря, они работают вместе. Прослушиватель отслеживает событие, а обработчик — это код, который запускается в ответ на событие.

+ +
+

Примечание: Важно отметить, что веб-события не являются частью основного языка JavaScript. Они определены как часть JavaScript-API, встроенных в браузер.

+
+ +

Простой пример

+ +

Рассмотрим простой пример. Вы уже видели события и обработчики событий во многих примерах в этом курсе, но давайте повторим для закрепления информации. В этом примере у нас есть кнопка {{htmlelement ("button")}}, при нажатии которой цвет фона изменяется случайным образом:

+ +
<button>Change color</button>
+ + + +

JavaScript выглядит так:

+ +
const btn = document.querySelector('button');
+
+function random(number) {
+  return Math.floor(Math.random() * (number+1));
+}
+
+btn.onclick = function() {
+  const rndCol = 'rgb(' + random(255) + ',' + random(255) + ',' + random(255) + ')';
+  document.body.style.backgroundColor = rndCol;
+}
+ +

В этом коде мы сохраняем ссылку на кнопку внутри переменной btn типа const, используя функцию {{domxref ("Document.querySelector()")}}. Мы также определяем функцию, которая возвращает случайное число. Третья часть кода — обработчик события. Переменная btn указывает на элемент <button> — для этого типа объекта существуют возникающие при определенном взаимодействии с ним события, а значит, возможно использование обработчиков событий. Мы отслеживаем момент возникновения события при щелчке мышью, связывая свойство обработчика события onclick с анонимной функцией, генерирующей случайный цвет RGB и устанавливающей его в качестве цвета фона элемента <body>.

+ +

Этот код теперь будет запускаться всякий раз, когда возникает событие при нажатии на элемент <button> — всякий раз, когда пользователь щелкает по нему.

+ +

Пример вывода выглядит следующим образом:

+ +

{{ EmbedLiveSample('Простой_пример', '100%', 200, "") }}

+ +

События не только для веб-страниц

+ +

События, как понятие, относятся не только к JavaScript — большинство языков программирования имеют модель событий, способ работы которой часто отличается от модели в JavaScript. Фактически, даже модель событий в JavaScript для веб-страниц отличается от модели событий для просто JavaScript, поскольку используются они в разных средах.

+ +

Например, Node.js — очень популярная среда исполнения JavaScript, которая позволяет разработчикам использовать JavaScript для создания сетевых и серверных приложений. Модель событий Node.js основана на том, что существуют прослушиватели, отслеживающие события, и эмиттеры (передатчики), которые периодически генерируют события. В общем-то, это похоже на модель событий в JavaScript для веб-страниц, но код совсем другой. В этой модели используется функция on() для регистрации прослушивателей событий, и функция once() для регистрации прослушивателя событий, который отключается после первого срабтывания. Хорошим примером использования являются протоколы событий HTTP connect event docs.

+ +

Вы также можете использовать JavaScript для создания кросс-браузерных расширений — улучшения функциональности браузера с помощью технологии WebExtensions. В отличии от модели веб-событий здесь свойства прослушивателей событий пишутся в так называемом регистре CamelCase (например, onMessage, а не onmessage) и должны сочетаться с функцией addListener. См. runtime.onMessage page для примера.

+ +

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

+ +

Способы использования веб-событий

+ +

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

+ +

Свойства обработчика событий

+ +

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

+ +
const btn = document.querySelector('button');
+
+btn.onclick = function() {
+  var rndCol = 'rgb(' + random(255) + ',' + random(255) + ',' + random(255) + ')';
+  document.body.style.backgroundColor = rndCol;
+}
+ +

В данной ситауции свойство onclick — это свойство обработчика события. В принципе это обычное свойство кнопки как элемента (наравне с btn.textContent или btn.style), но оно относится к особому типу. Если вы установите его равным какому-нибудь коду, этот код будет запущен при возникновении события (при нажатии на кнопку).

+ +

Для получения того же результата, Вы также можете присвоить свойству обработчика имя уже описанной функции (как мы видели в статье Создайте свою функцию):

+ +
const btn = document.querySelector('button');
+
+function bgChange() {
+  const rndCol = 'rgb(' + random(255) + ',' + random(255) + ',' + random(255) + ')';
+  document.body.style.backgroundColor = rndCol;
+}
+
+btn.onclick = bgChange;
+ +

Давайте теперь поэкспериментируем с другими свойствами обработчика событий.

+ +

Создайте локальную копию файла random-color-eventhandlerproperty.html и откройте ее в своем браузере. Это всего лишь копия простого примера про случайные цвета, который мы уже разобрали в этой статье. Теперь попробуйте изменить btn.onclick на следующие значения и понаблюдайте за результатами:

+ + + +

Некоторые события очень общие и доступны практически в любом месте (например, обработчик onclick может быть зарегистрирован практически для любого элемента), тогда как некоторые из них более конкретны и полезны только в определенных ситуациях (например, имеет смысл использовать onplay только для определенных элементов, таких как {{htmlelement ("video")}}).

+ +

Встроенные обработчики событий - не используйте их

+ +

Самый ранний из введенных в сеть Web методов регистрации обработчиков событий базируется на HTML атрибутах (встроенные обработчики событий):

+ +
<button onclick="bgChange()">Press me</button>
+
+ +
function bgChange() {
+  const rndCol = 'rgb(' + random(255) + ',' + random(255) + ',' + random(255) + ')';
+  document.body.style.backgroundColor = rndCol;
+}
+ +
+

Примечание: Вы можете найти полный исходник кода из этого примера на GitHub (также взгляните на его выполнение).

+
+ +

Значение атрибута —  это буквально код JavaScript, который вы хотите запустить при возникновении события. В приведенном выше примере вызывается функция, определенная внутри элемента {{htmlelement ("script")}} на той же странице, но вы также можете вставить JavaScript непосредственно внутри атрибута, например:

+ +
<button onclick="alert('Hello, this is my old-fashioned event handler!');">Press me</button>
+ +

Для многих свойств обработчика событий существуют эквиваленты в виде атрибутов HTML. Однако, не рекомендуется их использовать — это считается плохой практикой. Использование атрибутов для регистрации обработчика событий кажется простым и быстрым методом, но такое описание обработчиков также скоро становится неудобным и неэффективным.

+ +

Более того, не рекомендуется смешивать HTML и JavaScript файлы, так как в дальнейшем такой код становится сложнее с точки зрения обработки (парсинга). Лучше держать весь JavaScript в одном месте. Также, если он находится в отдельном файле, вы можете применить его к нескольким документам HTML.

+ +

Даже при работе только в одном файле использование встроенных обработчиков не является хорошей идеей. Ладно, если у Вас одна кнопка, но что, если у вас их 100? Вам нужно добавить в файл 100 атрибутов; обслуживание такого кода очень быстро превратится в кошмар. С помощью JavaScript вы можете легко добавить функцию обработчика событий ко всем кнопкам на странице независимо от того, сколько их было.

+ +

Например:

+ +
const buttons = document.querySelectorAll('button');
+
+for (var i = 0; i < buttons.length; i++) {
+  buttons[i].onclick = bgChange;
+}
+ +

Обратите внимание, что для перебора всех элементов, которые содержит объект NodeList, можно воспользоваться встроенным методом forEach():

+ +
buttons.forEach(function(button) {
+  button.onclick = bgChange;
+});
+ +
+

Примечание: Разделение логики Вашей программы и Вашего контента также делает Ваш сайт более дружественным к поисковым системам.

+
+ +

Функции addEventListener() и removeEventListener()

+ +

Новый тип механизма событий определен в спецификации Document Object Model (DOM) Level 2 Events, которая предоставляет браузеру новую функцию — addEventListener(). Работает она аналогично свойствам обработчика событий, но синтаксис совсем другой. Наш пример со случайным цветом мог бы выглядеть и так:

+ +
var btn = document.querySelector('button');
+
+function bgChange() {
+  var rndCol = 'rgb(' + random(255) + ',' + random(255) + ',' + random(255) + ')';
+  document.body.style.backgroundColor = rndCol;
+}
+
+btn.addEventListener('click', bgChange);
+ +
+

Примечание: Вы можете найти исходный код из этого примера на GitHub (также взгляните на его выполнение).

+
+ +

Внутри функции addEventListener() мы указываем два параметра — имя события, для которого мы хотим зарегистрировать этот обработчик, и код, содержащий функцию обработчика, которую мы хотим запустить в ответ. Обратите внимание, что будет целесообразно поместить весь код внутри функции addEventListener() в анонимную функцию, например:

+ +
btn.addEventListener('click', function() {
+  var rndCol = 'rgb(' + random(255) + ',' + random(255) + ',' + random(255) + ')';
+  document.body.style.backgroundColor = rndCol;
+});
+ +

Этот механизм имеет некоторые преимущества по сравнению с более старыми механизмами, рассмотренными ранее. Например, существует аналогичная функция removeEventListener(), которая удаляет ранее добавленный прослушиватель. Это приведет к удалению набора слушателей в первом блоке кода в этом разделе:

+ +
btn.removeEventListener('click', bgChange);
+ +

Это не важно для простых небольших программ, но для более крупных и более сложных программ он может повысить эффективность очистки старых неиспользуемых обработчиков событий. Кроме того, это позволяет вам иметь одну и ту же кнопку, выполняющую различные действия в разных обстоятельствах — все, что вам нужно сделать, это добавить/удалить обработчики событий, если это необходимо.

+ +

Также, вы можете зарегистрировать несколько обработчиков для одного и того же прослушивателя. Следующие два обработчика не будут применяться:

+ +
myElement.onclick = functionA;
+myElement.onclick = functionB;
+ +

Поскольку вторая строка будет перезаписывать значение onclick, установленное первой. Однако, если:

+ +
myElement.addEventListener('click', functionA);
+myElement.addEventListener('click', functionB);
+ +

Обе функции будут выполняться при щелчке элемента.

+ +

Кроме того, в этом механизме событий имеется ряд других мощных функций и опций. Эта тема выходит за рамки данной статьи, но если вы хотите изучить подробнее, переходите по ссылкам: Метод Event​Target​.add​Event​Listener() и Метод Event​Target​.remove​Event​Listener().

+ +

Какой механизм мне использовать?

+ +

Из трех механизмов определенно не нужно использовать атрибуты событий HTML. Как упоминалось выше, это устаревшая и плохая практика.

+ +

Остальные два являются относительно взаимозаменяемыми, по крайней мере для простых целей

+ + + +

Основные преимущества третьего механизма заключаются в том, что при необходимости можно удалить код обработчика событий, используя removeEventListener(), и так же можно добавить несколько элементов-слушателей того же типа к элементам. Например, вы можете вызвать addEventListener('click', function() {...}) для элемента несколько раз, с разными функциями, указанными во втором аргументе. Это невозможно при использовании свойств обработчика событий, поскольку любые последующие попытки установить свойство будут перезаписывать более ранние, например:

+ +
element.onclick = function1;
+element.onclick = function2;
+etc.
+ +
+

Примечание: Если вам требуется поддержка браузеров старше Internet Explorer 8 в вашем проекте, вы можете столкнуться с трудностями, так как такие старые браузеры используют старые модели событий из более новых браузеров. Но не бойтесь, большинство библиотек JavaScript (например, jQuery) имеют встроенные функции, которые абстрагируют различия между браузерами. Не беспокойтесь об этом слишком много на этапе вашего учебного путешествия.

+
+ +

Другие концепции событий

+ +

Рассмотрим некоторые современные концепции, имеющие отношение к событиям. На данный момент не обязательно понимать их полностью, но предстывление о них поможет лучше понять некоторые модели кода, с которыми вы, вероятно, столкнетесь.

+ +

   Объекты событий

+ +

Иногда внутри функции обработчика событий вы можете увидеть параметр, заданный с таким именем, как event, evt или просто e. Называется он объектом события и он автоматически передается обработчикам событий для предоставления дополнительных функций и информации. Например, давайте немного перепишем наш прмер со случайным цветом:

+ +
function bgChange(e) {
+  var rndCol = 'rgb(' + random(255) + ',' + random(255) + ',' + random(255) + ')';
+  e.target.style.backgroundColor = rndCol;
+  console.log(e);
+}
+
+btn.addEventListener('click', bgChange);
+ +
+

Примечание: Вы можете найти исходник кода для этого примера на GitHub (также взгляните на его выполнение).

+
+ +

Итак в коде выше мы включаем объект события e в функцию, а в функции — настройку стиля фона для e.target, который является кнопкой. Свойство объекта события target всегда является ссылкой на элемент, с которым только что произошло событие. Поэтому в этом примере мы устанавливаем случайный цвет фона на кнопке, а не на странице.

+ +
+

Примечание: Вместо e/evt/event можно использовать любое имя для объекта события, которое затем можно использовать для ссылки на него в функции обработчика событий. e/evt/event чаще всего используются разработчиками, потому что они короткие и легко запоминаются. И хорошо придерживаться стандарта.

+
+ +

e.target применяют, когда нужно установить один и тот же обработчик событий на несколько элементов и, когда на них происходит событие, применить определенное действие к ним ко всем. Например, у вас может быть набор из 16 плиток, которые исчезают при нажатии. Полезно всегда иметь возможность просто указать, чтобы объект исчез, как e.target, вместо того, чтобы выбирать его более сложным способом. В следующем примере (см. исходный код на  useful-eventtarget.html,а как он работает можно посмотреть здесь), мы создаем 16 элементов {{htmlelement ("div")}} с использованием JavaScript. Затем мы выберем все из них, используя {{domxref ("document.querySelectorAll()")}}, и с помощью цикла for выберем каждый из них, добавив обработчик onclick к каждому так, чтобы случайный цвет применялся к каждому клику:

+ +
var divs = document.querySelectorAll('div');
+
+for (var i = 0; i < divs.length; i++) {
+  divs[i].onclick = function(e) {
+    e.target.style.backgroundColor = bgChange();
+  }
+}
+ +

Результат выглядит следующим образом (попробуйте щелкнуть по нему):

+ + + +

{{ EmbedLiveSample('Hidden_example', '100%', 400) }}

+ +

Большинство обработчиков событий, с которыми вы столкнулись, имеют только стандартный набор свойств и функций (методов), доступных для объекта события (см. {{domxref("Event")}} для ссылки на полный список). Однако некоторые более продвинутые обработчики добавляют специальные свойства, содержащие дополнительные данные, которые им необходимо выполнять. Например, Media Recorder API имеет событие, доступное для данных, которое срабатывает, когда записано какое-либо аудио или видео и доступно для выполнения чего-либо (например, для сохранения или воспроизведения). Соответствующий объект события ondataavailable handler имеет свойство данных, содержащее записанные аудио- или видеоданные, чтобы вы могли получить к нему доступ и что-то сделать с ним.

+ +

    Предотвращение поведения по умолчанию

+ +

Иногда бывают ситуации, когда нужно остановить событие, выполняющее то, что оно делает по умолчанию. Наиболее распространенным примером является веб-форма, например, пользовательская форма регистрации. Когда вы вводите данные и нажимаете кнопку отправки, естественное поведение заключается в том, что данные должны быть отправлены на указанную страницу на сервере для обработки, а браузер перенаправлется на страницу с сообщением об успехе (или остаться на той же странице, если другое не указано).

+ +

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

+ +

Простая форма HTML, в которой требуется ввести ваше имя и фамилию:

+ +
<form>
+  <div>
+    <label for="fname">Имя: </label>
+    <input id="fname" type="text">
+  </div>
+  <div>
+    <label for="lname">Фамилия: </label>
+    <input id="lname" type="text">
+  </div>
+  <div>
+     <input id="submit" type="submit">
+  </div>
+</form>
+<p></p>
+ + + +

В JavaScript мы реализуем очень простую проверку внутри обработчика события onsubmit (событие "отправить" запускается в форме, когда оно отправлено), который проверяет, пусты ли текстовые поля. Если они пусты, мы вызываем функцию preventDefault() объекта события, которая останавливает отправку формы, а затем выводит сообщение об ошибке в абзаце ниже нашей формы, чтобы сообщить пользователю, что не так:

+ +
var form = document.querySelector('form');
+var fname = document.getElementById('fname');
+var lname = document.getElementById('lname');
+var submit = document.getElementById('submit');
+var para = document.querySelector('p');
+
+form.onsubmit = function(e) {
+  if (fname.value === '' || lname.value === '') {
+    e.preventDefault();
+    para.textContent = 'Оба поля должны быть заполнены!';
+  }
+}
+ +

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

+ +

{{ EmbedLiveSample('Предотвращение_поведения_по_умолчанию', '100%', 140) }}

+ +
+

Примечание: чтобы увидеть исходный код, откройте preventdefault-validation.html (также запустите здесь).

+
+ +

Всплытие и перехват событий

+ +

Последним предметом для рассмотрения в этой теме является то, с чем вы не часто будете сталкиваться, но это может стать настоящей головной болью, если вы не поймете, как работает следующий механизм. Всплытие и перехват событий — два механизма, описывающих, что происходит, когда два обработчика одного и того же события активируются на одном элементе. Посмотрим на пример. Чтобы сделать это проще — откройте пример show-video-box.html в одной вкладке и исходный код в другой вкладке. Он также представлен ниже:

+ + + +

{{ EmbedLiveSample('Hidden_video_example', '100%', 500) }}

+ +

Это довольно простой пример, который показывает и скрывает {{htmlelement ("div")}} с элементом {{htmlelement ("video")}} внутри него:

+ +
<button>Display video</button>
+
+<div class="hidden">
+  <video>
+    <source src="rabbit320.mp4" type="video/mp4">
+    <source src="rabbit320.webm" type="video/webm">
+    <p>Your browser doesn't support HTML5 video. Here is a <a href="rabbit320.mp4">link to the video</a> instead.</p>
+  </video>
+</div>
+ +

При нажатии на кнопку {{htmlelement ("button")}}, изменяется атрибут класса элемента <div> с hidden на showing (CSS примера содержит эти два класса, которые размещают блок вне экрана и на экране соответственно):

+ +
div {
+        position: absolute;
+        top: 50%;
+        transform: translate(-50%,-50%);
+        ...
+      }
+.hidden {
+   left: -50%;
+  }
+.showing {
+   left: 50%;
+  }
+ +
var btn = document.querySelector('button');
+btn.onclick = function() {
+  videoBox.setAttribute('class', 'showing');
+}
+ +

Затем мы добавляем еще пару обработчиков событий onclick. Первый к <div>, а второй к <video>. Идея заключается в том, чтобы при щелчке по области <div> вне зоны видео поле снова скрылось, а при клике в области <video>  видео начало воспроизводиться.

+ +
var videoBox = document.querySelector('div');
+var video = document.querySelector('video');
+
+videoBox.onclick = function() {
+  videoBox.setAttribute('class', 'hidden');
+};
+
+video.onclick = function() {
+  video.play();
+};
+ +

Но есть проблема: когда вы нажимаете на видео, оно начинает воспроизводиться, но одновременно вызывает скрытие <div>. Это связано с тем, что видео находится внутри <div>, это часть его, поэтому нажатие на видео фактически запускает оба вышеуказанных обработчика событий.

+ +

Всплытие и перехват событий — концепция выполнения

+ +

Когда событие инициируется элементом, который имеет родительские элементы (например, {{htmlelement ("video")}} в нашем случае), современные браузеры выполняют две разные фазы —  фазу  захвата и фазу всплытия.

+ +

На стадии захвата происходит следующее:

+ + + +

На стадии всплытия происходит полная противоположность:

+ + + +

+ +

(Нажмите на изображение, чтобы увеличить диаграмму)

+ +

В современных браузерах по умолчанию все обработчики событий регистрируются в фазе всплытия. Итак, в нашем текущем примере, когда вы нажимаете видео, событие click вызывается из элемента <video> наружу, в элемент <html>. По пути:

+ + + +

Исправление проблемы с помощью stopPropagation()

+ +

Чтобы исправить это раздражающее поведение, стандартный объект события имеет функцию, называемую stopPropagation(), которая при вызове в обработчике событий объекта делает так, чтобы обработчик выполнялся, но событие не всплывало дальше по цепочке, поэтому не будут запускаться другие обработчики.

+ +

Поэтому мы можем исправить нашу текущую проблему, изменив вторую функцию-обработчик в предыдущем блоке кода:

+ +
video.onclick = function(e) {
+  e.stopPropagation();
+  video.play();
+};
+ +

Вы можете попробовать создать локальную копию show-video-box.html и попробовать его самостоятельно исправить или просмотреть исправленный результат в show-video-box-fixed.html (также см. исходный код здесь).

+ +
Примечание: Зачем беспокоиться как с захватом, так и с всплыванием? Что ж, в старые добрые времена, когда браузеры были менее совместимы, чем сейчас, Netscape использовал только захват событий, а Internet Explorer использовал только всплывающие события. Когда W3C решил попытаться стандартизировать поведение и достичь консенсуса, они в итоге получили эту систему, которая включала в себя и то, и другое, что реализовано в одном из современных браузеров.
+ +
+

Примечание: Как упоминалось выше, по умолчанию все обработчики событий регистрируются в фазе всплытия и это имеет смысл в большинстве случаев. Если вы действительно хотите зарегистрировать событие в фазе захвата, вы можете сделать это, зарегистрировав обработчик с помощью addEventListener() и установив для третьего дополнительного свойства значение true.

+
+ +

Делегирование события

+ +

Всплытие также позволяет нам использовать делегирование событий.  Если у какого-либо родительского элемента есть множество дочерних элементов, и вы хотите, чтобы определенный код выполнялся при щелчке (событии) на каждом из дочерних элементов, можно установить прослушиватель событий на родительском элементе и события, происходящие на дочерних элементах будут всплывать до их родителя. При этом не нужно устанавливать прослушивателя событий на каждом дочернем элементе.

+ +

Хорошим примером является серия элементов списка. Если вы хотите, чтобы каждый из них, например, отображал сообщение при нажатии, вы можете установить прослушиватель событий click для родительского элемента <ul> и он будет всплывать в элементах списка.

+ +

Эту концепцию объясняет в своем блоге Дэвид Уолш, где приводит несколько примеров. (см. How JavaScript Event Delegation Works.)

+ +

Вывод

+ +

Это все, что вам нужно знать о веб-событиях на этом этапе. Как уже упоминалось, события не являются частью основного JavaScript — они определены в веб-интерфейсах браузера (Web API).

+ +

Кроме того, важно понимать, что различные контексты, в которых используется JavaScript, обычно имеют разные модели событий — от веб-API до других областей, таких как браузерные WebExtensions и Node.js (серверный JavaScript). Может сейчас вы не особо в этом разбираетесь, но по мере изучения веб-разработки начнет приходить более ясное понимание тематики.

+ +

Если у вас возникли вопросы, попробуйте прочесть статью снова или обратитесь за помощью к нам.

+ +

См. также

+ + + +

{{PreviousMenuNext("Learn/JavaScript/Building_blocks/Return_values","Learn/JavaScript/Building_blocks/Image_gallery", "Learn/JavaScript/Building_blocks")}}

+ +

В этом модуле

+ + + +
+
+ +
+
diff --git "a/files/ru/learn/javascript/building_blocks/\321\201\320\276\320\261\321\213\321\202\320\270\321\217/index.html" "b/files/ru/learn/javascript/building_blocks/\321\201\320\276\320\261\321\213\321\202\320\270\321\217/index.html" deleted file mode 100644 index db13cec676..0000000000 --- "a/files/ru/learn/javascript/building_blocks/\321\201\320\276\320\261\321\213\321\202\320\270\321\217/index.html" +++ /dev/null @@ -1,606 +0,0 @@ ---- -title: Введение в события -slug: Learn/JavaScript/Building_blocks/События -tags: - - Изучение - - Обработчик событий - - Руководство - - события -translation_of: Learn/JavaScript/Building_blocks/Events ---- -
{{LearnSidebar}}
- -
{{PreviousMenuNext("Learn/JavaScript/Building_blocks/Return_values","Learn/JavaScript/Building_blocks/Image_gallery", "Learn/JavaScript/Building_blocks")}}
- -

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

- - - - - - - - - - - - -
Предпосылки:Базовая компьютерная грамотность, базовое понимание HTML и CSS, Первые шаги в JavaScript.
Задача:Понять фундаментальную теорию событий, как они работают в браузерах и как события могут различаться в разных средах программирования.
- -

Серия удачных событий

- -

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

- -

- -

В Web события запускаются внутри окна браузера и, как правило, прикрепляются к конкретному элементу, который в нем находится. Это может быть один элемент, набор элементов, документ HTML, загруженный на текущей вкладке, или все окно браузера. Существует множество различных видов событий, которые могут произойти, например:

- - - -

Подробнее о событиях можно посмотреть в Справочнике по событиям.

- -

Каждое доступное событие имеет обработчик событий  блок кода (обычно это функция JavaScript, вводимая вами в качестве разработчика), который будет запускаться при срабатывании события. Когда такой блок кода определен на запуск в ответ на возникновение события, мы говорим, что мы регистрируем обработчик событий. Обратите внимание, что обработчики событий иногда называют прослушивателями событий (event listeners). Они в значительной степени взаимозаменяемы для наших целей, хотя, строго говоря, они работают вместе. Прослушиватель отслеживает событие, а обработчик — это код, который запускается в ответ на событие.

- -
-

Примечание: Важно отметить, что веб-события не являются частью основного языка JavaScript. Они определены как часть JavaScript-API, встроенных в браузер.

-
- -

Простой пример

- -

Рассмотрим простой пример. Вы уже видели события и обработчики событий во многих примерах в этом курсе, но давайте повторим для закрепления информации. В этом примере у нас есть кнопка {{htmlelement ("button")}}, при нажатии которой цвет фона изменяется случайным образом:

- -
<button>Change color</button>
- - - -

JavaScript выглядит так:

- -
const btn = document.querySelector('button');
-
-function random(number) {
-  return Math.floor(Math.random() * (number+1));
-}
-
-btn.onclick = function() {
-  const rndCol = 'rgb(' + random(255) + ',' + random(255) + ',' + random(255) + ')';
-  document.body.style.backgroundColor = rndCol;
-}
- -

В этом коде мы сохраняем ссылку на кнопку внутри переменной btn типа const, используя функцию {{domxref ("Document.querySelector()")}}. Мы также определяем функцию, которая возвращает случайное число. Третья часть кода — обработчик события. Переменная btn указывает на элемент <button> — для этого типа объекта существуют возникающие при определенном взаимодействии с ним события, а значит, возможно использование обработчиков событий. Мы отслеживаем момент возникновения события при щелчке мышью, связывая свойство обработчика события onclick с анонимной функцией, генерирующей случайный цвет RGB и устанавливающей его в качестве цвета фона элемента <body>.

- -

Этот код теперь будет запускаться всякий раз, когда возникает событие при нажатии на элемент <button> — всякий раз, когда пользователь щелкает по нему.

- -

Пример вывода выглядит следующим образом:

- -

{{ EmbedLiveSample('Простой_пример', '100%', 200, "") }}

- -

События не только для веб-страниц

- -

События, как понятие, относятся не только к JavaScript — большинство языков программирования имеют модель событий, способ работы которой часто отличается от модели в JavaScript. Фактически, даже модель событий в JavaScript для веб-страниц отличается от модели событий для просто JavaScript, поскольку используются они в разных средах.

- -

Например, Node.js — очень популярная среда исполнения JavaScript, которая позволяет разработчикам использовать JavaScript для создания сетевых и серверных приложений. Модель событий Node.js основана на том, что существуют прослушиватели, отслеживающие события, и эмиттеры (передатчики), которые периодически генерируют события. В общем-то, это похоже на модель событий в JavaScript для веб-страниц, но код совсем другой. В этой модели используется функция on() для регистрации прослушивателей событий, и функция once() для регистрации прослушивателя событий, который отключается после первого срабтывания. Хорошим примером использования являются протоколы событий HTTP connect event docs.

- -

Вы также можете использовать JavaScript для создания кросс-браузерных расширений — улучшения функциональности браузера с помощью технологии WebExtensions. В отличии от модели веб-событий здесь свойства прослушивателей событий пишутся в так называемом регистре CamelCase (например, onMessage, а не onmessage) и должны сочетаться с функцией addListener. См. runtime.onMessage page для примера.

- -

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

- -

Способы использования веб-событий

- -

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

- -

Свойства обработчика событий

- -

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

- -
const btn = document.querySelector('button');
-
-btn.onclick = function() {
-  var rndCol = 'rgb(' + random(255) + ',' + random(255) + ',' + random(255) + ')';
-  document.body.style.backgroundColor = rndCol;
-}
- -

В данной ситауции свойство onclick — это свойство обработчика события. В принципе это обычное свойство кнопки как элемента (наравне с btn.textContent или btn.style), но оно относится к особому типу. Если вы установите его равным какому-нибудь коду, этот код будет запущен при возникновении события (при нажатии на кнопку).

- -

Для получения того же результата, Вы также можете присвоить свойству обработчика имя уже описанной функции (как мы видели в статье Создайте свою функцию):

- -
const btn = document.querySelector('button');
-
-function bgChange() {
-  const rndCol = 'rgb(' + random(255) + ',' + random(255) + ',' + random(255) + ')';
-  document.body.style.backgroundColor = rndCol;
-}
-
-btn.onclick = bgChange;
- -

Давайте теперь поэкспериментируем с другими свойствами обработчика событий.

- -

Создайте локальную копию файла random-color-eventhandlerproperty.html и откройте ее в своем браузере. Это всего лишь копия простого примера про случайные цвета, который мы уже разобрали в этой статье. Теперь попробуйте изменить btn.onclick на следующие значения и понаблюдайте за результатами:

- - - -

Некоторые события очень общие и доступны практически в любом месте (например, обработчик onclick может быть зарегистрирован практически для любого элемента), тогда как некоторые из них более конкретны и полезны только в определенных ситуациях (например, имеет смысл использовать onplay только для определенных элементов, таких как {{htmlelement ("video")}}).

- -

Встроенные обработчики событий - не используйте их

- -

Самый ранний из введенных в сеть Web методов регистрации обработчиков событий базируется на HTML атрибутах (встроенные обработчики событий):

- -
<button onclick="bgChange()">Press me</button>
-
- -
function bgChange() {
-  const rndCol = 'rgb(' + random(255) + ',' + random(255) + ',' + random(255) + ')';
-  document.body.style.backgroundColor = rndCol;
-}
- -
-

Примечание: Вы можете найти полный исходник кода из этого примера на GitHub (также взгляните на его выполнение).

-
- -

Значение атрибута —  это буквально код JavaScript, который вы хотите запустить при возникновении события. В приведенном выше примере вызывается функция, определенная внутри элемента {{htmlelement ("script")}} на той же странице, но вы также можете вставить JavaScript непосредственно внутри атрибута, например:

- -
<button onclick="alert('Hello, this is my old-fashioned event handler!');">Press me</button>
- -

Для многих свойств обработчика событий существуют эквиваленты в виде атрибутов HTML. Однако, не рекомендуется их использовать — это считается плохой практикой. Использование атрибутов для регистрации обработчика событий кажется простым и быстрым методом, но такое описание обработчиков также скоро становится неудобным и неэффективным.

- -

Более того, не рекомендуется смешивать HTML и JavaScript файлы, так как в дальнейшем такой код становится сложнее с точки зрения обработки (парсинга). Лучше держать весь JavaScript в одном месте. Также, если он находится в отдельном файле, вы можете применить его к нескольким документам HTML.

- -

Даже при работе только в одном файле использование встроенных обработчиков не является хорошей идеей. Ладно, если у Вас одна кнопка, но что, если у вас их 100? Вам нужно добавить в файл 100 атрибутов; обслуживание такого кода очень быстро превратится в кошмар. С помощью JavaScript вы можете легко добавить функцию обработчика событий ко всем кнопкам на странице независимо от того, сколько их было.

- -

Например:

- -
const buttons = document.querySelectorAll('button');
-
-for (var i = 0; i < buttons.length; i++) {
-  buttons[i].onclick = bgChange;
-}
- -

Обратите внимание, что для перебора всех элементов, которые содержит объект NodeList, можно воспользоваться встроенным методом forEach():

- -
buttons.forEach(function(button) {
-  button.onclick = bgChange;
-});
- -
-

Примечание: Разделение логики Вашей программы и Вашего контента также делает Ваш сайт более дружественным к поисковым системам.

-
- -

Функции addEventListener() и removeEventListener()

- -

Новый тип механизма событий определен в спецификации Document Object Model (DOM) Level 2 Events, которая предоставляет браузеру новую функцию — addEventListener(). Работает она аналогично свойствам обработчика событий, но синтаксис совсем другой. Наш пример со случайным цветом мог бы выглядеть и так:

- -
var btn = document.querySelector('button');
-
-function bgChange() {
-  var rndCol = 'rgb(' + random(255) + ',' + random(255) + ',' + random(255) + ')';
-  document.body.style.backgroundColor = rndCol;
-}
-
-btn.addEventListener('click', bgChange);
- -
-

Примечание: Вы можете найти исходный код из этого примера на GitHub (также взгляните на его выполнение).

-
- -

Внутри функции addEventListener() мы указываем два параметра — имя события, для которого мы хотим зарегистрировать этот обработчик, и код, содержащий функцию обработчика, которую мы хотим запустить в ответ. Обратите внимание, что будет целесообразно поместить весь код внутри функции addEventListener() в анонимную функцию, например:

- -
btn.addEventListener('click', function() {
-  var rndCol = 'rgb(' + random(255) + ',' + random(255) + ',' + random(255) + ')';
-  document.body.style.backgroundColor = rndCol;
-});
- -

Этот механизм имеет некоторые преимущества по сравнению с более старыми механизмами, рассмотренными ранее. Например, существует аналогичная функция removeEventListener(), которая удаляет ранее добавленный прослушиватель. Это приведет к удалению набора слушателей в первом блоке кода в этом разделе:

- -
btn.removeEventListener('click', bgChange);
- -

Это не важно для простых небольших программ, но для более крупных и более сложных программ он может повысить эффективность очистки старых неиспользуемых обработчиков событий. Кроме того, это позволяет вам иметь одну и ту же кнопку, выполняющую различные действия в разных обстоятельствах — все, что вам нужно сделать, это добавить/удалить обработчики событий, если это необходимо.

- -

Также, вы можете зарегистрировать несколько обработчиков для одного и того же прослушивателя. Следующие два обработчика не будут применяться:

- -
myElement.onclick = functionA;
-myElement.onclick = functionB;
- -

Поскольку вторая строка будет перезаписывать значение onclick, установленное первой. Однако, если:

- -
myElement.addEventListener('click', functionA);
-myElement.addEventListener('click', functionB);
- -

Обе функции будут выполняться при щелчке элемента.

- -

Кроме того, в этом механизме событий имеется ряд других мощных функций и опций. Эта тема выходит за рамки данной статьи, но если вы хотите изучить подробнее, переходите по ссылкам: Метод Event​Target​.add​Event​Listener() и Метод Event​Target​.remove​Event​Listener().

- -

Какой механизм мне использовать?

- -

Из трех механизмов определенно не нужно использовать атрибуты событий HTML. Как упоминалось выше, это устаревшая и плохая практика.

- -

Остальные два являются относительно взаимозаменяемыми, по крайней мере для простых целей

- - - -

Основные преимущества третьего механизма заключаются в том, что при необходимости можно удалить код обработчика событий, используя removeEventListener(), и так же можно добавить несколько элементов-слушателей того же типа к элементам. Например, вы можете вызвать addEventListener('click', function() {...}) для элемента несколько раз, с разными функциями, указанными во втором аргументе. Это невозможно при использовании свойств обработчика событий, поскольку любые последующие попытки установить свойство будут перезаписывать более ранние, например:

- -
element.onclick = function1;
-element.onclick = function2;
-etc.
- -
-

Примечание: Если вам требуется поддержка браузеров старше Internet Explorer 8 в вашем проекте, вы можете столкнуться с трудностями, так как такие старые браузеры используют старые модели событий из более новых браузеров. Но не бойтесь, большинство библиотек JavaScript (например, jQuery) имеют встроенные функции, которые абстрагируют различия между браузерами. Не беспокойтесь об этом слишком много на этапе вашего учебного путешествия.

-
- -

Другие концепции событий

- -

Рассмотрим некоторые современные концепции, имеющие отношение к событиям. На данный момент не обязательно понимать их полностью, но предстывление о них поможет лучше понять некоторые модели кода, с которыми вы, вероятно, столкнетесь.

- -

   Объекты событий

- -

Иногда внутри функции обработчика событий вы можете увидеть параметр, заданный с таким именем, как event, evt или просто e. Называется он объектом события и он автоматически передается обработчикам событий для предоставления дополнительных функций и информации. Например, давайте немного перепишем наш прмер со случайным цветом:

- -
function bgChange(e) {
-  var rndCol = 'rgb(' + random(255) + ',' + random(255) + ',' + random(255) + ')';
-  e.target.style.backgroundColor = rndCol;
-  console.log(e);
-}
-
-btn.addEventListener('click', bgChange);
- -
-

Примечание: Вы можете найти исходник кода для этого примера на GitHub (также взгляните на его выполнение).

-
- -

Итак в коде выше мы включаем объект события e в функцию, а в функции — настройку стиля фона для e.target, который является кнопкой. Свойство объекта события target всегда является ссылкой на элемент, с которым только что произошло событие. Поэтому в этом примере мы устанавливаем случайный цвет фона на кнопке, а не на странице.

- -
-

Примечание: Вместо e/evt/event можно использовать любое имя для объекта события, которое затем можно использовать для ссылки на него в функции обработчика событий. e/evt/event чаще всего используются разработчиками, потому что они короткие и легко запоминаются. И хорошо придерживаться стандарта.

-
- -

e.target применяют, когда нужно установить один и тот же обработчик событий на несколько элементов и, когда на них происходит событие, применить определенное действие к ним ко всем. Например, у вас может быть набор из 16 плиток, которые исчезают при нажатии. Полезно всегда иметь возможность просто указать, чтобы объект исчез, как e.target, вместо того, чтобы выбирать его более сложным способом. В следующем примере (см. исходный код на  useful-eventtarget.html,а как он работает можно посмотреть здесь), мы создаем 16 элементов {{htmlelement ("div")}} с использованием JavaScript. Затем мы выберем все из них, используя {{domxref ("document.querySelectorAll()")}}, и с помощью цикла for выберем каждый из них, добавив обработчик onclick к каждому так, чтобы случайный цвет применялся к каждому клику:

- -
var divs = document.querySelectorAll('div');
-
-for (var i = 0; i < divs.length; i++) {
-  divs[i].onclick = function(e) {
-    e.target.style.backgroundColor = bgChange();
-  }
-}
- -

Результат выглядит следующим образом (попробуйте щелкнуть по нему):

- - - -

{{ EmbedLiveSample('Hidden_example', '100%', 400) }}

- -

Большинство обработчиков событий, с которыми вы столкнулись, имеют только стандартный набор свойств и функций (методов), доступных для объекта события (см. {{domxref("Event")}} для ссылки на полный список). Однако некоторые более продвинутые обработчики добавляют специальные свойства, содержащие дополнительные данные, которые им необходимо выполнять. Например, Media Recorder API имеет событие, доступное для данных, которое срабатывает, когда записано какое-либо аудио или видео и доступно для выполнения чего-либо (например, для сохранения или воспроизведения). Соответствующий объект события ondataavailable handler имеет свойство данных, содержащее записанные аудио- или видеоданные, чтобы вы могли получить к нему доступ и что-то сделать с ним.

- -

    Предотвращение поведения по умолчанию

- -

Иногда бывают ситуации, когда нужно остановить событие, выполняющее то, что оно делает по умолчанию. Наиболее распространенным примером является веб-форма, например, пользовательская форма регистрации. Когда вы вводите данные и нажимаете кнопку отправки, естественное поведение заключается в том, что данные должны быть отправлены на указанную страницу на сервере для обработки, а браузер перенаправлется на страницу с сообщением об успехе (или остаться на той же странице, если другое не указано).

- -

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

- -

Простая форма HTML, в которой требуется ввести ваше имя и фамилию:

- -
<form>
-  <div>
-    <label for="fname">Имя: </label>
-    <input id="fname" type="text">
-  </div>
-  <div>
-    <label for="lname">Фамилия: </label>
-    <input id="lname" type="text">
-  </div>
-  <div>
-     <input id="submit" type="submit">
-  </div>
-</form>
-<p></p>
- - - -

В JavaScript мы реализуем очень простую проверку внутри обработчика события onsubmit (событие "отправить" запускается в форме, когда оно отправлено), который проверяет, пусты ли текстовые поля. Если они пусты, мы вызываем функцию preventDefault() объекта события, которая останавливает отправку формы, а затем выводит сообщение об ошибке в абзаце ниже нашей формы, чтобы сообщить пользователю, что не так:

- -
var form = document.querySelector('form');
-var fname = document.getElementById('fname');
-var lname = document.getElementById('lname');
-var submit = document.getElementById('submit');
-var para = document.querySelector('p');
-
-form.onsubmit = function(e) {
-  if (fname.value === '' || lname.value === '') {
-    e.preventDefault();
-    para.textContent = 'Оба поля должны быть заполнены!';
-  }
-}
- -

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

- -

{{ EmbedLiveSample('Предотвращение_поведения_по_умолчанию', '100%', 140) }}

- -
-

Примечание: чтобы увидеть исходный код, откройте preventdefault-validation.html (также запустите здесь).

-
- -

Всплытие и перехват событий

- -

Последним предметом для рассмотрения в этой теме является то, с чем вы не часто будете сталкиваться, но это может стать настоящей головной болью, если вы не поймете, как работает следующий механизм. Всплытие и перехват событий — два механизма, описывающих, что происходит, когда два обработчика одного и того же события активируются на одном элементе. Посмотрим на пример. Чтобы сделать это проще — откройте пример show-video-box.html в одной вкладке и исходный код в другой вкладке. Он также представлен ниже:

- - - -

{{ EmbedLiveSample('Hidden_video_example', '100%', 500) }}

- -

Это довольно простой пример, который показывает и скрывает {{htmlelement ("div")}} с элементом {{htmlelement ("video")}} внутри него:

- -
<button>Display video</button>
-
-<div class="hidden">
-  <video>
-    <source src="rabbit320.mp4" type="video/mp4">
-    <source src="rabbit320.webm" type="video/webm">
-    <p>Your browser doesn't support HTML5 video. Here is a <a href="rabbit320.mp4">link to the video</a> instead.</p>
-  </video>
-</div>
- -

При нажатии на кнопку {{htmlelement ("button")}}, изменяется атрибут класса элемента <div> с hidden на showing (CSS примера содержит эти два класса, которые размещают блок вне экрана и на экране соответственно):

- -
div {
-        position: absolute;
-        top: 50%;
-        transform: translate(-50%,-50%);
-        ...
-      }
-.hidden {
-   left: -50%;
-  }
-.showing {
-   left: 50%;
-  }
- -
var btn = document.querySelector('button');
-btn.onclick = function() {
-  videoBox.setAttribute('class', 'showing');
-}
- -

Затем мы добавляем еще пару обработчиков событий onclick. Первый к <div>, а второй к <video>. Идея заключается в том, чтобы при щелчке по области <div> вне зоны видео поле снова скрылось, а при клике в области <video>  видео начало воспроизводиться.

- -
var videoBox = document.querySelector('div');
-var video = document.querySelector('video');
-
-videoBox.onclick = function() {
-  videoBox.setAttribute('class', 'hidden');
-};
-
-video.onclick = function() {
-  video.play();
-};
- -

Но есть проблема: когда вы нажимаете на видео, оно начинает воспроизводиться, но одновременно вызывает скрытие <div>. Это связано с тем, что видео находится внутри <div>, это часть его, поэтому нажатие на видео фактически запускает оба вышеуказанных обработчика событий.

- -

Всплытие и перехват событий — концепция выполнения

- -

Когда событие инициируется элементом, который имеет родительские элементы (например, {{htmlelement ("video")}} в нашем случае), современные браузеры выполняют две разные фазы —  фазу  захвата и фазу всплытия.

- -

На стадии захвата происходит следующее:

- - - -

На стадии всплытия происходит полная противоположность:

- - - -

- -

(Нажмите на изображение, чтобы увеличить диаграмму)

- -

В современных браузерах по умолчанию все обработчики событий регистрируются в фазе всплытия. Итак, в нашем текущем примере, когда вы нажимаете видео, событие click вызывается из элемента <video> наружу, в элемент <html>. По пути:

- - - -

Исправление проблемы с помощью stopPropagation()

- -

Чтобы исправить это раздражающее поведение, стандартный объект события имеет функцию, называемую stopPropagation(), которая при вызове в обработчике событий объекта делает так, чтобы обработчик выполнялся, но событие не всплывало дальше по цепочке, поэтому не будут запускаться другие обработчики.

- -

Поэтому мы можем исправить нашу текущую проблему, изменив вторую функцию-обработчик в предыдущем блоке кода:

- -
video.onclick = function(e) {
-  e.stopPropagation();
-  video.play();
-};
- -

Вы можете попробовать создать локальную копию show-video-box.html и попробовать его самостоятельно исправить или просмотреть исправленный результат в show-video-box-fixed.html (также см. исходный код здесь).

- -
Примечание: Зачем беспокоиться как с захватом, так и с всплыванием? Что ж, в старые добрые времена, когда браузеры были менее совместимы, чем сейчас, Netscape использовал только захват событий, а Internet Explorer использовал только всплывающие события. Когда W3C решил попытаться стандартизировать поведение и достичь консенсуса, они в итоге получили эту систему, которая включала в себя и то, и другое, что реализовано в одном из современных браузеров.
- -
-

Примечание: Как упоминалось выше, по умолчанию все обработчики событий регистрируются в фазе всплытия и это имеет смысл в большинстве случаев. Если вы действительно хотите зарегистрировать событие в фазе захвата, вы можете сделать это, зарегистрировав обработчик с помощью addEventListener() и установив для третьего дополнительного свойства значение true.

-
- -

Делегирование события

- -

Всплытие также позволяет нам использовать делегирование событий.  Если у какого-либо родительского элемента есть множество дочерних элементов, и вы хотите, чтобы определенный код выполнялся при щелчке (событии) на каждом из дочерних элементов, можно установить прослушиватель событий на родительском элементе и события, происходящие на дочерних элементах будут всплывать до их родителя. При этом не нужно устанавливать прослушивателя событий на каждом дочернем элементе.

- -

Хорошим примером является серия элементов списка. Если вы хотите, чтобы каждый из них, например, отображал сообщение при нажатии, вы можете установить прослушиватель событий click для родительского элемента <ul> и он будет всплывать в элементах списка.

- -

Эту концепцию объясняет в своем блоге Дэвид Уолш, где приводит несколько примеров. (см. How JavaScript Event Delegation Works.)

- -

Вывод

- -

Это все, что вам нужно знать о веб-событиях на этом этапе. Как уже упоминалось, события не являются частью основного JavaScript — они определены в веб-интерфейсах браузера (Web API).

- -

Кроме того, важно понимать, что различные контексты, в которых используется JavaScript, обычно имеют разные модели событий — от веб-API до других областей, таких как браузерные WebExtensions и Node.js (серверный JavaScript). Может сейчас вы не особо в этом разбираетесь, но по мере изучения веб-разработки начнет приходить более ясное понимание тематики.

- -

Если у вас возникли вопросы, попробуйте прочесть статью снова или обратитесь за помощью к нам.

- -

См. также

- - - -

{{PreviousMenuNext("Learn/JavaScript/Building_blocks/Return_values","Learn/JavaScript/Building_blocks/Image_gallery", "Learn/JavaScript/Building_blocks")}}

- -

В этом модуле

- - - -
-
- -
-
diff --git a/files/ru/learn/javascript/first_steps/a_first_splash/index.html b/files/ru/learn/javascript/first_steps/a_first_splash/index.html new file mode 100644 index 0000000000..b2a811b992 --- /dev/null +++ b/files/ru/learn/javascript/first_steps/a_first_splash/index.html @@ -0,0 +1,675 @@ +--- +title: Первое погружение в JavaScript +slug: Learn/JavaScript/Первые_шаги/A_first_splash +translation_of: Learn/JavaScript/First_steps/A_first_splash +--- +
{{LearnSidebar}}
+ +
{{PreviousMenuNext("Learn/JavaScript/Первые_шаги/What_is_JavaScript", "Learn/JavaScript/Первые_шаги/Что_пошло_не_так", "Learn/JavaScript/Первые_шаги")}}
+ +

Теперь, когда вы получили базовое представление о JavaScript — самое время познакомиться с ним на практике! В данной статье представлен ускоренный практический курс, демонстрирующий основные возможности JavaScript. В этом курсе, шаг за шагом, вы создадите простую игру «Угадай число».

+ + + + + + + + + + + + +
Необходимые навыки:Базовая компьютерная грамотность, знание основ HTML и CSS, понимание что такое и для чего нужен JavaScript.
Цели:Получение первого опыта в программировании на JavaScript.
+ +

Вам не придется сразу понимать весь код — мы только хотим познакомить вас с базовыми концепциями языка и дать представление о том, как работает JavaScript (и другие языки программирования). В дальнейших статьях вы изучите эти концепции более подробно!

+ +
+

Большинство языковых конструкций JavaScript, с которыми вы познакомитесь (функции, циклы и т.д.), имеют аналоги в других языках программирования — т.е. языки имеют разный синтаксис, но концепции в большинстве случаев те же самые.

+
+ +

Думай как программист

+ +

Одним из самых трудных и значимых моментов в обучении программированию является не изучение непосредственно синтаксиса языка, а понимание того как применять его для решения реальных задач. Вам нужно начать думать как программист, обычно это означает следующее:

+ + + +

Всё вместе это потребует тяжелой работы, знания языка, практики в написании кода - и немного творчества. Чем больше вы будете заняты решением практических задач, тем быстрее будете расти в программировании. Мы не обещаем, что вы сразу начнете "думать как программист", но предоставим для этого достаточно возможностей в этой статье.

+ +

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

+ +

Игра «Угадай число»

+ +

В этой статье мы покажем вам как создать простую игру, которую вы видите ниже:

+ + + +

{{ EmbedLiveSample('Top_hidden_code', '100%', 320) }}

+ +

Поиграйте в нее - познакомьтесь с игрой, прежде чем двигаться дальше.

+ +

Давайте представим, что ваш босс дал вам следующую информацию для создания этой игры:

+ +
+

Я хочу чтобы ты создал простую игру по принципу "Угадай число". Игра должна случайным образом генерировать число от 0 до 100, затем игрок должен отгадать это число за 10 попыток. После каждой попытки игроку сообщают угадал он число или не угадал и если он ошибся, то ему сообщается, что загаданное число больше или меньше того, которое он ввел. Так же необходимо показывать игроку числа из его предыдущих попыток. Игра будет окончена, если игрок угадал число верно или если у него кончатся все попытки. После окончания игры игроку будет дана возможность сыграть в игру еще раз.

+
+ +

Поглядев на это краткое изложение, первое, что мы можем сделать - это начать разбивать его на простые действия, максимально думая как программист:

+ +
    +
  1. Сгенерировать случайное число между 1 и 100.
  2. +
  3. Начать запись количества попыток игрока угадать число. Начать с 1.
  4. +
  5. Предоставить попытку угадать игроку загаданное число.
  6. +
  7. Как только попытка угадать была отправлена, сначала записать ее где-нибудь, чтобы пользователь мог увидеть свои предыдущие попытки
  8. +
  9. Далее, проверить было ли это число верным.
  10. +
  11. Если число верное: +
      +
    1. Показать поздравительное сообщение.
    2. +
    3. Оградить игрока от дальнейшей возможности ввода чисел (это испортит игру).
    4. +
    5. Предоставить возможность для перезапуска игры.
    6. +
    +
  12. +
  13. Если число не верное и есть попытки: +
      +
    1. Сказать игроку, что он не угадал.
    2. +
    3. Разрешить ему использовать еще попытку.
    4. +
    5. Повысить число попыток на 1.
    6. +
    +
  14. +
  15. Если число не верное и попыток нет: +
      +
    1. Сказать игроку, что игра окончена.
    2. +
    3. Оградить игрока от дальнейшей возможности ввода чисел (это испортит игру).
    4. +
    5. Предоставить возможность для перезапуска игры.
    6. +
    +
  16. +
  17. Во время перезапуска игры убедиться, что игровая логика и пользовательский интерфейс полностью сбросились на начальные значения и далее перейти обратно к пункту 1.
  18. +
+ +

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

+ +

Подготовка

+ +

В начале этого урока, мы хотели бы, чтобы вы создали локальную копию файла  number-guessing-game-start.html  (см. здесь).  Откройте его как в текстовом редакторе, так и в веб-браузере. На данный момент вы увидите простой заголовок, абзац с инструкцией и форму для ввода предположения, но форма в настоящее время ничего не сделает.

+ +

Место, где мы будем добавлять весь наш код, находится внутри элемента {{htmlelement("script")}} в нижней части HTML:

+ +
<script>
+
+  // Your JavaScript goes here
+
+</script>
+
+ +

Добавление переменных для хранения данных

+ +

Давайте начнем. Прежде всего добавьте следующие строки внутри элемента  {{htmlelement("script")}} :

+ +
var randomNumber = Math.floor(Math.random() * 100) + 1;
+
+var guesses = document.querySelector('.guesses');
+var lastResult = document.querySelector('.lastResult');
+var lowOrHi = document.querySelector('.lowOrHi');
+
+var guessSubmit = document.querySelector('.guessSubmit');
+var guessField = document.querySelector('.guessField');
+
+var guessCount = 1;
+var resetButton;
+ +

В этом разделе кода устанавливаются переменные, необходимые для хранения данных, которые будет использоваться нашей программой. Переменные - это в основном контейнеры для значений (например, числа или строки текста). Вы создаете переменную с ключевым словом var, за которой следует имя для вашей переменной. Затем вы можете присвоить значение своей переменной знак равенства (=), за которым следует значение, которое вы хотите дать.

+ +

В нашем примере:

+ + + +
+

Заметка: В дальнейшем вы узнаете намного больше о переменных, в следующей статье.

+
+ +

Функции (Functions)

+ +

Затем добавьте следующие ниже предыдущего JavaScript:

+ +
function checkGuess() {
+  alert('I am a placeholder');
+}
+ +

Функции представляют собой многократно используемые блоки кода, написав один раз вы можете запускать их снова и снова, сохраняя нужный постоянно повторяющийся код. Это действительно полезно. Существует несколько способов определить функцию, но пока мы сосредоточимся на одном простом варианте. Здесь мы определили функцию используя ключевое слово function, за ним идет имя с двумя скобками после него. После этого мы добавляем две фигурные скобки ({ }). Внутри фигурных скобок содержится весь код, запускающийся всякий раз, когда вызываем функцию.

+ +

Код запускается вводом имени функции, за которым следуют две скобки.

+ +

Сейчас попробуйте сохранить код и обновить его в браузере.

+ +

Перейдите к консоли JavaScript в инструментах разработчика, и введите следующую строку:

+ +
checkGuess();
+ +

Вы должны увидеть предупреждение, в котором говорится "I am a placeholder"; в нашем коде мы определили функцию, которая создает предупреждение, когда ее вызывают.

+ +
+

Заметка: В дальнейшем вы намного больше узнаете о функциях.

+
+ +

Операторы (Operators)

+ +

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

+ +

Сохраните наш код и обновите страницу показанную в браузере. Откройте консоль JavaScript, если вы еще её не открыли, чтобы попробовать ввести текст из приведенных ниже примеров — введите каждую строчку из столбца "Пример", нажимая Enter после каждого из них, и посмотрите какие результаты они возвращают. Если у вас нет доступа к инструментам разработчика в браузере, вы всегда можете использовать простую встроенную консоль, показанную ниже:

+ + + +

{{ EmbedLiveSample('Hidden_code', '100%', 300) }}

+ +

Сначала давайте посмотрим на арифметические операторы, например:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ОператорИмяПример
+Сложение6 + 9
-Вычитание20 - 15
*Умножение3 * 7
/Деление10 / 5
+ +

Вы также можете использовать оператор + для сложения строк текста (в программировании это называется конкатенацией). Попробуйте ввести следующие строки:

+ +
var name = 'Bingo';
+name;
+var hello = ' says hello!';
+hello;
+var greeting = name + hello;
+greeting;
+ +

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

+ +
name += ' says hello!';
+ +

Это эквивалентно этому:

+ +
name = name + ' says hello!';
+ +

Когда мы запускаем проверку true/false (истина/ложь) (например, внутри условных выражений — смотри {{anch("Conditionals", "ниже")}}), мы используем операторы сравнения, например:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ОператорИмяПример
===Строгое равенство (это точно одно и то же?)5 === 2 + 4
!==Строгое неравенство (это не одно и то же?)'Chris' !== 'Ch' + 'ris'
<Меньше чем10 < 6
>Больше чем10 > 20
+ +

Условные выражения (Conditionals)

+ +

Вернемся к нашей функции checkGuess(), я думаю, можно с уверенностью сказать, что мы не хотим, чтобы она просто выводила сообщение заполнитель. Мы хотим, чтобы она проверяла сделал игрок правильный выбор или нет, и соответсвующе реагировала.

+ +

Теперь, заменим вашу текущую функциюcheckGuess() на эту версию:

+ +
function checkGuess() {
+  var userGuess = Number(guessField.value);
+  if (guessCount === 1) {
+    guesses.textContent = 'Previous guesses: ';
+  }
+  guesses.textContent += userGuess + ' ';
+
+  if (userGuess === randomNumber) {
+    lastResult.textContent = 'Congratulations! You got it right!';
+    lastResult.style.backgroundColor = 'green';
+    lowOrHi.textContent = '';
+    setGameOver();
+  } else if (guessCount === 10) {
+    lastResult.textContent = '!!!GAME OVER!!!';
+    setGameOver();
+  } else {
+    lastResult.textContent = 'Wrong!';
+    lastResult.style.backgroundColor = 'red';
+    if(userGuess < randomNumber) {
+      lowOrHi.textContent = 'Last guess was too low!';
+    } else if(userGuess > randomNumber) {
+      lowOrHi.textContent = 'Last guess was too high!';
+    }
+  }
+
+  guessCount++;
+  guessField.value = '';
+  guessField.focus();
+}
+ +

Как много кода — фу! Давайте отдельно рассмотрим каждый раздел и объясним, что он делает.

+ + + +

События (Events)

+ +

На данный момент у нас есть хорошо реализованная функция checkGuess(), но она ничего не сделает, потому что мы еще не вызвали ее. В идеале мы хотим вызывать её во время нажатия кнопки « Submit guess », и для этого нам нужно использовать событие. События - это действия, которые происходят в браузере, например, нажатие кнопки или загрузка страницы или воспроизведение видео, в ответ на которые мы можем запускать блоки кода. Конструкции, которые прослушивают событие, называются прослушивателями событий, а блоки кода, выполняемые в ответ на срабатывание событий, называются обработчиками событий.

+ +

Добавьте следующую строку ниже закрывающей фигурной скобки функции checkGuess():

+ +
guessSubmit.addEventListener('click', checkGuess);
+ +

Здесь мы добавляем прослушиватель событий к кнопке guessSubmit. Это метод, который принимает два входных значения (называемые аргументами) - тип события, которое мы выслушиваем (в данном случае click) в виде строки, и код, который мы хотим запустить при возникновении события (в данном случае функция checkGuess() - обратите внимание, что нам не нужно указывать круглые скобки при записи внутри {{domxref("EventTarget.addEventListener", "addEventListener()")}}).

+ +

Попробуйте сохранить и обновить код сейчас, и ваш пример должен теперь работать, но до определенного момента. Единственная проблема в том, что если вы угадаете правильный ответ или исчерпаете догадки, игра сломается, потому что мы еще не определили функцию setGameOver(), которая должна запускаться после завершения игры. Давайте добавим наш недостающий код и завершим пример функциональности.

+ +

Завершение игры

+ +

Давайте добавим функцию setGameOver() в конец нашего кода, а затем пройдем по ней. Добавьте это под нижней частью вашего JavaScript:

+ +
function setGameOver() {
+  guessField.disabled = true;
+  guessSubmit.disabled = true;
+  resetButton = document.createElement('button');
+  resetButton.textContent = 'Start new game';
+  document.body.appendChild(resetButton);
+  resetButton.addEventListener('click', resetGame);
+}
+ + + +

Теперь нам нужно также определить эту функцию! Добавьте следующий код, снова в нижнюю часть вашего JavaScript:

+ +
function resetGame() {
+  guessCount = 1;
+
+  var resetParas = document.querySelectorAll('.resultParas p');
+  for (var i = 0 ; i < resetParas.length ; i++) {
+    resetParas[i].textContent = '';
+  }
+
+  resetButton.parentNode.removeChild(resetButton);
+
+  guessField.disabled = false;
+  guessSubmit.disabled = false;
+  guessField.value = '';
+  guessField.focus();
+
+  lastResult.style.backgroundColor = 'white';
+
+  randomNumber = Math.floor(Math.random() * 100) + 1;
+}
+ +

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

+ + + +

С этого момента у вас есть полностью работающая (простая) игра - поздравляем!

+ +

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

+ +

Циклы (Loops) 

+ +
+
+
Одна часть вышеприведенного кода, которую мы должны рассмотреть более подробно, - это цикл for. Циклы - очень важная концепция программирования, которая позволяет вам снова и снова запускать кусок кода, пока не будет выполнено определенное условие.
+ +
Для начала перейдите в панель инструментов разработчика JavaScript-консоли и введите следующее:
+
+
+ +
for (var i = 1 ; i < 21 ; i++) { console.log(i) }
+ +

Что случилось? Номера с 1 по 20 были напечатаны в консоли. Это из-за цикла. Цикл for принимает три входных значения (аргументы):
+ Начальное значение: в этом случае мы начинаем подсчет c 1, но это может быть любое число которое вам нравится. Вы можете заменить i любым другим именем, которое вам нравится, но я использую его как условность, потому что оно короткое и легко запоминается. Условие выхода: Здесь мы указали i <21 - цикл будет продолжаться до тех пор, пока i будет меньше 21. Когда i достигнет 21, цикл больше не будет работать. Инкремент: мы указали i ++, что означает «увеличить i на 1». Цикл будет выполняться один раз для каждого значения i, пока оно не достигнет значения 21 (как обсуждалось выше). В этом случае мы просто печатаем значение i в консоли на каждой итерации с помощью {{domxref ("Console.log", "console.log ()")}}.

+ +

Теперь давайте посмотрим на цикл в нашей игре угадывания чисел - в функции resetGame () можно найти следующее:

+ +
var resetParas = document.querySelectorAll('.resultParas p');
+for (var i = 0 ; i < resetParas.length ; i++) {
+  resetParas[i].textContent = '';
+}
+ +

Этот код создает переменную, содержащую список всех абзацев внутри <div class = "resultParas">, используя метод {{domxref ("Document.querySelectorAll", "querySelectorAll ()")}}, затем он проходит через каждый из них, удаляя текстовое содержимое каждого из них.

+ +

Немного об объектах (Objects)

+ +

Давайте добавим еще одно окончательное улучшение, прежде чем перейти к обсуждению. Добавьте следующую строку чуть ниже var resetButton; в верхней части вашего JavaScript, затем сохраните файл:

+ +
guessField.focus();
+ +

Эта строка использует метод {{domxref("HTMLElement.focus", "focus()")}}, чтобы автоматически помещать текстовый курсор в текстовое поле {{htmlelement("input")}}, как только загрузится страница. Пользователь сможет сразу набрать свою первую догадку, не нажимая поле формы. Это всего лишь небольшое дополнение, но оно улучшает удобство использования - дает пользователю хорошую визуальную подсказку относительно того, что они должны делать в игре.

+ +

Давайте проанализируем, что произошло. В JavaScript все элементы являются объектами. Объект - это набор связанных функций, хранящихся в одной группе. Вы можете создавать собственные объекты, но это требует мастерства, и мы не хотели бы раскрывать эту тему в рамках данного курса. Будет достаточно обсудить встроенные объекты вашего браузера, которые позволяют реализовывать множество полезных вещей.

+ +

В нашем примере мы сначала создали переменную guessField, которая запоминает значение из поля ввода в нашем HTML - следующая строка находится среди первых в нашем коде:

+ +
var guessField = document.querySelector('.guessField');
+ +

Чтобы получить это значение, мы использовали метод {{domxref("document.querySelector", "querySelector()")}} объекта {{domxref("document")}}. querySelector() "берет" одну часть информации -  CSS selector, который выбирает нужный элемент.

+ +

Поскольку guessField теперь содержит ссылку на элемент {{htmlelement("input")}}, теперь он будет иметь доступ к ряду свойств (в основном к переменным, хранящимся внутри объектов, некоторые значения которых нельзя изменять) и методы (в основном функции, хранящиеся внутри объектов). Одним из методов, доступных для ввода элементов, является focus (), поэтому мы можем теперь использовать эту строку для фокусировки ввода текста:

+ +
guessField.focus();
+ +

Для переменных, которые не содержат ссылок на элементы формы, не будет доступен focus(). Например, переменная guesses содержит ссылку на элемент {{htmlelement ("p")}}, а guessCount содержит число.

+ +

Поиграем с объектами браузера

+ +

Давайте немного поиграем с некоторыми объектами браузера.

+ +
    +
  1. Для начала запустите свою программу в браузере.
  2. +
  3. Далее, откройте инструменты разработчика в вашем браузере, и убедитесь, что вы перешли во вкладку с консолью JavaScript.
  4. +
  5. Введите guessField и консоль покажет, что переменная содержит элемент {{htmlelement("input")}}. Вы также можете заметить, что консоль автоматически заполняет имена объектов, которые существуют внутри исполняющей среды, включая ваши переменные!
  6. +
  7. Теперь введите следующее: +
    guessField.value = 'Hello';
    + Свойство value представляет текущее значение, введенное в текстовое поле. Заметьте, что, введя эту команду, мы изменили его!
  8. +
  9. Попробуйте ввести guesses и нажать return. Консоль покажет, что в переменной содержится элемент {{htmlelement("p")}}.
  10. +
  11. Теперь попробуйте ввести: +
    guesses.value
    + Браузер вернет вам undefined, потому что value не существует в параграфах.
  12. +
  13. Для изменения текста внутри параграфа, взамен используйте свойство {{domxref("Node.textContent", "textContent")}}. Попробуйте: +
    guesses.textContent = 'Where is my paragraph?';
    +
  14. +
  15. Теперь немного повеселимся. Попробуйте ввести следующие строки, одну за другой: +
    guesses.style.backgroundColor = 'yellow';
    +guesses.style.fontSize = '200%';
    +guesses.style.padding = '10px';
    +guesses.style.boxShadow = '3px 3px 6px black';
    + Каждый элемент на странице имеет свойство style, которое само по себе содержит объект, свойства которого содержат все встроенные стили CSS, применяемые к этому элементу. Это позволяет нам динамически задавать новые стили CSS для элементов с помощью JavaScript.
  16. +
+ +

Теперь можно отдохнуть...

+ +

Итак, на этом пример закончился - отлично, вы добрались до конца! Попробуйте свой финальный код или поиграйте с нашей готовой версией здесь. Если вы не можете запустить этот пример, сверьтесь с исходным кодом.

+ +

{{PreviousMenuNext("Learn/JavaScript/Первые_шаги/What_is_JavaScript", "Learn/JavaScript/Первые_шаги/Что_пошло_не_так", "Learn/JavaScript/Первые_шаги")}}

diff --git a/files/ru/learn/javascript/first_steps/arrays/index.html b/files/ru/learn/javascript/first_steps/arrays/index.html new file mode 100644 index 0000000000..7f38ce4a50 --- /dev/null +++ b/files/ru/learn/javascript/first_steps/arrays/index.html @@ -0,0 +1,678 @@ +--- +title: Массивы +slug: Learn/JavaScript/Первые_шаги/Arrays +tags: + - JavaScript + - Pop + - Push + - shift + - unshift + - Для начинающих + - Массивы + - Статья +translation_of: Learn/JavaScript/First_steps/Arrays +--- +
{{LearnSidebar}}
+ +
{{PreviousMenuNext("Learn/JavaScript/Первые_шаги/Useful_string_methods", "Learn/JavaScript/Первые_шаги/Создатель_глуых_историй", "Learn/JavaScript/Первые_шаги")}}
+ +

В финальной статье этого раздела, мы познакомимся с массивами — лаконичным способом хранения списка элементов под одним именем. Мы поймем, чем они полезны, затем узнаем, как создать массив, получить, добавить и удалить элементы, хранящиеся в массиве.

+ + + + + + + + + + + + +
Необходимые навыки:Базовая компьютерная грамотность, базовое понимание HTML и CSS, понимание о том, что такое JavaScript.
Цель:Понять, что такое массивы и как использовать их в JavaScript.
+ +

Что такое массив?

+ +

Массивы обычно описываются как «объекты, подобные спискам»; они представляют собой в основном отдельные объекты, которые содержат несколько значений, хранящихся в списке. Объекты массива могут храниться в переменных и обрабатываться во многом так же, как и любой другой тип значения, причем разница заключается в том, что мы можем получить доступ к каждому значению внутри списка отдельно и делать супер полезные и эффективные вещи со списком, а также делать то же самое для каждого из значений. Представим, что у нас есть список продуктов и их цены, хранящиеся в массиве, и мы хотим их просмотреть и распечатать на счете-фактуре, общая сумма всех цен и распечатка общей цены внизу.

+ +

Если бы у нас не было массивов, мы должны были бы хранить каждый элемент в отдельной переменной, а затем вызывать код, выполняющий печать и добавляющий отдельно каждый элемент. Написание такого кода займет намного больше времени, сам код будет менее эффективным и подверженным  ошибкам. Если бы у нас было 10 элементов для добавления в счет-фактуру, это еще куда ни шло, но как насчет 100 предметов? Или 1000? Мы вернемся к этому примеру позже в статье.

+ +

Как и в предыдущих статьях, давайте узнаем о реальных основах массивов, введя некоторые примеры в консоль JavaScript. Мы предоставили один ниже (вы также можете open this console в отдельном окне, или использовать browser developer console, если вам угодно).

+ + + +

{{ EmbedLiveSample('Hidden_code', '100%', 300) }}

+ +

Создание массива

+ +

Массивы создаются из квадратных скобок , которые содержат список элементов, разделённых запятыми.

+ +
    +
  1. Допустим, мы бы хотели хранить список покупок в массиве — мы бы сделали что-то вроде этого. Введите следующие строчки в вашу консоль: +
    var shopping = ['bread', 'milk', 'cheese', 'hummus', 'noodles'];
    +shopping;
    +
  2. +
  3. В данном случае, каждый элемент в массиве — это строка , но имейте в виду, что вы можете хранить любой элемент в массиве — строку, число, объект, другую переменную, даже другой массив. Вы также можете перемешивать типы элементов — они не должны все быть числами, строками, и так далее. Попробуйте это: +
    var sequence = [1, 1, 2, 3, 5, 8, 13];
    +var random = ['tree', 795, [0, 1, 2]];
    +
  4. +
  5. Попробуйте сами создать несколько массивов, перед тем как двигаться дальше.
  6. +
+ +

Получение и изменение элементов массива

+ +

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

+ +
    +
  1. Введите следующее в вашу консоль: +
    shopping[0];
    +// возвращает "bread"
    +
  2. +
  3. Вы также можете изменять элемент в массиве, просто дав отдельному элементу массива новое значение. Попробуйте это: +
    shopping[0] = 'tahini';
    +shopping;
    +// shopping теперь возвратит [ "tahini", "milk", "cheese", "hummus", "noodles" ]
    + +
    Заметка: Мы уже упоминали это прежде, но просто как напоминание — компьютеры начинают считать с нуля!
    +
  4. +
  5. Заметьте, что массив внутри массива называется многомерным массивом. Вы можете получить доступ к элементу внутри массива, который сам находится внутри другого массива, объединив два набора квадратных скобок. Например, для доступа к одному из элементов внутри массива, который является третьим элементом внутри массива random (см. предыдущую секцию данной статьи), мы могли бы сделать что-то вроде этого: +
    random[2][2];
    +
  6. +
  7. Попробуйте внести некоторые дополнительные изменения в свои примеры массивов, прежде чем двигаться дальше.
  8. +
+ +

Нахождение длины массива

+ +

Вы можете найти длину массива (количество элементов в нём) точно таким же способом, как вы находите длину строки (в символах) — используя свойство {{jsxref("Array.prototype.length","length")}}. Попробуйте следующее:

+ +
sequence.length;
+// должно возвратить 7
+ +

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

+ +
var sequence = [1, 1, 2, 3, 5, 8, 13];
+for (var i = 0; i < sequence.length; i++) {
+  console.log(sequence[i]);
+}
+ +

В будущих статьях вы узнаете о циклах, но вкратце этот код говорит:

+ +
    +
  1. Начать цикл с номера позиции 0 в массиве.
  2. +
  3. Остановить цикл на номере элемента, равном длине массива. Это будет работать для массива любой длины, но в этом случае он остановит цикл на элементе номер 7 (это хорошо, поскольку последний элемент, который мы хотим, чтобы цикл был закрыт, равен 6).
  4. +
  5. Для каждого элемента вернуть его значение в консоли браузера с помощью console.log().
  6. +
+ +

Некоторые полезные методы массивов

+ +

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

+ +

Преобразование между строками и массивами

+ +

Часто у Вас могут быть некоторые необработанные данные, содержащиеся в большой длинной строке, и вы можете захотеть разделить полезные пункты до более удобной и полезной формы, а затем сделать что-то для них, например отобразить их в таблице данных. Для этого мы можем использовать метод {{jsxref ("String.prototype.split ()", "split ()")}}. В его простейшей форме он принимает единственный параметр, символ, который вы хотите отделить в строке, и возвращает подстроки между разделителем как элементы в массиве.

+ +
+

Заметка: Хорошо, технически это строковый метод, не метод массива, но мы поместили его в массивы, так как он хорошо подходит для них.

+
+ +
    +
  1. Поиграем с этим, посмотрим как это работает. Сначала, создадим строку в вашей консоли: +
    var myData = 'Manchester,London,Liverpool,Birmingham,Leeds,Carlisle';
    +
  2. +
  3. Теперь разделим ee посредством запятой: +
    var myArray = myData.split(',');
    +myArray;
    +
  4. +
  5. Наконец, попробуйте найти длину вашего нового массива и извлечь из него некоторые элементы: +
    myArray.length;
    +myArray[0]; // первый элемент в массиве
    +myArray[1]; // второй элемент в массиве
    +myArray[myArray.length-1]; // последний элемент в массиве
    +
  6. +
  7. Вы можете сделать обратное используя метод{{jsxref("Array.prototype.join()","join()")}} . Попробуйте следующее: +
    var myNewString = myArray.join(',');
    +myNewString;
    +
  8. +
  9.  Другой способ преобразования массива в строку - использовать метод {{jsxref("Array.prototype.toString()","toString()")}} . toString() ,возможно, проще,чем join() поскольку он не принимает параметр, но это ограничивает его. С join()вы можете указать разные разделители (попробуйте выполнить шаг 4 с другим символом, кроме запятой). +
    var dogNames = ["Rocket","Flash","Bella","Slugger"];
    +dogNames.toString(); //Rocket,Flash,Bella,Slugger
    +
  10. +
+ +

Добавление и удаление элементов массива

+ +

Мы еще не рассмотрели добавление и удаление элементов массива - давайте посмотрим на это сейчас. Мы будем использовать массив myArray , с которым мы столкнулись в предыдущем разделе. Если вы еще не прошли этот раздел, сначала создайте массив в консоли:

+ +
var myArray = ['Manchester', 'London', 'Liverpool', 'Birmingham', 'Leeds', 'Carlisle'];
+ +

Прежде всего, чтобы добавить или удалить элемент с конца массива, мы можем использовать {{jsxref("Array.prototype.push()","push()")}} и {{jsxref("Array.prototype.pop()","pop()")}} соответственно.

+ +
    +
  1. Давайте сначала используем метод push() — заметьте, что вам нужно указать один или более элементов, которые вы хотите добавить в конец своего массива. Попробуйте это: + +
    myArray.push('Cardiff');
    +myArray;
    +myArray.push('Bradford', 'Brighton');
    +myArray;
    +
    +
  2. +
  3. При завершении вызова метода возвращается новая длина массива. Если бы вы хотели сохранить новую длину массива в переменной, вы бы могли сделать что-то вроде этого: +
    var newLength = myArray.push('Bristol');
    +myArray;
    +newLength;
    +
  4. +
  5. Удаление последнего элемента массива можно совершить с помощью вызова метода pop(). Попробуйте это: +
    myArray.pop();
    +
  6. +
  7. Когда вызов метода завершается, возвращается удалённый элемент. Вы бы могли также сделать такое: +
    var removedItem = myArray.pop();
    +myArray;
    +removedItem;
    +
  8. +
+ +

{{jsxref("Array.prototype.unshift()","unshift()")}} и {{jsxref("Array.prototype.shift()","shift()")}} работают точно таким же способом, за исключением того что они работают в начале массива, а не в конце.

+ +
    +
  1. Сначала, попробуем метод unshift(): + +
    myArray.unshift('Edinburgh');
    +myArray;
    +
  2. +
  3. Теперь shift(); попробуйте эти! +
    var removedItem = myArray.shift();
    +myArray;
    +removedItem;
    +
  4. +
+ +

Практика: Печать продуктов!

+ +

Вернемся к описанному выше примеру - распечатываем названия продуктов и цен на счет-фактуру, затем суммируем цены и печатаем их внизу. В приведенном ниже редактируемом примере есть комментарии, содержащие числа - каждая из этих отметок является местом, где вы должны добавить что-то в код. Они заключаются в следующем:

+ +
    +
  1. Ниже комментария // number 1  имеется ряд строк, каждая из которых содержит название продукта и цену, разделенные двоеточием. Нужно превратить их в массив и сохранить его  под названием  products.
  2. +
  3. На строке с комментарием // number 2  начинается цикл for. В строке цикла имеется i <= 0, что является условием , которое заставляет цикл for выполняться только один раз, так как это значение i сообщает циклу: «останавливаться, когда i меньше или равен 0», при этом i начинается с 0. Нужно заменить i <= 0 условным тестом, который останавливает цикл, когда i перестает быть меньше длины массива products .
  4. +
  5. Под комментарием // number 3 мы хотим, чтобы вы написали строку кода, которая разбивает текущий элемент массива (name:price) на два отдельных элемента: один содержит только имя, а другой - содержащее только цену. Если не знаете, как это сделать, еще раз просмотрите статью Полезные строковые методы, а лучше, посмотрите раздел {{anch("Преобразование между строками и массивами")}} этой статьи.
  6. +
  7. В рамках приведенной выше строки нужно преобразовать цену из строки в число. Если не помните, как это сделать, ознакомьтесь со статьей строки в JavaScript.
  8. +
  9. В верхней части кода есть переменная с именем total , которая содержит значение 0. Внутри цикла (под комментарием // number 4) нужно добавить строку, которая добавляет текущую цену товара к этой сумме на каждой итерации цикла, так чтобы в конце кода была выведена корректная сумма в счет-фактуре. Для этого вам может понадобится оператор присваивания.
  10. +
  11. Под комментарием // number 5 нужно изменить строку так, чтобы переменная itemText была равна "current item name — $current item price",  например "Shoes — $23.99" для каждого случая, чтобы корректная информация для каждого элемента была напечатана в счете-фактуре. Здесь обычная конкатенация строк, которая должна быть вам знакома.
  12. +
+ + + +

{{ EmbedLiveSample('Playable_code', '100%', 730, "", "", "hide-codepen-jsfiddle") }}

+ +

Практика: Топ 5 поисовых запросов

+ +

Хорошим тоном, является использование методов массива, таких как {{jsxref ("Array.prototype.push ()", "push ()")}} и {{jsxref ("Array.prototype.pop ()", "pop ()") }} - это когда вы ведете запись активных элементов в веб-приложении. Например, в анимированной сцене может быть массив объектов, представляющих текущую отображаемую фоновую графику и вам может потребоваться только 50 одновременных отображений по причинам производительности или беспорядка. Когда новые объекты создаются и добавляются в массив, более старые могут быть удалены из массива для поддержания нужного числа.

+ +

В этом примере мы собираемся показать гораздо более простое использование - ниже мы даем вам поддельный поисковый сайт с полем поиска. Идея заключается в том, что когда в поле поиска вводятся запросы, в списке отображаются 5 предыдущих поисковых запросов. Когда число терминов превышает 5, последний член начинает удаляться каждый раз, когда новый член добавляется в начало, поэтому всегда отображаются 5 предыдущих терминов.

+ +
+

Примечание: В реальном приложении для поиска вы, вероятно, сможете щелкнуть предыдущие условия поиска, чтобы вернуться к предыдущим поисковым запросам и отобразите фактические результаты поиска! На данный момент мы просто сохраняем его.

+
+ +

Чтобы завершить приложение, вам необходимо:

+ +
    +
  1. Добавьте строку под комментарием // number 1, которая добавляет текущее значение, введенное в ввод поиска, к началу массива. Его можно получить с помощью searchInput.value.
  2. +
  3. Добавьте строку под комментарием // number 2, которая удаляет значение, находящееся в конце массива.
  4. +
+ + + +

{{ EmbedLiveSample('Playable_code_2', '100%', 700, "", "", "hide-codepen-jsfiddle") }}

+ +

Заключение

+ +

Прочитав эту статью, мы уверены, что вы согласитесь, что массивы кажутся довольно полезными; вы увидите, что они появляются повсюду в JavaScript, часто в сочетании с циклами, чтобы делать то же самое для каждого элемента массива. Мы научим вас всем полезным основам, которые нужно знать о циклах в следующем модуле, но пока вы должны себе похлопать и воспользоваться заслуженным перерывом; вы проработали все статьи в этом модуле!

+ +

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

+ +

Посмотрите также

+ + + +

{{PreviousMenuNext("Learn/JavaScript/Первые_шаги/Useful_string_methods", "Learn/JavaScript/Первые_шаги/Создатель_глуых_историй", "Learn/JavaScript/Первые_шаги")}}

+ +

В этом разделе

+ + diff --git a/files/ru/learn/javascript/first_steps/index.html b/files/ru/learn/javascript/first_steps/index.html new file mode 100644 index 0000000000..bd435e920f --- /dev/null +++ b/files/ru/learn/javascript/first_steps/index.html @@ -0,0 +1,56 @@ +--- +title: Первые шаги в JavaScript +slug: Learn/JavaScript/Первые_шаги +tags: + - JavaScript + - Массивы + - Новичкам +translation_of: Learn/JavaScript/First_steps +--- +
{{LearnSidebar}}
+ +

В нашем первом модуле, прежде чем перейти к практике написания кода на языке JavaScript, сначала мы дадим ответы на некоторые фундаментальные вопросы, а именно: "Что же такое JavaScript?", "Что он из себя представляет?" и "Что он может делать?". После этого мы внимательно рассмотрим некоторые из ключевых элементов, такие как переменные, строки, числа и массивы.

+ +

Предисловие

+ +

Вам не нужно иметь никаких предварительных знаний JavaScript чтобы приступить к этому модулю, но у вас должно быть некоторое представление о HTML и CSS. Рекомендуем ознакомиться со следующими материалами, прежде чем начинать знакомство с JavaScript:

+ + + +
+

Примечание:  Если Вы работаете на компьютере, планшете или другом устройстве, где нет возможности полноценно работать с файлами, можете использовать такие онлайн сервисы как  JSBin или Thimble, для запуска примеров кода. 

+
+ +

Руководства

+ +
+
Что такое JavaScript?
+
Добро пожаловать на курс начинающего JavaScript разработчика от MDN! В первой статье мы рассмотрим JavaScript в общем приближении и постараемся ответить на вопросы "Что такое JavaScript?" и "Для чего он предназначен?", и закрепим верное понимание его назначения. 
+
Первое погружение в JavaScript
+
Теперь, когда вы знаете кое-что о JavaScript, и что он может делать, мы предлагаем вам пройти интенсивный практический урок по базовой функциональности JavaScript. Здесь вы, шаг за шагом, создадите простую игру "Угадай число".
+
Что пошло не так? Устранение ошибок JavaScript
+
В процессе создания игры "Угадай число" из предыдущего урока, вы могли заметить что она не работала. Не стоит унывать - данная статья научит вас беречь собственные нервы, а так же, даст несколько советов о том как решать такие проблемы, искать и исправлять неполадки в JavaScript коде.
+
Хранение нужной вам информации - Переменные
+
После прочтения предыдущих статей вы должны знать что из себя представляет JavaScript, что он может, как взаимодействует с другими web технологиями, и каковы его основные особенности в общем приближении. В этой статье спустимся к самым основам языка и поработаем с Переменными.
+
Базовая математика в JavaScript — числа и операторы
+
Здесь мы обсуждаем математику в JavaScript - каким образом мы можем манипулировать числами и операторами для работы с ними.
+
Работа с текстом — строки в JavaScript
+
Теперь мы обратим своё внимание на строки - так называются кусочки текста в программировании. В этой статье мы рассмотрим то что действительно необходимо знать про строки в JavaScript: как создать строку, делать escape (экранирование) символов с помощью кавычек, и объединять их.
+
Полезные строковые методы
+
После того как мы рассмотрели основы работы со строками, давайте двинемся дальше и поговорим о том какие полезные операторы и методы существуют для строк, такие как вычисление длины, соединение и разделение строк, замена отдельных символов и многие другие. 
+
Массивы
+
В последней статье этого модуля мы рассмотрим массивы - изящный способ хранения различных наборов информации в имени всего одной переменной. Здесь мы поговорим о том почему это может быть полезным, рассмотрим как создать массив, получить, добавить или удалить элемент массива, и прочее.
+
+ +

Проверка полученных знаний

+ +

Предложенное тестовое задание проверит ваше понимание основ JavaScript, которые вы получили пройдя предложенные выше уроки. 

+ +
+
Генератор глупых историй
+
Вашим заданием будет применить на практике полученные знания и создать развлекательное приложение которое будет генерировать случайные нелепые истории.
+
diff --git a/files/ru/learn/javascript/first_steps/math/index.html b/files/ru/learn/javascript/first_steps/math/index.html new file mode 100644 index 0000000000..29ff9258bf --- /dev/null +++ b/files/ru/learn/javascript/first_steps/math/index.html @@ -0,0 +1,423 @@ +--- +title: Базовая математика в JavaScript — числа и операторы +slug: Learn/JavaScript/Первые_шаги/Math +tags: + - JavaScript + - Гайд + - Математика + - Начинающий + - Операторы + - Руководство + - Скриптинг + - Статья + - кодинг +translation_of: Learn/JavaScript/First_steps/Math +--- +
{{LearnSidebar}}
+ +
{{PreviousMenuNext("Learn/JavaScript/Первые_шаги/Variables", "Learn/JavaScript/Первые_шаги/Строки", "Learn/JavaScript/Первые_шаги")}}
+ +

В этой части курса мы обсуждаем математику в JavaScript — как мы можем использовать {{Glossary("Operator","operators")}} и другие функции, чтобы успешно манипулировать числами для выполнения наших задач.

+ + + + + + + + + + + + +
Необходимые условия:Базовая компьютерная грамотность, базовое понимание HTML и CSS, понимание того, что такое JavaScript.
Цель:Ознакомление с основами математики в JavaScript.
+ +

Все любят математику

+ +

Хорошо, может быть, не все. Некоторые из нас любят математику, некоторые из нас ненавидели математику с тех пор, как мы изучали таблицу умножения в школе, а некоторые из нас находятся где-то между ними. Но никто из нас не может отрицать, что математика является фундаментальной частью жизни, и мы не можем обойтись без нее. Это особенно актуально, когда мы учимся программировать на JavaScript (или на любом другом языке, если на то пошло) — большая часть того, что мы делаем, опирается на обработку числовых данных, вычисление новых значений и т.д. Так что не удивительно, что JavaScript имеет полнофункциональный набор математических функций.

+ +

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

+ +

Типы чисел

+ +

В программировании даже скромная система десятичных чисел, которую мы все так хорошо знаем, сложнее, чем вы думаете. Мы используем разные термины для описания различных типов десятичных чисел. Например:

+ + + +

У нас даже есть разные типы числовых систем:

+ + + +

Прежде чем взорвется ваш мозг, остановитесь прямо здесь и сейчас! 

+ +

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

+ +

Во-вторых, в отличие от некоторых других языков программирования, JavaScript имеет только один тип данных для чисел, как вы догадались это {{jsxref("Number")}}. Это означает, независимо от типа чисел, с которыми вы работаете в JavaScript, обрабатывать вы их будете точно так же.

+ +

Для меня всё — числа

+ +

Давайте быстро поиграем с некоторыми числами, чтобы снова познакомиться с основным синтаксисом, который нам нужен. Введите команды, перечисленные ниже, в вашу консоль (developer tools JavaScript console), или используйте простую встроенную консоль.

+ +
    +
  1. Прежде всего, давайте объявим пару переменных и инициализируем их целым числом и числом с плавающей точкой, соответственно, затем введите имена переменных обратно, чтобы проверить, что все в порядке: +
    var myInt = 5;
    +var myFloat = 6.667;
    +myInt;
    +myFloat;
    +
  2. +
  3. Числовые значения набираются без кавычек. Попробуйте объявить и инициализировать еще пару переменных, содержащих числа, прежде чем двигаться дальше.
  4. +
  5. Теперь давайте убедимся, что обе переменные содержат одинаковый тип данных. Для этого есть оператор {{jsxref("Operators/typeof", "typeof")}}, который позволяет проверить какой тип данных содержит в себе переменная. Введите две приведенные ниже строки: +
    typeof myInt;
    +typeof myFloat;
    + В обоих случаях вы должны получить "number" — это все упрощает, чем если бы разные числа имели разные типы данных, и нам приходилось иметь дело с ними по-разному.
  6. +
+ +

Арифметические операторы

+ +

Арифметические операторы — это основные операторы, которые мы используем для различных математических операций, например таких, как сложение или вычитание:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ОператорИмяФункцияПример
+СложениеОбъединение чисел в одно целое.6 + 9
-ВычитаниеВычитает правое число от левого.20 - 15
*УмножениеУмножает два числа вместе.3 * 7
/ДелениеДелит левое число на правое.10 / 5
%Модуль числа +

Возвращает значение остатка при делении первого числа на второе. Результат будет иметь тот же знак, что и первое число.

+
+

11 % 3 = 2 (поскольку число 3 вмещается три раза, остатком будет число 2)

+
**показатель степениВозводит базовое число в указанную степень, то есть количество базовых чисел, указанных экспонентой, умножается вместе. Впервые он был представлен в EcmaScript 2016.5 ** 5 (возвращает 3125, или как: 5*5*5*5*5)
+ +
+

Примечание: Иногда числа участвующие в математических операциях называют операндами ( {{Glossary("Operand", "operands")}} ).

+
+ +

Нам, вероятно, не нужно учить вас базовым математическим операциям, но мы хотели бы проверить ваше понимание синтаксиса. Попробуйте ввести приведенные ниже примеры в свою консоль (developer tools JavaScript console), или используйте встроенную консоль, с которой вы уже знакомы, чтобы ознакомиться с синтаксисом.

+ +
    +
  1. Для начала попробуйте ввести простые примеры, такие как: +
    10 + 7
    +9 * 8
    +60 % 3
    +
  2. +
  3. Вы также можете попробовать объявить переменные и присвоить им различные числа. Попробуйте вместо чисел использовать ранее объявленные переменные — переменные будут вести себя точно так же, как значения, которые они хранят. Например: +
    var num1 = 10;
    +var num2 = 50;
    +9 * num1;
    +num2 / num1;
    +
  4. +
  5. И напоследок, попробуйте ввести более сложные выражения, например: +
    5 + 10 * 3;
    +num2 % 9 * num1;
    +num2 + num1 / 8 + 2;
    +
  6. +
+ +

Некоторые примеры выше могут дать вам не тот результат, которого вы ожидали; приведенный ниже раздел может дать ответ на вопрос о том, почему.

+ +

Приоритет операторов

+ +

Давайте взглянем на последний пример сверху. Предположим, что num2 содержит значение 50 и num1 содержит значение 10 (как и было обозначено выше):

+ +
num2 + num1 / 8 + 2;
+ +

Будучи человеком, вы, вероятно, прочитаете это как "50 плюс 10 равно 60", затем "8 плюс 2 равно 10", и, наконец, "60 делить на 10 равно 6".

+ +

Но браузер видит это по-другому: "10 делить на 8 равно 1.25", затем "50 плюс 1.25 плюс 2 равно 53.25".

+ +

Это происходит из-за приоритета операторов - некоторые операторы будут применены перед другими в процесс вычисления суммы (в программировании ее называют выражением). Приоритет операторов в JavaScript ничем не отличается от приоритета арифметических операций, который вы изучали в школе - умножение и деление всегда выполняются первыми, затем сложение и вычитание (сумма всегда вычисляется слева направо).

+ +

Если вы хотите переопределить порядок выполнения операторов, вы можете окружить парными скобками часть выражения, которая должна быть выполнена первой. Для получения результата 6 вам следует сделать следующее:

+ +
(num2 + num1) / (8 + 2);
+ +

Результат этого выражения равен 6.

+ +
+

Заметка: полный список операторов JavaScript и приоритетов их выполнения можно найти по этой ссылке: Expressions and operators.

+
+ +

Операторы инкремента и декремента

+ +

Иногда вам захочется повторно добавить или вычесть единцу к/из значению числовой переменной. Это можно сделать с помощью оператора инкремента (++) и декремента (--). Мы использовали ++ в нашей игре "Угадай число" в статье первое погружение в JavaScript, где мы добавляли 1 к переменной guessCount, в которой хранилось значение количества попыток пользователя после каждого хода.

+ +
guessCount++;
+ +
+

Замечание: инкремент и декремент часто используются в циклах, о которых вы узнаете позже. Например, если вы захотите пройтись по списку цен и добавить к каждой налог с продаж, вам придется в цикле обойти каждую цену и провести необходимые вычисления для учета налога. Инкремент будет использован для перехода на новую ячейку списка при необходимости. У нас есть несложный пример реализации такого списка - попробуйте и взгляните на код чтобы посмотреть, сможете ли вы найти инкременты! Мы взглянем на циклы поближе позже по ходу курса.

+
+ +

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

+ +
3++;
+ +

Таким образом, вы можете применить инкремент только к существующим переменным:

+ +
var num1 = 4;
+num1++;
+ +

Так, вторая странность! Если вы сделаете это, вы получите значение 4 - бразуер возвращает текущее число, после чего применяет к нему оператор инкремента. Вы можете удостовериться в том, что инкремент был применен, узнав значение переменной еще раз:

+ +
num1;
+ +

То же самое для --: попробуйте пример ниже

+ +
var num2 = 6;
+num2--;
+num2;
+ +
+

Замечание: вы можете заставить делать это в другом порядке - применить инкремент/декремент и только потом вернуть значение. Для этого необходимо записать оператор слева от переменной, а не справа. Попробуйте пример сверху еще раз, но в этот раз используйте ++num1 и --num2

+
+ +

Операторы присваивания

+ +

Операторы присваивания - операторы, которые присваивают значение переменным. Мы уже много раз использовали самый простой из них, =, он просто приравнивает значение переменной слева к значению справа:

+ +
var x = 3; // x содержит значение 3
+var y = 4; // y содержит значение 4
+x = y; // x теперь содержит значение y (x == 4)
+ +

Однако есть еще несколько сложных конструкций, которые позволяют делать ваш код более простым и аккуратным. Наиболее часто используемые перечислены ниже:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
OperatorNamePurposeExampleShortcut for
+=Присваивание сложенияПрибавляет значение справа к переменной слева и возвращает новое значение переменнойx = 3;
+ x += 4;
x = 3;
+ x = x + 4;
-=Присваивание вычитанияВычитает значение справа из переменной слева и возвращает новое зачение переменнойx = 6;
+ x -= 3;
x = 6;
+ x = x - 3;
*= +

Присваивание умножения

+
Умножает переменную слева на значение справа и возвращает новое зачение переменнойx = 2;
+ x *= 3;
x = 2;
+ x = x * 3;
/=Присваивание деленияДелит переменную слева на значение справа и возвращает новое зачение переменнойx = 10;
+ x /= 5;
x = 10;
+ x = x / 5;
+ +

Попробуйте использовать такие конструкции, что понять, как они работают. Сможете ли вы определить значение до того, как напишите вторую строку?

+ +

Замьтете, что значение справа может быть как числом (константой), так и переменной, например:

+ +
var x = 3; // x содержит значение 3
+var y = 4; // y содержит значение 4
+x *= y; // x содержит значение 12
+ +
+

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

+
+ +

Активное обучение: меняем размеры коробки

+ +

В этом упражнении вы будете пользоваться числами и операторами для работы с размерами коробки. Коробка рисуется с помощью API браузера, которое назывется Canvas API. Вам не следует беспокоиться о том, как это работает - просто сосредоточьтесь на математике. Ширина и высота коробки (в пикселях) определяются переменными x и y, которые изначально равны 50.

+ +

{{EmbedGHLiveSample("learning-area/javascript/introduction-to-js-1/maths/editable_canvas.html", '100%', 520)}}

+ +

Открыть в новом окне

+ +

В коде сверху, который вы можете изменять, под комментарием есть две строчки, с помощью которых вы можете увеличивать/уменьшать размеры коробки. Мы хотим, чтобы вы выполнили несколько заданий:

+ + + +

Не расстраивайтесть, если вы не поняли код сверху. Нажмите кнопку Reset для запуска программы снова. Если вы смогли ответить верно на все вопросы, попробуйте поэкспериментировать с кодом еще (или, например, предложить друзьям несколько заданий).

+ +

Операторы сравнения

+ +

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

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ОператорИмяНазначениеПример
===Строгое равенствоПроверяет левое и правое значения на идентичность5 === 2 + 4
!==Строгое неравенствоПроверяет левое и правое значения на неидентичность5 !== 2 + 3
<МеньшеПроверяет, меньше ли левое значение правого10 < 6
>БольшеПроверяет, больше ли левое значение правого10 > 20
<=Меньше или равноПроверят, меньше ли левое значение правому (или равно ему)3 <= 2
>=Больше или равноПроверят, больше ли левое значение левого (или равно ему)5 >= 4
+ +
+

Заметка: вы можете заметить, что некоторые люди используют == и != в их программах для сравнения на равенство и неравенство — это валидные JavaScript-операторы, но они отличаются от ===/!== — первая пара проверяет на равенство/неравенство значений, не рассматривая их типы. Вторая пара - строгая версия первой, которая проверяет типы операндов. При использовании строгой версии выявляется больше ошибок, поэтому мы рекомендуем использовать именно ее.

+
+ +

Если вы попробуете использовать эти операторы в консоли, вы увидите, что все они возвращают значения true/false — о типе данных boolean мы писали в прошлой статье. С их помощью мы можем принимать решения в нашей программе, например:

+ + + +

Мы взглянем на то, как реализовать такую логику после знакомства с условными выражениями в следующей статье. Сейчас мы рассмотрим небольшой пример:

+ +
<button>Запустить машину</button>
+<p>Машина остановлена</p>
+
+ +
var btn = document.querySelector('button');
+var txt = document.querySelector('p');
+
+btn.addEventListener('click', updateBtn);
+
+function updateBtn() {
+  if (btn.textContent === 'Start machine') {
+    btn.textContent = 'Stop machine';
+    txt.textContent = 'The machine has started!';
+  } else {
+    btn.textContent = 'Start machine';
+    txt.textContent = 'The machine id stopped.';
+  }
+}
+ +

{{EmbedGHLiveSample("learning-area/javascript/introduction-to-js-1/maths/conditional.html", '100%', 100)}}

+ +

Открыть в новом окне

+ +

Мы использовали оператор равенства внутри функции updateBtn(). В этом случае мы не проверяем пару математических выражений на равенcтво значений — мы просто смотрим, является ли текст на кнопке определенной строкой — что по сути является тем же самым. Если кнопка при нажатии содержит "Start machine", мы меняем содержимое метки на "Stop machine" и обновляем метку. Если же текст кнопки — "Stop machine", при нажатии мы возвращем все обратно. 

+ +
+

Заметка: Такой элемент управления, который переключается между двумя состояниями, обычно называется тумблером. Он переключается между одним состоянием и другим: свет включен, свет выключен и т. д.

+
+ +

Итого

+ +

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

+ +

В следующей статье мы изучим текст и то, как мы работаем с ним в JavaScript.

+ +
+

Примечание: если вам хочется узнать подробнее о том, как математика реализуется в JavaScript, вы можете посмотерть главный раздел JavaScript MDN. Статьи Числа и даты и Выражения и операторы - хороший вариант для начала.

+
+ +

{{PreviousMenuNext("Learn/JavaScript/Первые_шаги/Variables", "Learn/JavaScript/Первые_шаги/Строки", "Learn/JavaScript/Первые_шаги")}}

diff --git a/files/ru/learn/javascript/first_steps/silly_story_generator/index.html b/files/ru/learn/javascript/first_steps/silly_story_generator/index.html new file mode 100644 index 0000000000..139e478847 --- /dev/null +++ b/files/ru/learn/javascript/first_steps/silly_story_generator/index.html @@ -0,0 +1,148 @@ +--- +title: Генератор глупых историй +slug: Learn/JavaScript/Первые_шаги/Создатель_глуых_историй +tags: + - JavaScript + - Задание + - Изучение + - Испытание + - Массивы + - НаписаниеКода + - НачальныйУровень + - Операторы + - Переменные + - Проверка + - Числа +translation_of: Learn/JavaScript/First_steps/Silly_story_generator +--- +
{{LearnSidebar}}
+ +
{{PreviousMenu("Learn/JavaScript/Первые_шаги/Arrays", "Learn/JavaScript/Первые_шаги")}}
+ +

В этом испытании вам будет нужно, используя знания, полученные в статьях этого модуля, применить их для создания забавного приложения, создающего случайные глупые истории. Удачно повеселиться!

+ + + + + + + + + + + + +
Требования:Перед началом выполнения этого испытания вам следует проработать все статьи в этом модуле.
Задача:Протестировать понимание основ языка JavaScript, таких как переменные, числа, операторы, строки и массивы.
+ +

Начальная точка

+ +

Для начала испытания вам следует:

+ + + +
+

Замечание:  Так же вы можете использовать такие сайты как  JSBin или Thimble для выполнения вашего испытания. Вы можете вставить HTML, CSS и JavaScript в один из этих онлайн редакторов. Если онлайн редактор, который вы используете, не имеет отдельного окна для JavaScript - не стесняйтесь вставить все скрипты в <script> элемент внутри  HTML страницы.

+
+ +

Краткое описание проекта

+ +

Вам предоставили некоторый необработанный HTML/CSS, несколько текстовых строк и функций JavaScript; вам необходимо написать необходимый JavaScript код, чтобы превратить это в рабочую программу, которая выполняет следующие действия:

+ + + +

Следующий скриншот показывает пример того, что должна выводить законченная программа:

+ +

+ +

Чтобы вы больше поняли идею опробуйте готовый пример (не заглядывая в исходный код!)

+ +

Шаги к цели

+ +

Следующие разделы описывают, что вам нужно будет сделать.

+ +

Начальная подготовка:

+ +
    +
  1. Создайте новый файл под названием main.js в той же папке, что и index.html.
  2. +
  3. Подключите данный JavaScript документ в ваш HTML файл с помощью {{htmlelement("script")}} элемента привязки main.js. Разместите его прямо перед закрывающимся </body> тегом.
  4. +
+ +

Задайте переменные и функции:

+ +
    +
  1. В исходном текстовом документе скопируйте весь код под заголовком "1. COMPLETE VARIABLE AND FUNCTION DEFINITIONS" и вставьте в начало файла main.js. Это даст вам три переменные, ссылающиеся на текстовое поле "Enter custom name" (customName),  кнопку "Generate random story" (randomize), и элемент снизу HTML страницы, куда будет помещена сама история {{htmlelement("p")}} (story), соответственно. Также у вас должна быть функцияrandomValueFromArray(), котрая принимает массив и случайным образом возвращает оттуда один из элементов.
  2. +
  3. Теперь взгляните на второй параграф исходного документа — "2. RAW TEXT STRINGS". Он содержит строки текста, которые будут использоваться как входные данные вашей программы. Вам следует поместить их внутрь переменных в файле main.js: +
      +
    1. Сохраните первую большую строку текста в переменную storyText.
    2. +
    3. Сохраните первый блок из трех строк как массив, назвав его insertX.
    4. +
    5. Сохраните второй блок из трех строк как массив, назвав его insertY.
    6. +
    7. Сохраните третий блок из трех строк как массив, назвав его insertZ.
    8. +
    +
  4. +
+ +

Создание обработчика событий и неполной функции:

+ +
    +
  1. Теперь возвращаемся к исходному текстовому файлу.
  2. +
  3. Скопируйте код под заголовком "3. EVENT LISTENER AND PARTIAL FUNCTION DEFINITION" и вставте его в конец файла main.js. Это: +
      +
    • Добавит обработчик события кликанья в переменную randomize,  Так что, когда кнопка будет нажата -  функция result() запустится.
    • +
    • Добавляет в код частично завершенную функцию result(). В течении оставшейся части испытания вам предстоит, заполняя строчки внутри этой функции, завершить ее и заставить работать должным образом.
    • +
    +
  4. +
+ +

Завершение функции result():

+ +
    +
  1. Создайте новую переменную newStory и установите ее значение равным storyText. Это необходимо, чтобы мы могли создавать новую случайную историю каждый раз, когда нажимается кнопка, и функция запускается. Если бы мы внесли изменения непосредственно в storyText, мы могли бы генерировать новую историю только один раз.
  2. +
  3. Создайте три новые переменные, называемые xItem, yItem и zItem, и сделайте их равными результату вызова randomValueFromArray() на трех ваших массивах (результат в каждом случае будет случайным элементом из каждого массива, на который он вызывается). Например, вы можете вызвать функцию и получить ее, чтобы вернуть одну случайную строку из insertX, записав randomValueFromArray (insertX).
  4. +
  5. Затем мы хотим заменить три заполнителя строки newStory - :insertx:, :inserty :  и :insertz: - со строками, хранящимися в xItem, yItem и zItem. Здесь вам поможет определенный строковый метод - в каждом случае сделать вызов метода равным newStory, при этом каждый раз, когда он вызывается, newStory делается равным самому себе, но с выполненными заменами. Поэтому каждый раз, когда нажимается кнопка, эти заполнители заменяются случайной строкой. Подсказка: рассматриваемый метод заменяет только первый экземпляр найденной подстроки, поэтому вам, возможно, придется сделать один из вызовов дважды.
  6. +
  7. Внутри первого блока if добавьте другой метод замены строки, чтобы заменить имя «Боб», найденное в строке newStory, с помощью переменной name. В этом блоке мы говорим: «Если значение введено в текстовый ввод customName, замените Боба в истории этим пользовательским именем».
  8. +
  9. Внутри второго блока if мы проверяем, была ли выбрана радиокнопка uk. Если это так, мы хотим преобразовать значения веса и температуры в историю из фунтов и Фаренгейта в метры и по Цельсию. Что вам нужно сделать, так это: +
      +
    1. Посмотрите формулу преобразования фунтов в стоуны и Фаренгейта в по Цельсию.
    2. +
    3. Внутри линии, которая определяет weight переменную, замените 300 на расчет, который преобразует 300 фунтов в стоуны. Добавьте 'stone' в конце результата общего вызова Math.round().
    4. +
    5. Внутри линии, определяющей temperature переменную, замените 94 на расчет, который преобразует 94 градуса по Фаренгейту в по Цельсию. Добавьте 'centigrade' в конце результата общего вызова Math.round().
    6. +
    7. Просто под двумя определениями переменных добавьте еще две строки замены строк, которые заменяют «94 farenheit» на содержимое переменной temperature и«300  pounds» на содержимое weight переменной.
    8. +
    +
  10. +
  11. Наконец, в предпоследней строке функции сделайте свойство textContent переменной story (которая ссылается на абзац) равным newStory.
  12. +
+ +

Советы и подсказки

+ + + +

Оценка и помощь

+ +

Если вы хотите, чтобы ваша работа была оценена, или застряли и хотите обратиться за помощью:

+ +
    +
  1. Разместите свою работу в онлайн-редакторе, таком как CodePen, jsFiddle или Glitch.
  2. +
  3. Напишите сообщение с просьбой об оценке и / или помощи на форуме MDN Discourse. Добавьте тег «learning» к своему сообщению, чтобы мы могли легче его найти. Ваш пост должен включать: +
      +
    • Описательное название, такое как «Требуется оценка для генератора глупых историй».
    • +
    • Подробная информация о том, что вы хотели бы, чтобы мы делали, например, что вы уже пробовали, если вы застряли и нуждаетесь в помощи.
    • +
    • Ссылка на пример, который вы хотите оценить или нуждаетесь в помощи, в онлайн-редакторе. Это хорошая практика - очень сложно помочь кому-то с проблемой кодирования, если вы не видите его код.
    • +
    • Ссылка на актуальную задачу или страницу оценки, чтобы мы могли найти вопрос, с которым вы хотите помочь.
    • +
    +
  4. +
+ +

{{PreviousMenu("Learn/JavaScript/Первые_шаги/Arrays", "Learn/JavaScript/Первые_шаги")}}

diff --git a/files/ru/learn/javascript/first_steps/strings/index.html b/files/ru/learn/javascript/first_steps/strings/index.html new file mode 100644 index 0000000000..583e29182e --- /dev/null +++ b/files/ru/learn/javascript/first_steps/strings/index.html @@ -0,0 +1,284 @@ +--- +title: Работа с текстом — строки в JavaScript +slug: Learn/JavaScript/Первые_шаги/Строки +translation_of: Learn/JavaScript/First_steps/Strings +--- +
{{LearnSidebar}}
+ +
{{PreviousMenuNext("Learn/JavaScript/Первые_шаги/Math", "Learn/JavaScript/Первые_шаги/Useful_string_methods", "Learn/JavaScript/Первые_шаги")}}
+ +

Теперь мы обратим внимание на строки — в программировании так называют части текста. В этой статье мы рассмотрим все распростанённые вещи, которые вы должны действительно знать о строках при изучении JavaScript, например, создание строк, экранирование кавычек в строках и объединение строк вместе.

+ + + + + + + + + + + + +
Необходимые навыки:Базовая компьютерная грамотность, базовое понимание HTML и CSS, понимание что такое JavaScript.
Цель:Знакомство с основами строк в JavaScript.
+ +

Сила слов

+ +

Слова очень важны для людей это основа нашего общения. Интернет представляет собой преимущественно текстовую среду, предназначенную для того что бы люди общались и делились информацией, поэтому нам полезно иметь контроль над словами, которые появляются в нем. {{glossary ("HTML")}} предоставляет визуальную и смысловую структуру для нашего текста, {{glossary ("CSS")}} позволяет нам стилизовать его, а JavaScript содержит ряд функций для управления строками, создания пользовательских приветственных сообщений, при необходимости отображая нужные текстовые метки, сортируя элементы в желаемом порядке и многое другое.

+ +

Практически во всех программах, которые мы показали вам на данный момент,  были задействованы некоторые манипуляции со строками.

+ +

Строки — основы

+ +

С первого взгляда строки обрабатываются аналогично числам, но если копнуть глубже, вы увидите некоторые заметные отличия. Давайте начнем с ввода некоторых основных строк в консоль, чтобы ознакомиться с ними. Мы предоставили одну ниже (вы также можете открыть эту консоль в отдельной вкладке или окне или использовать консоль разработчика браузера, если хотите).

+ + + +

{{ EmbedLiveSample('Hidden_code', '100%', 300) }}

+ +

Создание строки

+ +
    +
  1. Для начала введите следующие строки: +
    var string = 'The revolution will not be televised.';
    +string;
    +
  2. +
  3. Как и в случае с числами, мы объявляем переменную, инициализируя ее строковым значением, а затем возвращаем значение. Единственное различие здесь в том, что при написании строки вам нужно окружить значение кавычками. 
  4. +
  5. Если вы не сделаете этого или пропустите одну из кавычек, вы получите сообщение об ошибке. Попробуйте ввести следующие строки: +
    var badString = This is a test;
    +var badString = 'This is a test;
    +var badString = This is a test';
    + Эти строки не работают, потому что любая текстовая строка без кавычек считается именем переменной, именем свойства, зарезервированным словом или чем-то подобным. Если браузер не может найти его, возникает ошибка (например, «missing, before statement»). Если браузер может видеть, где начинается строка, но не может найти конец строки, как указано во 2-й строке, она жалуется на ошибку (с «unterminated string literal»). Если ваша программа выявляет такие ошибки, вернитесь назад и проверьте все свои строки, чтобы убедиться, что у вас нет пропущенных кавычек.
  6. +
  7. Следующий код будет выполнен только в том случае, если ранее была объявлена переменная string — убедитесь сами: +
    var badString = string;
    +badString;
    + В настоящее время строка badString имеет то же значение, что и строка string.
  8. +
+ +

Одиночные кавычки vs. Двойные кавычки

+ +
    +
  1. В JavaScript вы можете выбрать одинарные кавычки или двойные кавычки, чтобы обернуть ваши строки. Оба варианта будут работать нормально: +
    var sgl = 'Single quotes.';
    +var dbl = "Double quotes";
    +sgl;
    +dbl;
    +
  2. +
  3. Существует очень мало различий между одиночными и двойными кавычками, и решение какие из них использовать в коде остается на ваше усмотрение. Однако вы должны выбрать один вариант и придерживаться его, иначе ваш код может выдать ошибку, особенно если вы используете разные кавычки в одной строке! Ниже приведен пример: +
    var badQuotes = 'What on earth?";
    +
  4. +
  5. Браузер будет считать, что строка не была закрыта, потому что в строке может появиться другой тип цитаты, который вы не используете, чтобы хранить ваши строки в переменных. Из примера можно понять, о чем идет речь (в коде ошибок нет): +
    var sglDbl = 'Would you eat a "fish supper"?';
    +var dblSgl = "I'm feeling blue.";
    +sglDbl;
    +dblSgl;
    +
  6. +
  7. Однако вы не можете включить один и тот же знак кавычки внутри строки, если он используется для их хранения. Ниже приведена ошибка, браузер ошибочно определяет место, где строка кончается: +
    var bigmouth = 'I've got no right to take my place...';
    + Что приводит нас к следующей теме.
  8. +
+ +

Экранирование кавычек в строках

+ +

Чтобы исправить нашу предыдущую строку кода, нам нужно дать понять браузеру, что кавычка в середине строки не является меткой ее конца. Экранирование символов означает, что мы делаем что-то с ними, чтобы убедиться, что они распознаются как текст, а не часть кода. В JavaScript мы делаем это, помещая обратную косую черту непосредственно перед символом. Введите эти строки:

+ +
var bigmouth = 'I\'ve got no right to take my place...';
+bigmouth;
+ +

Так лучше. Таким же образом можно экранировать и другие символы, например "\. Кроме того существуют специальные коды. Для дополнительной информации см. Escape notation.

+ +

Конкатенация строк

+ +
    +
  1. Конкатенация — это новомодное программистское слово, которое означает «объединить». Объединение строк в JavaScript использует оператор плюс (+), тот же, который мы используем для сложения чисел, но в этом контексте он делает кое-что другое. Попробуем пример в нашей консоли.
  2. +
  3. +
    var one = 'Hello, ';
    +var two = 'how are you?';
    +var joined = one + two;
    +joined;
    + Результат этой программы - это переменная joined, содержащая значение "Hello, how are you?".
  4. +
  5. В последнем случае мы просто объединим две строки вместе, но на самом деле, вы можете объединить столько строк, сколько хотите, до тех пор, пока вы ставите + между ними. Попробуйте это: +
    var multiple = one + one + one + one + two;
    +multiple;
    +
  6. +
  7. Вы также можете использовать сочетание переменных и фактических строк. Попробуйте это: +
    var response = one + 'I am fine — ' + two;
    +response;
    +
  8. +
+ +
+

Примечание: Когда вы вводите фактическую строку в свой код, заключенную в одинарные или двойные кавычки, она называется строковым литералом.

+
+ +

Конкатенация строк в контексте

+ +

Давайте посмотрим на конкатенацию строк в действии — вот пример из предыдущего курса:

+ +
<button>Press me</button>
+ +
var button = document.querySelector('button');
+
+button.onclick = function() {
+  var name = prompt('What is your name?');
+  alert('Hello ' + name + ', nice to see you!');
+}
+ +

{{ EmbedLiveSample('Concatenation_in_context', '100%', 50) }}

+ +

Здесь мы используем функцию {{domxref ("Window.prompt ()", "Window.prompt ()")}} в строке 4, которая просит пользователя ответить на вопрос через всплывающее диалоговое окно, а затем сохраняет введенный текст внутри заданной переменной — в этом случае name. Затем мы используем функцию {{domxref ("Window.alert ()", "Window.alert ()")}} в строке 5 для отображения другого всплывающего окна, содержащего строку, которую мы собрали из двух строковых литералов и переменной name.

+ +

Числа vs. строки

+ +
    +
  1. Итак, что происходит, когда мы пытаемся добавить (или конкатенировать) строку и число? Попробуем это в нашей консоли: +
    'Front ' + 242;
    +
    + Вы можете ожидать, что это вызовет ошибку, но все работает отлично. Попытка представить строку как число на самом деле не имеет смысла, но число как строку — имеет, поэтому браузер довольно умно преобразует число в строку и объединяет две строки вместе.
  2. +
  3. Вы даже можете сделать это с двумя числами, вы можете заставить число стать строкой, обернув ее в кавычки. Попробуйте следующее (мы используем оператор typeof для того, чтобы установить является ли переменная числом или строкой): +
    var myDate = '19' + '67';
    +typeof myDate;
    +
  4. +
  5. Если у вас есть числовая переменная, которую вы хотите преобразовать в строчную без внесения каких-либо иных изменений или строковую переменную, которую вы хотите преобразовать в число, вы можете использовать следующие две конструкции: +
      +
    • Объект {{jsxref ("Number")}} преобразует всё переданное в него в число, если это возможно. Попробуйте следующее: +
      var myString = '123';
      +var myNum = Number(myString);
      +typeof myNum;
      +
    • +
    • С другой стороны, каждое число имеет метод, называемый toString(), который преобразует его в эквивалентную строку. Попробуй это: +
      var myNum = 123;
      +var myString = myNum.toString();
      +typeof myString;
      +
    • +
    + Эти конструкции могут быть действительно полезны в некоторых ситуациях. Например, если пользователь вводит число в текстовое поле формы, данные будут распознаны как строка. Однако, если вы хотите добавить это число к чему-то, вам понадобится его значение, поэтому вы можете передать его через Number(), чтобы справиться с этим. Именно это мы сделали в нашей Number Guessing Game,  в строке 61.
  6. +
+ +

Заключение

+ +

Итак, это основы строк, используемых в JavaScript. В следующей статье мы рассмотрим некоторые из встроенных методов, доступных для строк в JavaScript и то, как мы можем использовать их для управления нашими строками только в той форме, в которой мы хотим.

+ +
{{PreviousMenuNext("Learn/JavaScript/Первые_шаги/Math", "Learn/JavaScript/Первые_шаги/Useful_string_methods", "Learn/JavaScript/Первые_шаги")}}
+ +

В этом модуле

+ + diff --git a/files/ru/learn/javascript/first_steps/useful_string_methods/index.html b/files/ru/learn/javascript/first_steps/useful_string_methods/index.html new file mode 100644 index 0000000000..1318ee39ac --- /dev/null +++ b/files/ru/learn/javascript/first_steps/useful_string_methods/index.html @@ -0,0 +1,723 @@ +--- +title: Полезные строковые методы +slug: Learn/JavaScript/Первые_шаги/Useful_string_methods +tags: + - Beginner + - CodingScripting + - JavaScript + - Learn + - length + - lower + - replace + - split + - upper + - Обучение + - Регистр +translation_of: Learn/JavaScript/First_steps/Useful_string_methods +--- +

{{LearnSidebar}}

+ +

{{PreviousMenuNext("Learn/JavaScript/Первые_шаги/Строки", "Learn/JavaScript/Первые_шаги/Arrays", "Learn/JavaScript/Первые_шаги")}}

+ +

Мы рассмотрели базовые понятия, касающиеся строк. Давайте пойдем дальше и рассмотрим, какие полезные операции мы можем выполнять со строками, используя встроенные функции, такие как поиск длины текстовой строки, объединение и разделение строк, замена одного символа из строки другим и многое другое.

+ + + + + + + + + + + + +
Необходимые знания:Базовая компьютерная грамотность, базовое понимание HTML и CSS, понимание того, что такое JavaScript.
Задача:Понять, что строки являются объектами, и изучить, как использовать некоторые из основных методов, доступных для этих объектов для управления строками.
+ +

Строки как объекты

+ +

Почти всё в JavaScript является объектами. Когда вы создаете строку, например: 

+ +
let string = 'This is my string';
+ +

ваша переменная становится строковым объектом, и, как результат, ей доступно множество свойств и методов. Можете убедиться в этом, перейдя на страницу {{jsxref ("String")}} и просмотрев на ней список свойств и методов!

+ +

Только не волнуйтесь! Большинство из них вам не нужно знать сейчас на ранней стадии вашего обучения. Но некоторые из них вы, возможно, будете использовать довольно часто. Их мы и рассмотрим.

+ +

Приведем несколько примеров в новой консоли. Ниже вы можете открыть данную консоль в отдельной вкладке или окне, или, если вам так удобней, использовать браузер консоли разработчика.

+ + + +

{{ EmbedLiveSample('Hidden_code', '100%', 300, "", "", "hide-codepen-jsfiddle") }}

+ +

Поиск длины строки

+ +

Это легко — вы просто используете свойство {{jsxref ("String.prototype.length", "length")}}. Попробуйте ввести следующие строки:

+ +
let browserType = 'mozilla';
+browserType.length;
+ +

Результатом должно быть число 7, потому что слово «mozilla» состоит из 7 символов. Это свойство можно применить, например, если вы захотите найти длины серии имен, чтобы их можно было отображать по порядку длины или сообщить пользователю, что имя пользователя, которое он ввёл в поле формы, слишком длинное, если оно превышает определённую длину.

+ +

Получение определенного строкового символа

+ +

Вы можете вернуть любой символ внутри строки, используя обозначение в квадратных скобках. Это означает, что вы добавляете квадратные скобки ([ ]) в конце вашего имени переменной. В квадратных скобках вы указываете номер символа, который хотите вернуть. Например, чтобы получить первую букву, нужно написать:

+ +
browserType[0];
+ +

Компьютеры считают от 0, а не 1! Чтобы получить последний символ любой строки, мы могли бы использовать следующую строку, объединив эту технику с свойством length:

+ +
 browserType[browserType.length-1];
+ +

Длина слова «mozilla» равна 7, но, поскольку счет начинается с 0, позиция последнего символа равна 6, поэтому нам нужна length-1. Такой способ можно использовать, чтобы найти первую букву ряда строк и упорядочить их по алфавиту.

+ +

Поиск подстроки внутри строки и ее извлечение

+ +
    +
  1. Иногда вам может понадобиться выяснить, присутствует ли меньшая строка внутри большей (обычно мы говорим, что внутри строки есть подстрока). Это можно сделать с помощью метода {{jsxref ("String.prototype.indexOf ()", "indexOf ()")}}, который принимает одну {{glossary ("parameter")}} - подстроку, которую вы хотите найти. Введите: +
    browserType.indexOf('zilla');
    + Это дает нам результат 2, потому что подстрока «zilla» начинается в позиции 2 ("m" — 0, "o" — 1, "z" — 2) внутри «mozilla». Такой код можно использовать для фильтрации строк. Например, если есть список веб-адресов и вы хотите распечатать только те, которые содержат «mozilla».
  2. +
+ +
    +
  1. Это можно сделать по-другому, что, возможно, ещё более эффективно. Введите следующее: +
    browserType.indexOf('vanilla');
    + Это должно дать вам результат -1. Такое значение возвращается, когда подстрока, в данном случае «vanilla», не найдена в основной строке.
    +
    + Вы можете использовать это, чтобы найти все экземпляры строк, которые не содержат подстроку «mozilla» (для обратного эффекта, используйте оператор отрицания): +
    if(browserType.indexOf('mozilla') === -1) {
    +  // сделать что-то, если 'mozilla'
    +  // не является частью этой строки
    +}
    +
    +if(browserType.indexOf('mozilla') !== -1) {
    +  // сделать что-то, если 'mozilla'
    +  // является частью этой строки
    +}
    +
  2. +
  3. Когда вы знаете, где подстрока начинается внутри строки, и вы знаете, на каком символе вы хотите её завершить, можно использовать {{jsxref ("String.prototype.slice ()", "slice ()")}}  для извлечения. Попробуйте следующее: +
    browserType.slice(0,3);
    + Это возвращает «moz». Первым параметром является позиция символа, с которого начинается извлечение, а второй параметр — позиция последнего символа, перед которым нужно отсечь строку. Таким образом, срез происходит с первой позиции, вплоть до последней позиции, но не включая её (помним, что счет идёт с 0, а не с 1). Также можно сказать, что второй параметр равен длине возвращаемой строки.
  4. +
  5. Кроме того, если вы знаете, что хотите извлечь все остальные символы в строке после определённого символа, вам не нужно включать второй параметр. Достаточно включить только положение символа, с которого вы хотите начать извлечение оставшихся символов в строке. Введите: +
    browserType.slice(2);
    + Этот код возвращает «zilla» — это потому, что позиция символа 2 — это буква z, и поскольку вы не указали второй параметр, возвращаемая подстрока состояла из всех остальных символов в строке.
  6. +
+ +
+

Примечание: второй параметр slice() не обязателен: если вы его не включите в код, обрезание закончится на конце оригинальной строки. Есть и другие варианты; изучите страницу {{jsxref ("String.prototype.slice ()", "slice ()")}}, чтобы узнать, что ещё вы можете узнать.

+
+ +

Изменение регистра

+ +

Строковые методы {{jsxref ("String.prototype.toLowerCase ()", "toLowerCase ()")}} и {{jsxref ("String.prototype.toUpperCase ()", "toUpperCase ()")}} преобразовывают все символы в строке в нижний или верхний регистр соответственно. Этот способ можно применить, если вы хотите нормализовать все введенные пользователем данные перед их сохранением в базе данных.

+ +

Попробуем ввести следующие строки, чтобы узнать, что происходит:

+ +
var radData = 'My NaMe Is MuD';
+radData.toLowerCase();
+radData.toUpperCase();
+ +

Обновление частей строки

+ +

Вы можете заменить одну подстроку внутри строки на другую подстроку, используя метод {{jsxref ("String.prototype.replace ()", "replace ()")}}. Этот метод работает очень просто на базовом уровне, но у него есть некоторые продвинутые свойства, но мы пока не будем вдаваться в детали.

+ +

Он принимает два параметра — строку, которую вы хотите заменить, и строку, которую вы хотите вставить вместо заменяемой. Попробуйте этот пример:

+ +
browserType.replace('moz','van');
+ +

Обратите внимание, что для фактического получения обновленного значения, отраженного в переменной browserType в реальной программе, вам нужно будет установить значение переменной в результате операции; он не просто обновляет значение подстроки автоматически. Таким образом, вы должны были бы написать это: browserType = browserType.replace('moz','van');

+ +

Активные примеры обучения

+ +

В этом разделе мы дадим вам попробовать набить руку и вместе напишем код строковой манипуляции. В каждом упражнении ниже у нас есть массив строк и цикл, который обрабатывает каждое значение в массиве и отображает его в маркированном списке. Вам не нужно понимать массивы или циклы прямо сейчас — это будет объяснено в будущих статьях. Все, что вам нужно сделать в каждом случае, — написать код, который выводит строки в том формате, в котором мы предлагаем.

+ +

В каждом примере есть кнопка Сбросить, которую вы можете использовать для сброса кода, если вы допустили ошибку и не можете заставить его работать снова, а кнопку Показать решение вы можете нажать, чтобы увидеть потенциальный ответ, если вы действительно застрянете на решении.

+ +

Фильтрация приветственных сообщений

+ +

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

+ +
    +
  1. Сначала подумайте о том, как вы можете проверить, является ли сообщение в каждом случае рождественским сообщением. Какая строка присутствует во всех этих сообщениях и какой метод вы можете использовать для проверки?
  2. +
  3. Затем вам нужно будет написать условный тест операнд1 оператор операнд2. Соответствует ли результат слева результату справа? Или в этом случае вызов метода слева возвращает результат справа?
  4. +
  5. Подсказка. В этом случае, вероятно, полезнее проверить, не является ли часть строки не равной (!==) определенному результату.
  6. +
+ + + +

{{ EmbedLiveSample('Playable_code', '100%', 590, "", "", "hide-codepen-jsfiddle") }}

+ +

Исправление регистра (размера букв в тексте—прим. пер.)

+ +

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

+ +
    +
  1. Преобразуйте всю строку, содержащуюся в переменной input, в нижний регистр и сохраните ее в новой переменной.
  2. +
  3. Возьмите первую букву строки в этой новой переменной и сохраните ее в другой переменной.
  4. +
  5. Используя эту последнюю переменную в качестве подстроки, замените первую букву строчной строки первой буквой строчной строки, измененной на верхний регистр. Сохраните результат этой процедуры замены в другой новой переменной.
  6. +
  7. Измените значение переменной result на равную конечному результату (не input).
  8. +
+ +
+

Примечание: Подсказка — параметры строковых методов не обязательно должны быть строковыми литералами; они также могут быть переменными или даже переменными с вызываемым ими методом.

+
+ + + +

{{ EmbedLiveSample('Playable_code_2', '100%', 550, "", "", "hide-codepen-jsfiddle") }}

+ +

Создание новых строк из старых частей

+ +

В этом последнем упражнении массив содержит кучу строк, содержащих информацию о железнодорожных станциях на севере Англии. Строки представляют собой элементы данных, которые содержат трехбуквенный код станции, за которым следуют некоторые машиночитаемые данные, за которыми следует точка с запятой, а затем название станции, пригодное для чтения человеком. Например:

+ +
MAN675847583748sjt567654;Manchester Piccadilly
+ +

Мы хотим извлечь код станции и имя и поместить их в строку со следующей структурой:

+ +
MAN: Manchester Piccadilly
+ +

Мы бы рекоменовали реализовать это следующим образом:

+ +
    +
  1. Извлеките трехбуквенный код станции и сохраните его в новой переменной.
  2. +
  3. Найдите номер символьного номера точки с запятой.
  4. +
  5. Извлеките название для чтения человеком, используя номер индекса точки с запятой в качестве контрольной точки и сохраните его в новой переменной.
  6. +
  7. Объедините две новые переменные и строковый литерал, чтобы сделать финальную строку.
  8. +
  9. Измените значение переменной result равной конечной строке (не input). 
  10. +
+ + + +

{{ EmbedLiveSample('Playable_code_3', '100%', 585, "", "", "hide-codepen-jsfiddle") }}

+ +

Заключение

+ +

Нельзя не согласиться с тем, что способность обрабатывать слова и предложения в программировании очень важна — особенно в JavaScript, поскольку веб-сайты — все связаны с людьми. Эта статья дала вам основы, которые вам нужно знать о манипуляции строками на данный момент. Это пойдет вам на пользу, когда вы займётесь более сложными темами в будущем. Далее мы рассмотрим последний важный тип данных, на который нам нужно сосредоточиться в краткосрочной перспективе — массивы.

+ +

{{PreviousMenuNext("Learn/JavaScript/Первые_шаги/Строки", "Learn/JavaScript/Первые_шаги/Arrays", "Learn/JavaScript/Первые_шаги")}}

+ +

В этом модуле

+ + diff --git a/files/ru/learn/javascript/first_steps/variables/index.html b/files/ru/learn/javascript/first_steps/variables/index.html new file mode 100644 index 0000000000..e1195effd5 --- /dev/null +++ b/files/ru/learn/javascript/first_steps/variables/index.html @@ -0,0 +1,372 @@ +--- +title: Переменные - место хранения необходимой информации +slug: Learn/JavaScript/Первые_шаги/Variables +translation_of: Learn/JavaScript/First_steps/Variables +--- +
{{LearnSidebar}}
+ +
{{PreviousMenuNext("Learn/JavaScript/Первые_шаги/Что_пошло_не_так", "Learn/JavaScript/Первые_шаги/Math", "Learn/JavaScript/Первые_шаги")}}
+ +

После прочтения последних двух статей вы знаете, что такое JavaScript, что он может сделать для вас, как использовать его вместе с другими веб-технологиями и какими он обладает функциями высокого уровня. В этой статье мы перейдем к реальным основам, рассмотрим, как работать с большинством базовых блоков JavaScript — Переменными.

+ + + + + + + + + + + + +
Необходимые навыки:Базовая компьютерная грамотность, базовое понимание HTML и CSS, понимание того, что такое JavaScript.
Цель:Ознакомиться с основами переменных в JavaScript.
+ +

Инструменты, которые вам нужны

+ +

В этой статье вам будет предложено ввести строки кода, чтобы проверить ваше понимание материала. Если вы используете браузер для настольных компьютеров, лучшим примером для ввода кода примера является консоль JavaScript вашего браузера (см. What are browser developer tools для получения дополнительной информации о том, как получить доступ к этому инструменту).

+ +

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

+ +

Что такое переменные?

+ +

Переменные — это контейнер для таких значений, как числа, используемые в сложении, или строка, которую мы могли бы использовать как часть предложения. Но одна из особенностей переменных — их значение может меняться. Давайте взглянем на простой пример:

+ +
<button>Нажми на меня</button>
+ +
const button = document.querySelector('button');
+
+button.onclick = function() {
+  let name = prompt('Как Вас зовут?');
+  alert('Привет ' + name + ', рады видеть Вас!');
+}
+ +

{{ EmbedLiveSample('What_is_a_variable', '100%', 50, "", "", "hide-codepen-jsfiddle") }}

+ +

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

+ +

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

+ +
var name = prompt('Как вас зовут?');
+
+if (name === 'Адам') {
+  alert('Привет, Адам, рады тебя видеть!');
+} else if (name === 'Алан') {
+  alert('Привет, Алан, рады тебя видеть!');
+} else if (name === 'Бэлла') {
+  alert('Привет, Бэлла, рады тебя видеть!');
+} else if (name === 'Бьянка') {
+  alert('Привет, Бьянка, рады тебя видеть!');
+} else if (name === 'Крис') {
+  alert('Привет, Крис, рады тебя видеть!');
+}
+
+// ... и так далее ...
+ +

Вам сейчас не обязательно понимать синтаксис, который мы используем (пока!), но вы должны понять идею: если бы у нас не было доступных переменных, нам пришлось бы реализовать гигантский блок кода, который проверял, какое имя было введено, а затем отображал соответствующее сообщение для этого имени. Очевидно, что это неэффективно (код намного больше, даже для четырех вариантов), и он просто не сработает, так как вы не можете хранить все возможные варианты.

+ +

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

+ +

Еще одна особенность переменных заключается в том, что они могут содержать практически все, а не только строки и числа. Переменные могут также содержать сложные данные и даже целые функции. Об этом вы узнаете больше при дальнейшем изучении курса..

+ +

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

+ +

+ +

Объявление переменной

+ +

Чтобы использовать переменную, вы сначала должны ее создать, или, если быть точнее, объявить переменную. Чтобы сделать это, мы вводим ключевое слово var, за которым следует имя, которое вы хотите дать своей переменной:

+ +
var myName;
+var myAge;
+ +

Здесь мы создаем две переменные myName и myAge. Попробуйте ввести эти строки сейчас в консоли вашего веб-браузера или в консоли ниже (можно открыть эту консоль в отдельной вкладке или в новом окне). После этого попробуйте создать переменную (или две) с вашими именами.

+ + + +

{{ EmbedLiveSample('Hidden_code', '100%', 300) }}

+ +
+

Заметка: в JavaScript все инструкции кода должны заканчиваться точкой с запятой (;) - ваш код может работать правильно для отдельных строк, но, вероятно, не будет, когда вы пишете несколько строк кода вместе. Попытайтесь превратить написание точки с запятой в привычку.

+
+ +

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

+ +
myName;
+myAge;
+ +

В настоящее время они не содержат значения, это пустые контейнеры. В этом случае, когда вы вводите имена переменных, вы должны получить значение  undefined . Если они не существуют, вы получите сообщение об ошибке - попробуйте сейчас ввести в консоли имя переменной ниже:

+ +
scoobyDoo;
+ +
+

Заметка: Не путайте переменную, которая существует, но не имеет значения, с переменной, которая вообще не существует - это разные вещи.

+
+ +

Присвоение значения переменной

+ +

Как только переменная объявлена, ей можно присвоить значение. Для этого пишется имя переменной, затем следует знак равенства (=), а за ним значение, которое вы хотите присвоить. Например:

+ +
myName = 'Chris';
+myAge = 37;
+ +

Попробуйте вернуться в консоль и ввести эти строки. Вы должны увидеть значение, которое вы назначили переменной, возвращаемой в консоли. Чтобы посмотреть значения переменных, нужно набрать их имя в консоли:

+ +
myName;
+myAge;
+ +

Вы можете объявить переменную и задать ей значение одновременно:

+ +
var myName = 'Chris';
+ +

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

+ +
+

Заметка: Если вы пишете многострочную программу JavaScript, которая объявляет и инициализирует (задает значение) переменную, вы можете объявить ее после ее инициализации, и она все равно будет работать. Это связано с тем, что объявления переменных обычно выполняются первыми, прежде чем остальная часть кода будет выполнена. Это называется hoisting - прочитайте var hoisting для более подробной информации по этому вопросу.

+
+ +

Обновление переменной

+ +

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

+ +
myName = 'Bob';
+myAge = 40;
+ +

Правила именования переменных

+ +

Вы можете назвать переменную как угодно, но есть ограничения. Как правило, вы должны придерживаться только латинских символов (0-9, a-z, A-Z) и символа подчеркивания.

+ + + +
+

Заметка: По ссылке можно найти довольно полный список зарезервированных ключевых слов: Lexical grammar — keywords.

+
+ +

Примеры хороших имен переменных:

+ +
age
+myAge
+init
+initialColor
+finalOutputValue
+audio1
+audio2
+
+ +

Примеры плохих имен переменных:

+ +
1
+a
+_12
+myage
+MYAGE
+var
+Document
+skjfndskjfnbdskjfb
+thisisareallylongstupidvariablenameman
+ +

Примеры имен переменных, которые вызовут ошибки:

+ +
var
+Document
+
+ +

Попытайтесь создать еще несколько переменных прямо сейчас, используя знания, изложенные выше.

+ +

Типы переменных

+ +

Есть несколько различных типов данных, которые мы можем хранить в переменных. В этом разделе мы кратко опишем их, а затем в будущих статьях вы узнаете о них более подробно.

+ +

Числа (Numbers)

+ +

Вы можете хранить числа в переменных (целые числа, такие как 30, или десятичные числа, такие как 2.456, также называемые числами с плавающей точкой или с плавающей запятой). Вам не нужно объявлять типы переменных в JavaScript, в отличие от некоторых других языков программирования Если давать переменной значение числа,кавычки не используются:

+ +
var myAge = 17;
+ +

Строки ('Strings')

+ +

Строки - это фрагменты текста. Когда вы даете переменной значение строки, вам нужно обернуть ее в одиночные или двойные кавычки, в противном случае JavaScript попытается проиндексировать ее как другое имя переменной.

+ +
var dolphinGoodbye = 'So long and thanks for all the fish';
+ +

Логические (Booleans)

+ +

Booleans - истинные / ложные значения - они могут иметь два значения: true или false. Они обычно используются для проверки состояния, после чего код запускается соответствующим образом. Вот простой пример:

+ +
var iAmAlive = true;
+ +

В действительности вы чаще будете использовать этот тип переменных так:

+ +
var test = 6 < 3;
+
+ +

Здесь используется оператор «меньше» (<), чтобы проверить, является ли 6 меньше 3. В данном примере, он вернет false, потому что 6 не меньше 3! В дальнейшем вы узнаете больше о таких операторах.

+ +

Массивы (Arrays)

+ +

Массив - это один объект, который содержит несколько значений, заключенных в квадратные скобки и разделенных запятыми. Попробуйте ввести следующие строки в консоль:

+ +
var myNameArray = ['Chris', 'Bob', 'Jim'];
+var myNumberArray = [10,15,40];
+ +

Как только эти массивы определены, можно получить доступ к каждому значению по их местоположению в массиве. Наберите следующие строки:

+ +
myNameArray[0]; // should return 'Chris'
+myNumberArray[2]; // should return 40
+ +

Квадратные скобки указывают значение индекса, соответствующее позиции возвращаемого значения. Возможно, вы заметили, что массивы в JavaScript индексируются с нулевой отметкой: первый элемент имеет индекс 0.

+ +

В следующей статье вы узнаете больше о массивах.

+ +

Объекты (Objects)

+ +

В программировании объект представляет собой структуру кода, который моделирует объект реальной жизни. У вас может быть простой объект, представляющий автостоянку, и содержит информацию о её ширине и длине; или вы можете иметь объект, который представляет человека, и содержит данные о его имени, росте, весе, на каком языке он говорит, как сказать ему привет и многое другое.

+ +

Попробуйте ввести следующую строку в консоль:

+ +
var dog = { name : 'Spot', breed : 'Dalmatian' };
+ +

Чтобы получить информацию, хранящуюся в объекте, вы можете использовать следующий синтаксис:

+ +
dog.name
+ +

Мы больше не будем рассматривать объекты в данном курсе - вы можете больше узнать о них в будущем модуле.

+ +

Свободная типизация

+ +

JavaScript - это «свободно типизируемый язык», что означает, что в отличие от некоторых других языков вам не нужно указывать, какой тип данных будет содержать переменная (например, числа, строки, массивы и т. д.).

+ +

Например, если вы объявите переменную и присвоите ей значение, заключенное в кавычки, браузер будет обрабатывать переменную как строку:

+ +
var myString = 'Привет';
+ +

Он все равно будет строкой, даже если он содержит числа, поэтому будьте осторожны:

+ +
var myNumber = '500'; // упс, это все еще строка (string)
+typeof(myNumber);
+myNumber = 500; // так-то лучше, теперь это число (number)
+typeof(myNumber);
+ +

Попробуйте ввести четыре строки выше в консоль одну за другой и посмотреть результаты. Вы заметите, что мы используем специальную функцию typeof()  - она возвращает тип данных переменной, которую вы передаете в нее. В первый раз, когда она вызывается, она должа возвращать строку, так как переменная myNumber содержит строку '500'. Посмотрите, что она вернет во второй раз, когда вы ее вызовите.

+ +

Подведение итогов

+ +

К настоящему времени вы должны знать достаточно о переменных JavaScript и о том, как их создавать. В следующей статье мы остановимся на числах более подробно, рассмотрев, как сделать базовую математику в JavaScript.

+ +

{{PreviousMenuNext("Learn/JavaScript/Первые_шаги/Что_пошло_не_так", "Learn/JavaScript/Первые_шаги/Math", "Learn/JavaScript/Первые_шаги")}}

diff --git a/files/ru/learn/javascript/first_steps/what_is_javascript/index.html b/files/ru/learn/javascript/first_steps/what_is_javascript/index.html new file mode 100644 index 0000000000..f34dac6902 --- /dev/null +++ b/files/ru/learn/javascript/first_steps/what_is_javascript/index.html @@ -0,0 +1,339 @@ +--- +title: Что такое JavaScript? +slug: Learn/JavaScript/Первые_шаги/What_is_JavaScript +translation_of: Learn/JavaScript/First_steps/What_is_JavaScript +--- +
{{LearnSidebar}}
+ +
{{NextMenu("Learn/JavaScript/Первые_шаги/A_first_splash", "Learn/JavaScript/Первые_шаги")}}
+ +

Добро пожаловать на курс MDN JavaScript для начинающих! В первой статье курса мы дадим базовое определение JavaScript, ответим на вопросы «Что такое JavaScript?» и «Что он делает?», узнаем как работает JavaScript и как добавить его на веб-страницу.

+ + + + + + + + + + + + +
Необходимые навыки:Базовая компьютерная грамотность, знание основ HTML и CSS.
Цели:Знакомство с JavaScript и его возможностями, способами его подключения к веб-странице.
+ +

Определение высокого уровня

+ +

JavaScript это язык, который позволяет Вам применять сложные вещи на web странице — каждый раз, когда на web странице происходит что-то большее, чем просто её статичное отображение — отображение периодически обновляемого контента, или интерактивных карт, или анимация 2D/3D графики, или прокрутка видео в проигрывателе, и т.д. — можете быть уверены, что скорее всего, не обошлось без JavaScript. Это третий слой слоёного пирога стандартных web технологий, два из которых (HTML и CSS) мы детально раскрыли в других частях учебного пособия.

+ +

+ + + +

Три слоя прекрасно выстраиваются друг над другом. Возьмем простой текст для примера. Для придания структуры и смыслового назначения тексту, разметим его с помощью HTML:

+ +
<p>Player 1: Chris</p>
+ +

+ +

Затем мы добавим немного CSS, что бы это выглядело симпатичнее:

+ +
p {
+  font-family: 'helvetica neue', helvetica, sans-serif;
+  letter-spacing: 1px;
+  text-transform: uppercase;
+  text-align: center;
+  border: 2px solid rgba(0,0,200,0.6);
+  background: rgba(0,0,200,0.3);
+  color: rgba(0,0,200,0.6);
+  box-shadow: 1px 1px 2px rgba(0,0,200,0.4);
+  border-radius: 10px;
+  padding: 3px 10px;
+  display: inline-block;
+  cursor:pointer;
+}
+ +

+ +

И наконец, добавим немного JavaScript для придания динамического поведения:

+ +
const para = document.querySelector('p');
+
+para.addEventListener('click', updateName);
+
+function updateName() {
+  let name = prompt('Enter a new name');
+  para.textContent = 'Player 1: ' + name;
+}
+ +

{{ EmbedLiveSample('Определение_высокого_уровня', '100%', 80) }}

+ +

Попробуйте кликнуть по тексту чтобы увидеть, что произойдет (Вы так же можете найти это демо на GitHub — смотрите исходный код, или запустите вживую)!

+ +

JavaScript может делать намного больше — давайте выясним это более детально.

+ +

Так что же он действительно может делать?

+ +

Ядро языка JavaScript состоит из некоторого количества обычных возможностей, которые позволяют делать следующее:

+ + + +

Еще более увлекательным является функциональность, созданная поверх основного языка JavaScript. Так называемые интерфейсы прикладного программирования (API) предоставляют вам дополнительные сверхспособности для использования в вашем коде JavaScript.

+ +

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

+ +

Они обычно делятся на две категории.

+ +

+ +

API-интерфейсы браузера встроены в ваш веб-браузер и могут отображать данные из окружающего компьютерного окружения или делать полезные сложные вещи. Например:    

+ + + +
+

Заметка: Большинство наших демо не будут корректно работать в старых браузерах — поэтому будет хорошей идеей,  для запуска вашего кода установить один из современных браузеров , таких как Firefox, Chrome, Edge или Opera . Также понадобится более подробно рассмотреть раздел по кроссбраузерному тестированию, когда вы приблизитесь к разработке производственного кода (т.е реального кода, который будут использовать клиенты).

+
+ +

По умолчанию сторонние API-интерфейсы  не встроены в браузер, и вам придётся захватывать их код и информацию из какого-либо места в Сети. Для примера: 

+ + + +
+

Заметка: Эти API-и являются продвинутыми, и мы не будем их рассматривать в нашем курсе, но ссылки, данные выше, предлагают полную документацию, если вы заинтересованы в более подробной информации.

+
+ +

Доступно еще больше! Но пока не заостряйте на этом внимание. Вы не сможете создать следующий Facebook, Google Maps или Instagram после 24 часов изучения JavaScript — сначала нужно изучить основы. И именно для этого вы здесь — давайте двигаться дальше!

+ +

Что JavaScript делает на вашей странице?

+ +

В этой главе мы рассмотрим код и увидим что же действительно происходит, когда на странице запускается JavaScript.

+ +

Давайте составим краткий бриф, что же происхоит когда мы загружаем страничку в браузере (первое упоминание в статье Как работает CSS). Когда вы загружаете страничку в браузере, вы запускаете ваш код (HTML, CSS и JavaScript) внутри исполняемой среды (внутри вкладки браузера). Это как будто фабрика берет сырьё (некий код) и выдает продукцию (веб-страничку).

+ +

+ +

Код JavaScript выполняется JavaScript-движком браузера, после того как код HTML и CSS был обработан и сформирован в веб-страницу. Это гарантирует, что структура и стиль страницы уже сформированы к моменту запуска JavaScript.

+ +

Это хорошо, так как часто использование JavaScript заключается в динамическом изменении HTML и CSS в целях обновления пользовательского интерфейса посредством Document Object Model API (как упоминалось выше). Если бы запуск JavaScript осуществлялся прежде загрузки HTML и CSS, то это привело бы к возникновению ошибок.  

+ +

Безопасность браузера

+ +

Каждая вкладка браузера представляет собой отдельную коробку для запуска кода (в техническом языке, эти коробки называются "средами исполнения") — это значит, что в большинстве случаев код на каждой вкладке запускается полностью отдельно, а код одной вкладки не может напрямую влиять на код другой вкладки или на другом веб-сайте. Это хорошая мера безопасности — если бы это было иначе, пираты могли написать код, который крал информацию с других сайтов или делал другие плохие вещи.

+ +
+

Заметка: Есть способы отправлять код и данные между разными веб-сайтами/вкладками безопасным способом, но это продвинутые методы, которые мы не будем рассматривать в рамках этого курса.

+
+ +

Последовательность выполнения JavaScript

+ +

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

+ +
const para = document.querySelector('p');
+
+para.addEventListener('click', updateName);
+
+function updateName() {
+  let name = prompt('Enter a new name');
+  para.textContent = 'Player 1: ' + name;
+}
+ +

Здесь мы выбираем абзац текста (строка 1), а затем добавляем к нему обнаружение событий (строка 3), чтобы при нажатии на этот абзац выполнялся блок кода updateName() (строки 5–8). Блок кода updateName() (эти типы многократно используемых блоков кода называются "функции") запрашивает у пользователя новое имя, а затем вставляет это имя в абзац для обновления отображения.

+ +

Если вы поменяете порядок первых двух строк кода, он перестанет работать — вместо этого вы получите ошибку возвращаемую в консоль браузераTypeError: para is undefined. Это значит, что объект para еще не существует и вы не можете добавить к нему обнаружение событий.

+ +
+

Заметка: Это очень частая ошибка — вы должны быть осторожны, чтобы объекты, на которые ссылается ваш код, существовали до того, как вы попытаетесь что-то с ними сделать.

+
+ +

Интерпретируемый против компилируемого кода

+ +

В контексте программирования, вы можете услышать термины интерпретация и компиляция. JavaScript является интерпретируемым языком — код запускается сверху вниз и результат запуска немедленно возвращается. Вам не нужно преобразовывать код в другую форму, перед запуском в браузере.

+ +

С другой стороны, компилируемые языки преобразуются (компилируются) в другую форму, прежде чем они будут запущены компьютером. Например, C / C ++ компилируются в язык ассемблера, который затем запускается компьютером.

+ +

Оба подхода имеют разные преимущества, которые на данном этапе мы обсуждать не будем.

+ +

Серверный против клиентского кода

+ +

Вы так же можете услышать термины серверный и клиентский код, особенно в контексте веб-разработки. Клиентский код — это код, который запускается на компьютере пользователя. При просмотре веб-страницы, клиентский код загружается, а затем запускается и отображается браузером. В этом модуле JavaScript мы явно говорим о клиентском JavaScript.

+ +

С другой стороны, серверный код запускается на сервере, затем его результаты загружаются и отображаются в браузере. Примеры популярных серверных веб-языков включают PHP, Python, Ruby и ASP.NET. И JavaScript! JavaScript так же может использоваться, как серверный язык, например в популярной среде Node.js — вы можете больше узнать о серверном JavaScript в нашем разделе Dynamic Websites – Server-side programming.

+ +

Слово динамический используется для описания и клиентского JavaScript, и серверного языка — это относится к возможности обновления отображения веб-страницы/приложения, чтобы показывать разные вещи в разных обстоятельствах, генерируя новый контент по мере необходимости. Серверный код динамически генерирует новый контент на сервере, например достает данные из базы данных, тогда как клиентский JavaScript динамически генерирует новое содержание внутри браузера на клиенте, например создает новую HTML таблицу, вставляя в нее данные полученные с сервера, затем отображает таблицу на веб-странице, которую видит пользователь. В этих двух контекстах значение немного отличается, но связано, и обычно оба подхода (серверный и клиентский) работают вместе.

+ +

Веб-страница без динамического обновления контента называется статической — она просто показывает один и тотже контент все время.

+ +

Как добавить JavaScript на вашу страницу?

+ +

JavaScript применяется к вашей HTML странице точно так же, как CSS. И если CSS использует элементы {{htmlelement("link")}} для внешних стилей и {{htmlelement("style")}} для встроеных в HTML, то для JavaScript нужен только один друг в HTML мире — элемент {{htmlelement("script")}}. Давайте узнаем, как это работает.

+ +

Внутренний JavaScript

+ +
    +
  1. Сначала, сделайте локальную копию нашего файла-примера apply-javascript.html. Сохраните его в удобное для вас место.
  2. +
  3. Откройте этот файл в вашем браузере и в вашем текстовом редакторе. Вы увидите, что HTML создает простую веб-страницу с активной кнопкой.
  4. +
  5. Затем, перейдите в текстовый редактор и добавьте следующие строки перед закрывающим тегом </head>: +
    <script>
    +
    +  // здесь будет JavaScript
    +
    +</script>
    +
  6. +
  7. Теперь добавим JavaScript внутрь элемента {{htmlelement("script")}}, чтобы сделать страницу более интересной — добавьте следующий код ниже строки "// здесь будет JavaScript": +
    document.addEventListener("DOMContentLoaded", function() {
    +  function createParagraph() {
    +    let para = document.createElement('p');
    +    para.textContent = 'You clicked the button!';
    +    document.body.appendChild(para);
    +  }
    +
    +  const buttons = document.querySelectorAll('button');
    +
    +  for(let i = 0; i < buttons.length ; i++) {
    +    buttons[i].addEventListener('click', createParagraph);
    +  }
    +});
    +
  8. +
  9. Сохраните файл и обновите страницу в браузере — теперь вы должны увидеть, что при нажатии на кнопку создается новый абзац и помещается ниже.
  10. +
+ +
+

Заметка: Если ваш пример не работает, пройдите еще раз все шаги и проверьте, сделали ли вы все правильно. Сохранили ли вы вашу локальную копию начального кода, как .html файл? Добавили ли ваш {{htmlelement("script")}} элемент после тэга </body>? Ввели ли вы JavaScript именно так, как показано? JavaScript регистрозависимый, и очень привередливый. Поэтому вам нужно вводить синтаксис именно так, как показано, в противном случае оно может не работать.

+
+ +
+

Заметка: Вы можете увидеть эту версию на GitHub-е как apply-javascript-internal.html (посмотреть вживую).

+
+ +

Внешний JavaScript

+ +

Это отлично работает, но что если мы хотим поместить наш JavaScript в отдельный файл? Давайте сейчас разберемся с этим.

+ +
    +
  1. Сначала, создайте новый файл в той же папке, что и ваш файл-пример HTML. Назовите его script.js — убедитесь, что у имени файла расширение .js, так как оно распознается, как JavaScript.
  2. +
  3. Замените ваше текущий элемент {{htmlelement("script")}} на следующий: +
    <script src="script.js" defer></script>
    +
  4. +
  5. Внутри script.js добавьте следующий скрипт: +
    function createParagraph() {
    +  let para = document.createElement('p');
    +  para.textContent = 'You clicked the button!';
    +  document.body.appendChild(para);
    +}
    +
    +const buttons = document.querySelectorAll('button');
    +
    +for(let i = 0; i < buttons.length ; i++) {
    +  buttons[i].addEventListener('click', createParagraph);
    +}
    +
  6. +
  7. Сохраните и обновите страницу в браузере, и вы увидите то же самое! Все работает точно так же, но теперь у нас есть JavaScript во внешнем файле. Это, как правило, хорошо с точки зрения организации кода и его повторного использования в нескольких HTML файлах. Кроме того, HTML легче читать без огромных кусков кода, который скапливается в нем.
  8. +
+ +
+

Заметка: Вы можете увидеть эту версию на GitHub-е как apply-javascript-external.html и script.js (посмотреть вживую).

+
+ +

Инлайновые JavaScript обработчики

+ +

Обратите внимание, что иногда можно столкнуться с частями JavaScript кода, который живет внутри HTML. Это может выглядеть примерно так:

+ +
+
function createParagraph() {
+  var para = document.createElement('p');
+  para.textContent = 'You clicked the button!';
+  document.body.appendChild(para);
+}
+ +
<button onclick="createParagraph()">Click me!</button>
+
+ +

Вы можете попробовать эту версию в нашей демонстрации ниже:

+ +

{{ EmbedLiveSample('Inline_JavaScript_handlers', '100%', 150) }}

+ +

Эта демонстрация имеет те же функциональные возможности, что и в предыдущих двух разделах, за исключением того, что элемент {{htmlelement("button")}} содержит встроенный обработчик onclick, который запускает функцию при нажатии кнопки.

+ +

Но пожалуйста, не делайте этого. Это плохая практика — загрязнять ваш HTML кодом JavaScript, и она не эффективна — вам нужно будет добавить атрибут onclick="createParagraph()" к каждой кнопке, к которой вы хотите подключить JavaScript.

+ +

Использование чистой JavaScript конструкции, позволит вам выбрать все кнопки, используя одну команду. Код, который можно использовали для этой цели, выглядит следующим образом:

+ +
const buttons = document.querySelectorAll('button');
+
+for(let i = 0; i < buttons.length ; i++) {
+  buttons[i].addEventListener('click', createParagraph);
+}
+ +

Это может выглядеть немного длиннее, чем атрибут onclick, но это будет работать для всех кнопок, независимо от того, сколько их на странице, и сколько их удалят или добавят. JavaScript менять не нужно.

+ +
+

Заметка: Попробуйте отредактировать вашу версию apply-javascript.html и добавить еще несколько кнопок в файл. После перезагрузки вы должны увидеть, что все кнопки создают параграф, если кликнуть на них. Классно, да?

+
+ +

Стратегии загрузки скриптов

+ +

Существует ряд проблем, связанных с загрузкой скриптов в нужное время. Всё не так просто, как кажется! Распространённой проблемой является то, что весь HTML-код на странице загружается в том порядке, в котором отображается. Если вы используете JavaScript для манипуляции элементами на странице (или, точнее, в DOM – Объектной Модели Документа), ваш код не будет работать, если JavaScript-код загрузится и распознается раньше HTML-кода, с которым вы пытаетесь взаимодействовать.

+ +

Комментарии

+ +

Так же, как и в HTML и CSS, возможно писать комментарии в вашем JavaScript коде, что будет проигнорировано браузером, и существует только для того, чтобы давать подсказки вашим друзьям-разработчикам о том, как работает код (и лично вам, если вы вернетесь к коду спустя 6 месяцев и не сможете вспомнить, что вы делали). Комментарии очень полезны, и вы должны часто их использовать, особенно для больших приложений. Вот два типа комментариев:

+ + + +

Так, например, мы можем описать наш последний демо-пример JavaScript подобными комментариями:

+ +
// Функция: создает новый параграф и добавляет его вниз тела HTML.
+
+function createParagraph() {
+  var para = document.createElement('p');
+  para.textContent = 'You clicked the button!';
+  document.body.appendChild(para);
+}
+
+/*
+  1. Получаем ссылки на все кнопки на странице в виде массива.
+  2. Перебераем все кнопки и добавляем к ним отслеживатель события нажатия.
+
+  При нажатии любой кнопки, будет выполняться функция createParagraph().
+*/
+
+var buttons = document.querySelectorAll('button');
+
+for (var i = 0; i < buttons.length ; i++) {
+  buttons[i].addEventListener('click', createParagraph);
+}
+ +

Выводы

+ +

Поздравляем, вы сделали ваш первый шаг в мир JavaScript. Мы начали всего-лишь с теории, чтобы вы привыкли к тому, что вы будете использовать JavaScript, и что именно вы можете делать с его помощью. На этом пути вы увидели несколько примеров кода и выучили, как JavaScript вписывается в остальной код на вашем сайте среди всего прочего.

+ +

JavaScript может показаться немного пугающим в данным момент, но не переживайте - в этом курсе мы проведем вас сквозь него простыми шагами, которые имеют смысл, забегая наперед. В следующей главе мы погрузимся непосредственно в практику, подталкивая вас погрузиться в код и сделать ваши собственные примеры JavaScript.

+ +

{{NextMenu("Learn/JavaScript/Первые_шаги/A_first_splash", "Learn/JavaScript/Первые_шаги")}}

diff --git a/files/ru/learn/javascript/first_steps/what_went_wrong/index.html b/files/ru/learn/javascript/first_steps/what_went_wrong/index.html new file mode 100644 index 0000000000..dbb0a4577a --- /dev/null +++ b/files/ru/learn/javascript/first_steps/what_went_wrong/index.html @@ -0,0 +1,249 @@ +--- +title: Что пошло не так? Устранение ошибок JavaScript +slug: Learn/JavaScript/Первые_шаги/Что_пошло_не_так +translation_of: Learn/JavaScript/First_steps/What_went_wrong +--- +
{{LearnSidebar}}
+ +
{{PreviousMenuNext("Learn/JavaScript/Первые_шаги/A_first_splash", "Learn/JavaScript/Первые_шаги/Variables", "Learn/JavaScript/Первые_шаги")}}
+ +

Когда вы создали игру «Угадай номер» в предыдущей статье, вы, возможно, обнаружили, что она не работает. Не бойтесь — эта статья призвана избавить вас от разрыва волос над такими проблемами, предоставив вам несколько простых советов о том, как найти и исправить ошибки в программах JavaScript.

+ + + + + + + + + + + + +
+

Нужно:

+
базовая компьютерная грамотность, базовое понимание HTML и CSS, понимание того, что такое JavaScript.
Цельполучить способность и уверенность в том, чтобы приступить к исправлению простых проблем в вашем собственном коде.
+ +

Типы ошибок

+ +

Когда вы делаете что-то не так в коде, есть два основных типа ошибок, с которыми вы столкнетесь:

+ + + +

Ладно, все не так просто — есть и другие отличия, которые вы поймете, пока будете изучать язык JavaScript глубже. Однако вышеуказанной классификации достаточно на раннем этапе вашей карьеры. Мы рассмотрим оба эти типа в дальнейшем.

+ +

Ошибочный пример

+ +

Чтобы начать работу, давайте вернемся к нашей игре с угадыванием чисел — за исключением того, что мы будем изучать версию с некоторыми преднамеренными ошибками. Перейдите в Github и сделайте себе локальную копию number-game-errors.html (см. здесь как это работает).

+ +
    +
  1. Чтобы начать работу, откройте локальную копию внутри вашего любимого текстового редактора и вашего браузера.
  2. +
  3. Попробуйте сыграть в игру — вы заметите, что когда вы нажимаете кнопку «Submit guess», она не работает!
  4. +
+ +
+

Примечание: Возможно, у вас может быть собственная версия игрового примера, которая не работает, которую вы можете исправить! Мы по-прежнему хотели бы, чтобы вы работали над статьей с нашей версией, чтобы вы могли изучать методы, которые мы здесь преподаем. Затем вы можете вернуться и попытаться исправить ваш пример.

+
+ +

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

+ +

Исправление синтаксических ошибок

+ +

Раньше в курсе мы заставили вас набрать некоторые простые команды JavaScript в консоль разработчика JavaScript (если вы не можете вспомнить, как открыть это в своем браузере, следуйте предыдущей ссылке, чтобы узнать, как это сделать). Что еще более полезно, так это то, что консоль предоставляет вам сообщения об ошибках всякий раз, когда существует синтаксическая ошибка внутри JavaScript, которая подается в механизм JavaScript браузера. Теперь пойдем на охоту.

+ +
    +
  1. Перейдите на вкладку, в которой у вас есть number-game-errors.html, и откройте консоль JavaScript. Вы должны увидеть сообщение об ошибке в следующих строках:
  2. +
  3. Это довольно простая ошибка для отслеживания, и браузер дает вам несколько полезных бит информации, которые помогут вам (скриншот выше от Firefox, но другие браузеры предоставляют аналогичную информацию). Слева направо, у нас есть: +
      +
    • Красный «x» означает, что это ошибка.
    • +
    • Сообщение об ошибке, указывающее, что пошло не так: «TypeError: guessSubmit.addeventListener не является функцией»
    • +
    • Ссылка «Узнать больше», которая ссылается на страницу MDN, которая объясняет, что эта ошибка означает в огромных количествах деталей.
    • +
    • Имя файла JavaScript, который ссылается на вкладку «Отладчик» консоли разработчика. Если вы перейдете по этой ссылке, вы увидите точную строку, где подсвечивается ошибка.
    • +
    • Номер строки, в которой находится ошибка, и номер символа в этой строке, где первая ошибка. В этом случае у нас есть строка 86, символ номер 3.
    • +
    +
  4. +
  5. Если мы посмотрим на строку 86 в нашем редакторе кода, мы найдем эту строку: +
    guessSubmit.addeventListener('click', checkGuess);
    +
  6. +
  7. В сообщении об ошибке говорится, что «guessSubmit.addeventListener не является функцией», поэтому мы, вероятно, где-то ошиблись. Если вы не уверены в правильности написания синтаксиса, часто бывает полезно найти функцию на MDN. Лучший способ сделать это в настоящее время — поиск «mdn имя-функции» в вашей любимой поисковой системе. Вот ссылка, которая поможет сократить вам некоторое время в данном случае: addEventListener().
  8. +
  9. Итак, глядя на эту страницу, кажется, что ошибка в том, что мы неправильно назвали имя функции! Помните, что JavaScript чувствителен к регистру, поэтому любые незначительные отличия в орфографии или регистре текста могут вызвать ошибку. Изменение этого параметра в addEventListener должно быть исправлено. Сделайте это сейчас.
  10. +
+ +
+

Примечание: См. наш TypeError: «x» не является справочной страницей функций для получения дополнительной информации об этой ошибке.

+
+ +

Синтаксические ошибки: второй раунд

+ +
+

Примечание: console.log() это часто используемая функция отладки, которая выводит значение в консоль. Поэтому она будет выводить значение lowOrHi в консоли, как только мы попытаемся установить его в строке 48.

+
+ +
    +
  1. Сохраните и обновите страницу, и вы увидите, что ошибка исчезла.
  2. +
  3. Теперь, если вы попробуете ввести значение и нажать кнопку "Submit guess", вы увидите ... другую ошибку! 
  4. +
  5. На этот раз сообщается об ошибке: "TypeError: lowOrHi is null", в строке 78. +
    Примечание: Null — это специальное значение, которое означает "ничего" или "не значение". Поэтому lowOrHi был объявлен и инициализирован без значения — у него нет типа или значения.
    + +
    Примечание: Эта ошибка не появилась, как только страница была загружена, потому что эта ошибка произошла внутри функции (внутри checkGuess() { ... } block). Об этом вы узнаете более подробно в нашей более поздней статье о функциях, код внутри функций выполняется в отдельной области для кода внешних функций. В этом случае код не был запущен, и ошибка не была брошена до тех пор, пока функция checkGuess() не была запущена строкой 86.
    +
  6. +
  7. Посмотрите на строку 78, и вы увидите следующий код: +
    lowOrHi.textContent = «Последнее предположение было слишком высоко!»;
    +
  8. +
  9. Эта строка пытается установить свойство textContent переменной lowOrHi как текстовую строку, но это не работает, поскольку lowOrHi не содержит того, что должна. Давайте посмотрим, почему так происходит — попробуйте найти другие экземпляры lowOrHi в коде. Самый ранний экземпляр, который вы найдете в JavaScript, находится в строке 48: +
    var lowOrHi = document.querySelector('lowOrHi');
    +
  10. +
  11. На этом этапе мы пытаемся заставить переменную содержать ссылку на элемент документа HTML. Давайте проверим, является ли значение  null после выполнения этой строки. Добавьте следующий код в строку 49: +
    console.log(lowOrHi);
    +
    +
  12. +
  13. Сохраните и обновите, и вы должны увидеть результат работы console.log() в консоли браузера. Разумеется, значение lowOrHi на данный момент равно null, поэтому определенно существует проблема в строке 48.
  14. +
  15. Давайте подумаем о том, что может быть проблемой. Строка 48 использует метод document.querySelector() для получения ссылки на элемент, выбирая его с помощью селектора CSS. Посмотрев далее наш файл, мы можем найти обсуждаемый элемент <p>: +
    <p class="lowOrHi"></p>
    +
    +
  16. +
  17. Поэтому нам нужен селектор классов, который начинается с точки (.), но селектор, передаваемый в метод querySelector() в строке 48, не имеет точки. Возможно, это и есть проблема! Попробуйте изменить lowOrHi на .lowOrHi в строке 48.
  18. +
  19. Повторите попытку сохранения и обновления, и ваш вызов console.log() должен вернуть элемент <p>, который мы хотим. Уф! Еще одна ошибка исправлена! Вы можете удалить строку с  console.log() сейчас, или оставить для дальнейшего применения — выбирайте сами.
  20. +
+ +
+

Примечание: Загляните на справочную страницу TypeError: "x" is (not) "y", чтобы узнать больше об этой ошибке.

+
+ +

Синтаксические ошибки: третий раунд

+ +
    +
  1. Теперь, если вы снова попробуете сыграть в игру, вы должны добиться большего успеха — игра должна играть абсолютно нормально, пока вы не закончите игру, либо угадав нужное число, либо потеряв жизни.
  2. +
  3. На данном этапе игра снова слетает, и выводится такая же ошибка, как и в начале — "TypeError: resetButton.addeventListener is not a function"! Однако, теперь она происходит из-за строки 94.
  4. +
  5. Посмотрев на строку 94, легко видеть, что здесь сделана такая же ошибка. Нам просто нужно изменить addeventListener на addEventListener.
  6. +
+ +

Логическая ошибка

+ +

На этом этапе игра должна проходить отлично, однако, поиграв несколько раз, вы, несомненно заметите, что случайное число, которое вы должны угадать, всегда 0 или 1. Определенно не совсем так, как мы хотим, чтобы игра была разыграна!

+ +

Безусловно, где-то в игре есть логическая ошибка — игра не возвращает ошибку, она просто работает неправильно.

+ +
    +
  1. Найдем переменную randomNumber , и строку где в первый раз устанавливали случайное число. Пример, в котором мы храним случайное число, которое должны угадать, на строке 44: + +
    var randomNumber = Math.floor(Math.random()) + 1;
    +
    + И на строке 113, где мы генерируем случайное число, каждый раз после окончания игры: + +
    randomNumber = Math.floor(Math.random()) + 1;
    +
    +
  2. +
  3. Чтобы проверить, действительно ли проблема в этом, давайте обратимся к нашему другу console.log() снова — вставьте ее ниже строк с ошибками: +
    console.log(randomNumber);
    +
    +
  4. +
  5. Сохраните и обновите, а дальше попробуйте пару раз сыграть — в консоли вы увидите что randomNumber равна 1 в каждой точке, где вы ее записали после строк с ошибками.
  6. +
+ +

Работаем через логику

+ +

Чтобы исправить это, давайте рассмотрим как работает строка. Первое, мы вызываем Math.random(), котрый генерирует случайное десятичное число, между 0 и 1, например 0.5675493843.

+ +
Math.random()
+ +

Дальше, мы передаем результат вызова Math.random() через Math.floor(), который округляет число вниз, до ближайшего целого числа. Затем мы добавляем 1 к данному результату:

+ +
Math.floor(Math.random()) + 1;
+ +

Округление случайного десятичного числа к меньшему, всегда будет возвращать 0, так что добавление к нему единицы будет возвращать всегда 1.  Нам нужно умножить случайное число на 100, прежде чем мы округлим его к меньшему. Следующая строка вернет нам случайное число между 0 и 99:

+ +
Math.floor(Math.random() * 100);
+ +

поэтому нам нужно добавить 1, чтоб нам возвращалось случайное число между 1 и 100:

+ +
Math.floor(Math.random() * 100) + 1;
+ +

А теперь, исправьте обе строки с ошибками, затем сохраните и обновите, игра должна работать так, как мы и планировали!

+ +

Другие распространенные ошибки

+ +

Существуют и другие распространенные ошибки, которые вы обнаружите в своем коде. В этом разделе показано большинство из них.

+ +

SyntaxError: отсутствует ; перед постановкой

+ +

Эта ошибка обычно означает что вы упустили точку с запятой в конце одной из ваших строк кода, но иногда ошибка может быть более загадочной. Например, если мы изменим эту строку внутри функции checkGuess() :

+ +
var userGuess = Number(guessField.value);
+ +

на эту

+ +
var userGuess === Number(guessField.value);
+ +

Это вызовет данную ошибку, потому что браузер подумает, что вы пытались сделать что-то другое. Вы должны быть уверены, что вы не перепутали оператор присваивания (=), который присваивает значение переменной — с оператором сравнения (===), который строго сравнивает операнды, и возвращает true/false .

+ +
+

Примечание: Загляните на справочную страницу Синтаксическая ошибка: пропущен символ ; до объявления инструкции для получения дополнительной информации об этой ошибке.

+
+ +

В программе всегда говорится, что вы выиграли, независимо от того, что вы ввели

+ +

Причиной этому является все то же перепутывание оператора присваивания (=) со строгим сравнением (===). Например, если мы изменим внутри checkGuess() эту строку кода:

+ +
if (userGuess === randomNumber) {
+ +

на эту

+ +
if (userGuess = randomNumber) {
+ +

мы всегда будем получать true, заставляя программу сообщать, что игра была выиграна. Будьте осторожны!

+ +

SyntaxError: отсутствует ) после списка аргументов

+ +

Эта ошибка проста — обычно она означает, что вы пропустили закрывающую скобку с конца вызова функции / метода.

+ +
+

Примечание: Загляните на справочную страницу  SyntaxError: missing ) after argument list для получения дополнительной информации об этой ошибке.

+
+ +

SyntaxError: missing : after property id

+ +

Эта ошибка обычно связана с неправильно сформированным объектом JavaScript, но в этом случае нам удалось получить ее, изменив

+ +
function checkGuess() {
+ +

на

+ +
function checkGuess( {
+
+ +

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

+ +

SyntaxError: missing } after function body

+ +

Это легко — обычно это означает, что вы пропустили одну из ваших фигурных скобок из функции или условной структуры. Мы получили эту ошибку, удалив одну из закрывающих фигурных скобок возле нижней части функции  checkGuess().

+ +

SyntaxError: expected expression, got 'string' or SyntaxError: unterminated string literal

+ +

Эти ошибки обычно означает, что вы пропустили открывающую или закрывающую кавычку для строковых значений. В первой ошибки выше,  строка  будет заменена на неожиданный персонаж (ей) , что браузер нашел вместо кавычек в начале строки. Вторая ошибка означает , что строка не закончилась кавычки.

+ +

При всех этих ошибках действуйте так, как в наших  примерах, которые мы рассмотрели в пошаговом руководстве. Когда возникает ошибка, посмотрите полученный номер строки, перейдите к этой строке и посмотрите, можете ли вы определить, что случилось. Имейте в виду, что ошибка не обязательно будет на этой строке, а также, что ошибка может быть вызвана не такой же проблемой, которую мы привели выше!

+ +
+

Примечание : Смотрите наш SyntaxError: Неожиданный токен и SyntaxError: незавершенная строка эталонных страниц для получения более подробной информации об этих ошибках.

+
+ +

Резюме

+ +

Итак, мы научились основам  выяснения ошибок в простых программах JavaScript. Не всегда так просто разобраться, что не так в вашем коде, но, по крайней мере, это сэкономит вам несколько часов сна и позволит вам продвигаться немного быстрее, когда что-либо заработает не так, как ожидалось, в вашем учебном путешествии.

+ +

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

+ +
+ +
+ +

{{PreviousMenuNext("Learn/JavaScript/Первые_шаги/A_first_splash", "Learn/JavaScript/Первые_шаги/Variables", "Learn/JavaScript/Первые_шаги")}}

diff --git a/files/ru/learn/javascript/objects/adding_bouncing_balls_features/index.html b/files/ru/learn/javascript/objects/adding_bouncing_balls_features/index.html new file mode 100644 index 0000000000..fe97392371 --- /dev/null +++ b/files/ru/learn/javascript/objects/adding_bouncing_balls_features/index.html @@ -0,0 +1,212 @@ +--- +title: Добавление функций в нашу демонстрацию отбойных шаров +slug: Learn/JavaScript/Объекты/Adding_bouncing_balls_features +translation_of: Learn/JavaScript/Objects/Adding_bouncing_balls_features +--- +
{{LearnSidebar}}
+ +
{{PreviousMenuNext("Learn/JavaScript/Objects/Object_building_practice", "", "Learn/JavaScript/Objects")}}
+ +

В этом упражнении мы будем использовать проект прыгающих шаров из предыдущей статьи и добавим в него новые интересные возможности.

+ + + + + + + + + + + + +
Требования:Перед тем как приступить к этому упражнению нужно выполнить задания из всех статей текущего модуля.
Цель:Проверить насколько хорошо вы понимаете объекты и связанные с ними конструкции в языке Javascript. 
+ +

Начало

+ +

Для начала скопируйте файлы index-finished.html, style.css и main-finished.js из предыдущей статьи в новую директорию на вашем компьютере.

+ +

Для выполнения упражнения вы можете использовать сайт JSBin или Thimble. Вы можете вставлять HTML, CSS и JavaScript код в один из этих онлайн-редакторов. Если ваш онлайн-редактор не поддерживает раздельные панели для редактирования JavaScript/CSS кода, то вы можете встроить код в HTML с помощью тегов <script>/<style>.

+ +
+

Примечание. Если у вас что-то не получается — попросите о помощи. Более подробная информация находится в секции {{anch("Assessment or further help")}} в конце этой страницы.

+
+ +

Краткое описание проекта

+ +

Наша веселая демонстрация шаров - это весело, но теперь мы хотим сделать ее немного более интерактивной, добавив контролируемый пользователем злой круг, который будет есть шары, если он их поймает. Мы также хотим проверить ваши навыки создания объектов, создав общий объект Shape(), который могут наследовать наши шары и злой круг. Наконец, мы хотим добавить счетчик очков, чтобы отслеживать количество оставшихся шаров для захвата.

+ +

Следующий скриншот дает вам представление о том, как должна выглядеть готовая программа:

+ +

+ + + +

Чтобы дать вам больше идеи, посмотрите на законченный пример (не заглядывая в исходный код!)

+ +

Шаги по завершению

+ +

В следующих разделах описывается, что вам нужно делать.

+ +

Создание наших новых объектов

+ +

Прежде всего, измените существующий конструктор Ball() так, чтобы он стал конструктором Shape() и добавил новый конструктор Ball():

+ +
    +
  1. Конструктор Shape() должен определять свойства x, y, velX и velY,  так же, как и конструктор Ball(), но не свойства color и size.
  2. +
  3. Он также должен определить новое свойствоexists, которое используется для отслеживания наличия шаров в программе (не было съедено злым кругом). Это должно быть логическое (true / false).
  4. +
  5. Конструктор Ball() должен наследовать свойства x, y, velX, velY и exists из конструктора Shape().
  6. +
  7. Он также должен определить свойство color и size, как это сделал оригинальный конструктор Ball().
  8. +
  9. Не забудьте установить prototype и constructor конструктора Ball() соответствующим образом.
  10. +
+ +

Определения меток шара draw(), update() и collisionDetect() должны быть такими же, как и раньше.

+ +

Вам также нужно добавить новый параметр в новый вызов конструктора new Ball() ( ... ) - параметр exists должен быть 5-м параметром и ему должно быть присвоено значение true.

+ +

На этом этапе попробуйте перезагрузить код - он должен работать так же, как и раньше, с нашими перепроектированными объектами.

+ +

Определение EvilCircle()

+ +

Теперь пришло время встретить плохого парня - EvilCircle()! Наша игра будет включать только один злой круг, но мы все еще будем определять его с помощью конструктора, который наследует от Shape(), чтобы дать вам некоторую практику. Возможно, вам захочется добавить еще один круг в приложение, которое может контролироваться другим игроком или иметь несколько злобных окружений, управляемых компьютером. Вы, вероятно, не собираетесь захватить мир одним злым кругом, но он будет делать для этой оценки.

+ +

Конструктор EvilCircle() должен наследовать x, y, velX, velY и exists из Shape(), но velX и velY должны всегда равняться 20.

+ +

Вы должны сделать что-то вроде Shape.call(this, x, y, 20, 20, exists);

+ +

Он также должен определить свои собственные свойства следующим образом:

+ + + +

Опять же, не забудьте определить свои унаследованные свойства как параметры в конструкторе и правильно установить свойства prototype и constructor.

+ +

Defining EvilCircle()'s methods

+ +

EvilCircle() должен иметь четыре метода, как описано ниже.

+ +

draw()

+ +

Этот метод имеет ту же цель, что и метод draw() метода Ball(): он рисует экземпляр объекта на холсте. Он будет работать очень схожим образом, поэтому вы можете начать с копирования определения Ball.prototype.draw. Затем вы должны внести следующие изменения:

+ + + +

checkBounds()

+ +

Этот метод будет делать то же самое, что и первая часть функции  Ball()'s update(), чтобы посмотреть, не исчезнет ли злой круг от края экрана и не прекратит это делать. Опять же, вы можете просто скопировать определение Ball.prototype.update, но есть несколько изменений, которые вы должны сделать:

+ + + +

setControls()

+ +

Этот метод добавит прослушиватель событий onkeydown к объекту window, чтобы при нажатии определенных клавиш клавиатуры мы могли перемещать злой круг вокруг. Следующий код должен быть помещен внутри определения метода:

+ +
var _this = this;
+window.onkeydown = function(e) {
+    if (e.keyCode === 65) {
+      _this.x -= _this.velX;
+    } else if (e.keyCode === 68) {
+      _this.x += _this.velX;
+    } else if (e.keyCode === 87) {
+      _this.y -= _this.velY;
+    } else if (e.keyCode === 83) {
+      _this.y += _this.velY;
+    }
+  }
+ +

Поэтому, когда нажата клавиша, проконсультируется о свойствах keyCode объекта события, чтобы увидеть, какая клавиша нажата. Если это один из четырех, представленных указанными ключевыми кодами, тогда злой круг будет перемещаться влево / вправо / вверх / вниз.

+ + + +

collisionDetect()

+ +

Этот метод будет действовать очень похоже на метод collisionDetect() в Ball(), поэтому вы можете использовать его в качестве основы для этого нового метода. Но есть несколько отличий:

+ + + +

Приведение злого круга в программу

+ +

Теперь мы определили злой круг, нам нужно на самом деле заставить его появиться на нашей сцене. Для этого вам нужно внести некоторые изменения в функцию loop().

+ + + +

Реализация счетчика баллов

+ +

Чтобы выполнить счетчик счетчиков, выполните следующие действия:

+ +
    +
  1. В своем HTML-файле добавьте элемент {{HTMLElement ("p")}} непосредственно под элементом {{HTMLElement ("h1")}}, содержащим текст «Ball count:».
  2. +
  3. В вашем файле CSS добавьте следующее правило внизу: +
    p {
    +  position: absolute;
    +  margin: 0;
    +  top: 35px;
    +  right: 5px;
    +  color: #aaa;
    +}
    +
  4. +
  5. В своем JavaScript сделайте следующие обновления: +
      +
    • Создайте переменную, которая хранит ссылку на абзац.
    • +
    • Держите подсчет количества шаров на экране в некотором роде.
    • +
    • Увеличьте количество и покажите обновленное количество шаров каждый раз, когда шар добавляется в сцену.
    • +
    • Уменьшите счет и покажите обновленное количество мячей каждый раз, когда злой круг ест шарик (его не существует).
    • +
    +
  6. +
+ +

Советы и подсказки

+ + + +

Assessment

+ +

Если вы проводите эту оценку в рамках организованного курса, вы должны уметь отдать свою работу своему учителю / наставнику для маркировки. Если вы самообучаетесь, то вы можете получить руководство по маркировке довольно легко, задав тему обсуждения для этого упражнения или в IRC-канале #mdn в Mozilla IRC. Сначала попробуйте упражнение - ничего не выиграть от обмана!

+ +

{{PreviousMenuNext("Learn/JavaScript/Objects/Object_building_practice", "", "Learn/JavaScript/Objects")}}

+ + + +

In this module

+ + + + + +
+ + +
+ +
+
diff --git a/files/ru/learn/javascript/objects/basics/index.html b/files/ru/learn/javascript/objects/basics/index.html new file mode 100644 index 0000000000..a4e7cc0071 --- /dev/null +++ b/files/ru/learn/javascript/objects/basics/index.html @@ -0,0 +1,257 @@ +--- +title: Основы объектов в JavaScript +slug: Learn/JavaScript/Объекты/Основы +tags: + - JavaScript + - ООП +translation_of: Learn/JavaScript/Objects/Basics +--- +
{{LearnSidebar}}
+ +
{{NextMenu("Learn/JavaScript/Objects/Object-oriented_JS", "Learn/JavaScript/Objects")}}
+ +

В этой статье мы рассмотрим объекты в JavaScript. Мы будем разбирать основы синтаксиса объектов JavaScript и заново изучим некоторый функционал JavaScript, который мы уже исследовали ранее на курсе, подтвердив тот факт, что большая часть функционала, с которым мы уже столкнулись, в действительности является объектами.

+ + + + + + + + + + + + +
Необходимые знания:Элементарная компьютерная грамотность, базовое понимание HTML и CSS, знакомство с основами JavaScript (см. Первые шаги и Структурные элементы).
Цель:Понимать основу теории перед началом объектно-ориентированного программирования, как это связано с JavaScript ("большинство сущностей являются объектами"), и как начать работу с объектами JavaScript.
+ +

Основы объектов

+ +

Объект — это совокупность связанных данных и/или функциональных возможностей. Обычно состоят из нескольких переменных и функций, которые называются свойства и методы, если они находятся внутри объектов. Разберём пример, чтобы показать, как они выглядят.

+ +

Чтобы начать, скопируйте себе oojs.html файл. В нём содержится очень мало: {{HTMLElement("script")}} элемент для написания в нём исходного кода. Мы будем использовать это как основу для изучения основ синтаксиса объектов. Во время работы с этим примером у вас должна быть открытая консоль JavaScript инструментов разработчика, готовая к вводу некоторых команд.

+ +

Как и во многих случаях в JavaScript, создание объекта часто начинается с определения и инициализации переменной. Попробуйте ввести следующий код JavaScript в ваш файл, а затем сохраните файл и обновите страницу браузера:

+ +
const person = {};
+ +

Если Вы введёте person в текстовое JS консоль и нажмёте клавишу Enter, должен получиться следующий результат:

+ +
Object { }
+ +

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

+ +
const person = {
+  name: ['Bob', 'Smith'],
+  age: 32,
+  gender: 'male',
+  interests: ['music', 'skiing'],
+  bio: function() {
+    alert(this.name[0] + ' ' + this.name[1] + ' is ' + this.age + ' years old. He likes ' + this.interests[0] + ' and ' + this.interests[1] + '.');
+  },
+  greeting: function() {
+    alert('Hi! I\'m ' + this.name[0] + '.');
+  }
+};
+
+ +

После сохранения и обновления, попробуйте ввести что-нибудь следующее в консоль JavaScript браузера:

+ +
person.name
+person.name[0]
+person.age
+person.interests[1]
+person.bio()
+person.greeting()
+ +

Теперь внутри объекта есть некоторые данные и функционал, и теперь можно получить доступ к ним с помощью некоторого лёгкого и простого синтаксиса!

+ +
+

Примечание: Если у вас возникли проблемы с применением файла в работе, попробуйте сравнить ваш код с нашей версией — см. oojs-finished.html (также see it running live). Одна из распространенных ошибок, когда Вы начинаете с объектами ставить запятую в конце последнего члена — это приводит к ошибке.

+
+ +

Итак что здесь происходит? Объект состоит из нескольких элементов, каждый из которых имеет своё название (пример name и age выше), и значение (пример ['Bob', 'Smith'] и 32). Каждая пара название/значение должны быть разделены запятой, а название и значение в каждом случае разделяются двоеточием. Синтаксис всегда следует этому образцу:

+ +
const objectName = {
+  member1Name: member1Value,
+  member2Name: member2Value,
+  member3Name: member3Value
+};
+ +

Значение члена объекта может быть чем угодно — в нашем объекте person есть строка, число, два массива, и две функции. Первые четыре элемента это элементы данных, относящиеся к свойствам объекта. Последние два элемента являются функциями, которые позволяют объекту что-то сделать с элементами данных, и называются методами объекта.

+ +

Такие объекты называются литералами объекта (object literal) — мы буквально вписали все содержимое объекта для его создания. Этот способ сильно отличается от объектов реализованных классами, которые мы рассмотрим позже.

+ +

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

+ +

Точечная запись (Dot notation)

+ +

Выше Вы получили доступ к свойствам и методам используя точечную запись (dot notation). Имя объекта (person) действует как пространство имен (namespace) — оно должно быть введено первым, для того чтобы получить доступ ко всему что заключено (encapsulated) внутри объекта. Далее Вы пишете точку, затем элемент, к которому хотите получить доступ — это может быть имя простого свойства, элемент массива, или вызов одного из методов объекта, например:

+ +
person.age
+person.interests[1]
+person.bio()
+ +

Внутренние пространства имен (Sub-namespaces)

+ +

Можно даже сделать значением элемента объекта другой объект. Например, попробуйте изменить значение свойства name с такого

+ +
name: ['Bob', 'Smith'],
+ +

на такое

+ +
name : {
+  first: 'Bob',
+  last: 'Smith'
+},
+ +

Здесь мы фактически создаем внутреннее пространство имен (sub-namespace). Это звучит сложно, но на самом деле это не так — для доступа к этим элементам Вам нужно сделать один дополнительный шаг с еще одной точкой. Попробуйте в консоли браузера следующее: 

+ +
person.name.first
+person.name.last
+ +

Важно: На этом этапе вам также нужно будет пересмотреть код метода и изменить все экземпляры с

+ +
name[0]
+name[1]
+ +

на

+ +
name.first
+name.last
+ +

Иначе ваши методы больше не будут работать.

+ +

Скобочная запись (Bracket notation)

+ +

Существует другой способ получить свойства объекта — использовать скобочную запись (bracket notation). Вместо написания этого кода:

+ +
person.age
+person.name.first
+ +

Вы можете использовать следующий

+ +
person['age']
+person['name']['first']
+ +

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

+ +

Запись элементов в объект

+ +

До сих пор мы рассмастривали только возврат (или получение) элементов объекта — Вы так же можете установить (обновить) значение элемента объекта просто объявив элемент, который Вы хотите установить (используя точечную или скобочную запись), например:

+ +
person.age = 45;
+person['name']['last'] = 'Cratchit';
+ +

Попробуйте ввести эти строки, а затем снова верните элементы, чтобы увидеть, как они изменились

+ +
person.age
+person['name']['last']
+ +

Вы можете не просто обновлять и устанавливать значения свойств и методов объекта, а так же устанавливать совершенно новые элементы. Попробуйте их в консоли JS:

+ +
person['eyes'] = 'hazel';
+person.farewell = function() { alert("Bye everybody!"); }
+ +

Теперь Вы можете проверить ваши новые элементы:

+ +
person['eyes']
+person.farewell()
+ +

Одним из полезных аспектов скобочной записи является то, что с ее помощью можно динамически задавать не только значения элементов, но и их имена. Предположим, что мы хотим, чтобы пользователи могли хранить пользовательские типы данных, введя имя и значение элемента в два следующих поля? Мы могли бы получить эти значения следующим образом:

+ +
let myDataName = nameInput.value;
+let myDataValue = nameValue.value;
+ +

Затем мы можем добавить имя и значение этого нового элемента в объект person таким образом:

+ +
person[myDataName] = myDataValue;
+ +

Чтобы проверить это, попробуйте добавить следующие строки в свой код, после закрывающей скобки объекта person :

+ +
let myDataName = 'height';
+let myDataValue = '1.75m';
+person[myDataName] = myDataValue;
+ +

Теперь попробуйте сохранить и обновить, затем введите следующее в консоль браузера:

+ +
person.height
+ +

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

+ +

Что такое "this"?

+ +

Возможно, вы заметили что-то странное в наших методах. Посмотрите на этот пример:

+ +
greeting: function() {
+  alert('Hi! I\'m ' + this.name.first + '.');
+}
+ +

Вы, вероятно, задаетесь вопросом, что такое "this"? Ключевое слово this, ссылается на текущий объект, внутри которого пишется код — поэтому в нашем случае this равен объекту person. Но почему просто не написать person? Как Вы увидите в статье Object-oriented JavaScript for beginners (Объектно-ориентированный JavaScript для начинающих), когда мы начинаем создавать конструкторы и т.д., this очень полезен — он всегда будет гарантировать, что используется верное значение, когда контекст элемента изменяется (например, два разных экземпляра объекта person могут иметь разные имена, но захотят использовать свое собственное имя при приветствии.

+ +

Давайте проиллюстритуем, что мы имеем в виду, с упрощенной парой объектов person :

+ +
const person1 = {
+  name: 'Chris',
+  greeting: function() {
+    alert('Hi! I\'m ' + this.name + '.');
+  }
+}
+
+const person2 = {
+  name: 'Brian',
+  greeting: function() {
+    alert('Hi! I\'m ' + this.name + '.');
+  }
+}
+ +

В этом случае, person1.greeting() выведет "Hi! I'm Chris.". person2.greeting(), с другой стороны, выведет "Hi! I'm Brian.", хотя код метода одинаковый в обоих случаях. Как мы сказали ранее, this равен объекту, внутри которого находится код — это не очень полезно, когда Вы пишите литералы объектов вручную, но оно действительно помогает, когда Вы генерируете объекты динамически (например используя конструкторы). Это станет понятнее чуть позже.

+ +

Все это время вы использовали объекты

+ +

Пока Вы проходили эти примеры, Вы вероятно заметили, что точечная запись, которую Вы использовали, выглядит очень знакомо. Это потому, что Вы использовали ее на протяжении всего курса! Каждый раз, когда мы работаем над примером, использующим встроенный API браузера или объект JavaScript, мы использовали объекты, потому что такие функции построены с использованием тех же структур объектов, которые мы здесь рассматривали, хотя и более сложные, чем наши собственные пользовательские примеры. 

+ +

Поэтому, когда Вы использовали строковые методы, такие как:

+ +
myString.split(',');
+ +

Вы использовали метод доступный в экземпляре класса String. Каждый раз создавая строку в вашем коде, эта строка автоматически создается как экземпляр String, и поэтому имеет несколько общих методов/свойств, доступных на нем.

+ +

Когда Вы обращались к объектной модели документа (DOM), используя следующие строки:

+ +
const myDiv = document.createElement('div');
+const myVideo = document.querySelector('video');
+ +

Вы использовали методы доступные в экземпляре класса Document. Для каждой загруженной веб-страницы создается экземпляр Document, называемый document, который представляет всю структуру страницы, ее содержимое и другие функции, такие как URL-адрес. Опять же, это означает, что он имеет несколько общих методов/свойств, доступных на нем.

+ +

То же самое относится и к любому другому встроенному объекту/API, который вы использовали — Array, Math, и т. д.

+ +

Обратите внимание, что встроенные объекты/API не всегда создают экземпляры объектов автоматически. Как пример, Notifications API — который позволяет новым браузерам запускать системные уведомления, требует, чтобы Вы создавали новый экземпляр объекта с помощью конструктора для каждого уведомления, которое Вы хотите запустить. Попробуйте ввести следующее в консоль JavaScript:

+ +
const myNotification = new Notification('Hello!');
+ +

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

+ +
+

Примечание: Полезно подумать о том, как объекты взаимодействуют посредством передачи сообщений - когда объекту требуется другой объект для выполнения какого-либо действия, он часто отправляет сообщение другому объекту через один из его методов и ждет ответа, который мы знаем как возвращаемое (return) значение.

+
+ +

Резюме

+ +

Поздравляем, Вы достигли конца нашей первой статьи о объектах JS, теперь у вас должно быть хорошее представление о том, как работать с объектами в JavaScript - в том числе создавать свои собственные простые объекты. Вы также должны понимать, что объекты очень полезны в качестве структур для хранения связанных данных и функциональности - если бы мы пытались отслеживать все свойства и методы в нашем объекте person как отдельные переменные и функции, это было неэффективно, и мы бы рисковали столкнуться с другими переменными и функциями с такими же именами. Объекты позволяют нам безопасно хранить информацию в своем собственном блоке, вне опасности.

+ +

В следующей статье мы начнем рассматривать теорию объектно-ориентированного программирования (OOП) и как эти техники могут быть использованны в JavaScript 

+ +

{{NextMenu("Learn/JavaScript/Objects/Object-oriented_JS", "Learn/JavaScript/Objects")}}

+ +

В этом модуле

+ + diff --git a/files/ru/learn/javascript/objects/index.html b/files/ru/learn/javascript/objects/index.html new file mode 100644 index 0000000000..9acc354feb --- /dev/null +++ b/files/ru/learn/javascript/objects/index.html @@ -0,0 +1,47 @@ +--- +title: Введение в объекты JavaScript +slug: Learn/JavaScript/Объекты +tags: + - JavaScript + - Начинающим + - Объекты + - Руководства +translation_of: Learn/JavaScript/Objects +--- +
{{LearnSidebar}}
+ +

В JavaScript большинство сущностей являются объектами, начиная с самого основного функционала JavaScript, такого как строки (strings) и массивы (array), и заканчивая встроенными в браузер API. Вы можете даже создавать свои собственные объекты, чтобы инкапсулировать связанные между собой функции и переменные в эффективные пакеты и действовать как удобные хранилища данных. Понимание объектно-ориентированной природы JavaScript очень важно, если Вы хотите продолжить дальнейшее более углубленное изучение языка. Поэтому мы предоставляем Вам данный модуль, чтобы помочь Вам разобраться в этом. Здесь мы детально обучим Вас теории и синтаксису объектов, а затем рассмотрим, как создавать свои собственные объекты. 

+ +

Необходимые знания

+ +

Перед тем, как начать изучение данного модуля, Вы должны иметь некоторое представление о HTML и CSS. Мы советуем Вам поработать над разделами Введение в HTML и Введение в CSS перед изучением этого модуля JavaScript.

+ +

Также Вам необходимо знать основы JavaScript перед подробным изучением объектов JavaScript. Предварительно поработайте с разделами Первые шаги в JavaScript и Структурные элементы в JavaScript перед началом изучения данного модуля.

+ +
+

Примечание: Если Вы работаете за компьютером/планшетом/другим устройством, на котором у Вас нет возможности создавать собственные файлы, постарайтесь поработать с примерами кода на платформах онлайн-программирования, таких, как JSBin or Thimble.

+
+ +

Руководства

+ +
+
Основы объектов
+
В первой статье мы рассмотрим объекты в JavaScript. Мы будем разбирать основы синтаксиса объектов JavaScript и заново изучим некоторый функционал JavaScript, который мы уже исследовали ранее на курсе, подтвердив тот факт, что большая часть функционала, с которым мы уже столкнулись, в действительности является объектами.
+
Объектно-ориентированный JavaScript для начинающих
+
Закончив с основами, мы сфокусируемся на объектно-ориентированном JavaScript (OOJS) —  эта статья представляет основы теории объектно-ориентированного программирования (ООП). Затем мы изучим, как JavaScript эмулирует классы объектов через конструктор функций, и как создавать экземпляры объектов.
+
Прототипы объектов
+
Прототипы - это механизм, благодаря которому объекты в JavaScript наследуют функционал друг друга, но при этом они работают иначе по сравнению с механизмами наследования в классических объектно-ориентированных языках. В этой статье мы изучим эти отличия, объясним, как работает цепочка прототипов, и рассмотрим, как свойство прототипа может быть использовано для добавления методов к существующим конструкторам.
+
Наследование в JavaScript
+
После знакомства с самыми жуткими подробностями OOJS, эта статья покажет, как создавать "дочерные" классы объектов (конструкторы), которые наследуют функционал от своих "родительских" классов. В дополнении, мы дадим Вам пару советов о том, где и когда можно использовать OOJS.
+
Работа с JSON-данными
+
Представление объектов в JavaScript (JavaScript Object Notation) (JSON) - это стандартный формат для представления структурированных данных в виде объектов JavaScript, который обычно используется для представления и передачи данных на веб-сайтах (т.е. передача некоторых данных от сервера к клиенту - таким образом они могут быть отображены на веб-странице). Вы довольно часто будете с этим сталкиваться, поэтому в данной статье мы предоставим вам все, что необходимо для работы с JSON с помощью JavaScript, в том числе доступ к элементам данных в объекте JSON и написания собственного JSON-кода.
+
Практика построения объектов
+
В предыдущих статьях мы рассматривали самые основные моменты в теории и синтаксисе объектов в JavaScript, дав Вам твердую основу для начала. В этой статье мы погрузимся в практические занятия, получим больше практической работы в построении собственных объектов в JavaScript, чтобы сделать кое-что веселое и красочное - несколько цветных прыгающих шариков.
+
+ +

Задания

+ +
+
Добавление функционала к демо с прыгающими шариками
+
В этом задании, мы ожидаем, что Вы, используя демо с прыгающими шариками из предыдущей статьи как отправную точку, добавите немного нового и интересного функционала в него.
+
diff --git a/files/ru/learn/javascript/objects/inheritance/index.html b/files/ru/learn/javascript/objects/inheritance/index.html new file mode 100644 index 0000000000..c1565cd72f --- /dev/null +++ b/files/ru/learn/javascript/objects/inheritance/index.html @@ -0,0 +1,266 @@ +--- +title: Наследование в JavaScript +slug: Learn/JavaScript/Объекты/Inheritance +tags: + - JavaScript + - Наследование + - ООП +translation_of: Learn/JavaScript/Objects/Inheritance +--- +

+ +

+ + + +
{{LearnSidebar}}
+ +
{{PreviousMenuNext("Learn/JavaScript/Objects/Object_prototypes", "Learn/JavaScript/Objects/JSON", "Learn/JavaScript/Objects")}}
+ +

Теперь, когда объясняется большая часть подробностей OOJS, эта статья показывает, как создавать «дочерние» классы объектов (конструкторы), которые наследуют признаки из своих «родительских» классов. Кроме того, мы дадим некоторые советы о том, когда и где вы можете использовать OOJS , и посмотрим, как классы рассматриваются в современном синтаксисе ECMAScript.

+ + + + + + + + + + + + +
Необходимые знания: +

Базовая компьютерная грамотность, понимание основ HTML и CSS, знакомство с основами JavaScript (см. Первые шаги и Структурные элементы) and основы Объектно-ориентированного JS (см. Введение в объекты).

+
Цель:Понять, как можно реализовать наследование в JavaScript.
+ +

Прототипное наследование

+ +

До сих пор мы видели некоторое наследование в действии - мы видели, как работают прототипы и как элементы наследуются, поднимаясь по цепочке. Но в основном это связано с встроенными функциями браузера. Как создать объект в JavaScript, который наследует от другого объекта?

+ +

Давайте рассмотрим, как это сделать на конкретном примере.

+ +

Начало работы

+ +

Прежде всего сделайте себе локальную копию нашего файла oojs-class-inheritance-start.html (он также работает в режиме реального времени). В файле вы найдете тот же пример конструктора Person(), который мы использовали на протяжении всего модуля, с небольшим отличием - мы определили внутри конструктора только лишь свойства:

+ +
function Person(first, last, age, gender, interests) {
+  this.name = {
+    first,
+    last
+  };
+  this.age = age;
+  this.gender = gender;
+  this.interests = interests;
+};
+ +

Все методы определены в прототипе конструктора. Например:

+ +
Person.prototype.greeting = function() {
+  alert('Hi! I\'m ' + this.name.first + '.');
+};
+ +
+

Примечание. В исходном коде вы также увидите определенные методы bio() и farewell(). Позже вы увидите, как они могут быть унаследованы другими конструкторами.

+
+ +

Скажем так, мы хотели создать класс Teacher, подобный тому, который мы описали в нашем первоначальном объектно-ориентированном определении, которое наследует всех членов от Person, но также включает в себя:

+ +
    +
  1. Новое свойство, subject - оно будет содержать предмет, который преподает учитель.
  2. +
  3. Обновленный метод greeting(), который звучит немного более формально, чем стандартный метод greeting()— более подходит для учителя, обращающегося к некоторым ученикам в школе.
  4. +
+ +

Определение функции-конструктора Teacher()

+ +

Первое, что нам нужно сделать, это создать конструктор Teacher() - добавьте ниже следующий код:

+ +
function Teacher(first, last, age, gender, interests, subject) {
+  Person.call(this, first, last, age, gender, interests);
+
+  this.subject = subject;
+}
+ +

Это похоже на конструктор Person во многих отношениях, но здесь есть что-то странное, что мы не видели раньше - функцию call(). Эта функция в основном позволяет вам вызывать функцию, определенную где-то в другом месте, но в текущем контексте. Первый параметр указывает значение this, которое вы хотите использовать при выполнении функции, а остальные параметры - те, которые должны быть переданы функции при ее вызове.

+ +

Мы хотим, чтобы конструктор Teacher() принимал те же параметры, что и конструктор Person(), от которго он наследуется, поэтому мы указываем их как параметры в вызове call().

+ +

Последняя строка внутри конструктора просто определяет новое свойство subject, которое будут иметь учителя, и которого нет у Person().

+ +

В качестве примечания мы могли бы просто сделать это:

+ +
function Teacher(first, last, age, gender, interests, subject) {
+  this.name = {
+    first,
+    last
+  };
+  this.age = age;
+  this.gender = gender;
+  this.interests = interests;
+  this.subject = subject;
+}
+ +

Но это просто переопределяет свойства заново, а не наследует их от Person(), так что теряется смысл того, что мы пытаемся сделать. Он также занимает больше строк кода.

+ +

Наследование от конструктора без параметров

+ +

Обратите внимание, что если конструктор, от которого вы наследуете, не принимает значения своего свойства из параметров, вам не нужно указывать их в качестве дополнительных аргументов в call(). Так, например, если у вас было что-то действительно простое:

+ +
function Brick() {
+  this.width = 10;
+  this.height = 20;
+}
+ +

Вы можете наследовать свойства width и height, выполнив это (как и другие шаги, описанные ниже, конечно):

+ +
function BlueGlassBrick() {
+  Brick.call(this);
+
+  this.opacity = 0.5;
+  this.color = 'blue';
+}
+ +

Обратите внимание, что мы указали только this внутри call() - никаких других параметров не требуется, поскольку мы не наследуем никаких свойств родителя, которые задаются через параметры.

+ +

Установка Teacher()'s prototype и конструктор ссылок

+ +

Пока все хорошо, но у нас есть проблема. Мы определили новый конструктор и у него есть свойство prototype, которое по умолчанию просто содержит ссылку на саму конструкторскую функцию. Он не содержит методов свойства prototype конструктора Person. Чтобы увидеть это, введите Object.getOwnPropertyNames(Teacher.prototype) в поле ввода текста или в вашу консоль JavaScript. Затем введите его снова, заменив Teacher на Person. Новый конструктор не наследует эти методы. Чтобы увидеть это, сравните выводы в консоль Person.prototype.greeting и Teacher.prototype.greeting. Нам нужно заставить Teacher() наследовать методы, определенные на прототипе Person(). Итак, как мы это делаем?

+ +
    +
  1. Добавьте следующую строку ниже своего предыдущего добавления: +
    Teacher.prototype = Object.create(Person.prototype);
    + Здесь наш друг create() снова приходит на помощь. В этом случае мы используем его для создания нового объекта и делаем его значением Teacher.prototype. Новый объект имеет свой прототип Person.prototype и, следовательно, наследует, если и когда это необходимо, все доступные методы Person.prototype.
  2. +
  3. Нам нужно сделать еще одну вещь, прежде чем двигаться дальше. После добавления последней строки, Teacher.prototype.constructor стало равным Person(), потому что мы просто устанавливаем Teacher.prototype для ссылки на объект, который наследует его свойства от Person.prototype! Попробуйте сохранить код, загрузите страницу в браузере и введите Teacher.prototype.constructor в консоль для проверки.
  4. +
  5. Это может стать проблемой, поэтому нам нужно сделать это правильно. Вы можете сделать это, вернувшись к исходному коду и добавив следующие строки внизу: +
    Object.defineProperty(Teacher.prototype, 'constructor', {
    +    value: Teacher,
    +    enumerable: false, // false, чтобы данное свойство не появлялось в цикле for in
    +    writable: true });
    +
  6. +
  7. Теперь, если вы сохраните и обновите, введите Teacher.prototype.constructor, чтобы вернуть Teacher(), плюс мы теперь наследуем Person()!
  8. +
+ +

Предоставление Teacher() новой функции greeting()

+ +

Чтобы завершить наш код, нам нужно определить новую функцию greeting() в конструкторе Teacher().

+ +

Самый простой способ сделать это - определить его на прототипе Teacher() - добавить в нижнюю часть кода следующее:

+ +
Teacher.prototype.greeting = function() {
+  var prefix;
+
+  if (this.gender === 'male' || this.gender === 'Male' || this.gender === 'm' || this.gender === 'M') {
+    prefix = 'Mr.';
+  } else if (this.gender === 'female' || this.gender === 'Female' || this.gender === 'f' || this.gender === 'F') {
+    prefix = 'Mrs.';
+  } else {
+    prefix = 'Mx.';
+  }
+
+  alert('Hello. My name is ' + prefix + ' ' + this.name.last + ', and I teach ' + this.subject + '.');
+};
+ +

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

+ +

Попробуйте пример

+ +

Теперь, когда вы ввели весь код, попробуйте создать экземпляр объекта из Teacher(), поставив ниже вашего JavaScript кода (или что-то похожее по вашему выбору):

+ +
var teacher1 = new Teacher('Dave', 'Griffiths', 31, 'male', ['football', 'cookery'], 'mathematics');
+ +

Теперь сохраните, обновите, и попробуйте получить доступ к свойствам и методам вашего нового объекта teacher1, например:

+ +
teacher1.name.first;
+teacher1.interests[0];
+teacher1.bio();
+teacher1.subject;
+teacher1.greeting();
+teacher1.farewell();
+ +

Все должно работать нормально. Запросы в строках 1, 2, 3 и 6 унаследованны от общего конструктора Person() (класса). Запрос в строке 4 обращается к subject, доступному только для более специализированного конструктора (класса) Teacher(). Запрос в строке 5 получил бы доступ к методу greeting(), унаследованному от Person(), но Teacher() имеет свой собственный метод greeting() с тем же именем, поэтому запрос обращается к этому методу.

+ +
+

Примечание. Если вам не удается заставить это работать, сравните свой код с нашей готовой версией (см. также рабочее демо).

+
+ +

Методика, которую мы здесь рассмотрили, - это не единственный способ создания наследующих классов в JavaScript, но он работает нормально и это дает вам представление о том, как реализовать наследование в JavaScript.

+ +

Вам также может быть интересно узнать некоторые из новых функций {{glossary("ECMAScript")}}, которые позволяют нам делать наследование более чисто в JavaScript (см. Classes). Мы не рассматривали их здесь, поскольку они пока не поддерживаются очень широко в браузерах. Все остальные конструкторы кода, которые мы обсуждали в этом наборе статей, поддерживаются еще в IE9 или ранее и есть способы добиться более ранней поддержки, чем это.

+ +

Обычный способ - использовать библиотеку JavaScript - большинство популярных опций имеют простой набор функций, доступных для выполнения наследования более легко и быстро. CoffeeScript , например, предоставляет класс, расширяет и т.д.

+ +

Дальнейшее упражнение

+ +

В нашем руководстве по Объектно-ориентированному JavaScript для начинающих мы также включили класс Student как концепцию, которая наследует все особенности Person, а также имеет другой метод greeting() от Person, который гораздо более неформален, чем приветствие Teacher. Посмотрите, как выглядит приветствие ученика в этом разделе, и попробуйте реализовать собственный конструктор Student(), который наследует все функции Person() и реализует другую функцию greeting().

+ +
+

Примечание. Если вам не удается заставить это работать, сравните свой код с нашей готовой версией (см. также рабочее демо).

+
+ +

Object member summary

+ +

Подводя итог, вы в основном получили три типа свойств / методов, о которых нужно беспокоиться:

+ +
    +
  1. Те, которые определены внутри функции-конструктора, которые присваиваются экземплярам объекта. Их довольно легко заметить - в вашем собственном коде они представляют собой элементы, определенные внутри конструктора, используя строки this.x = x; в встроенном коде браузера они являются членами, доступными только для экземпляров объектов (обычно создаются путем вызова конструктора с использованием ключевого слова new, например var myInstance = new myConstructor ().
  2. +
  3. Те, которые определяются непосредственно самим конструктором, которые доступны только для конструктора. Они обычно доступны только для встроенных объектов браузера и распознаются путем непосредственной привязки к конструктору, а не к экземпляру. Например, Object.keys().
  4. +
  5. Те, которые определены в прототипе конструктора, которые наследуются всеми экземплярами и наследуют классы объектов. К ним относятся любой член, определенный в свойстве прототипа конструктора, например. myConstructor.prototype.x().
  6. +
+ +

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

+ +

Когда вы используете наследование в JavaScript?

+ +

В частности, после этой последней статьи вы можете подумать: «У-у-у, это сложно». Ну, ты прав. Прототипы и наследование представляют собой некоторые из самых сложных аспектов JavaScript, но многие возможности и гибкость JavaScript вытекают из его структуры объектов и наследования и стоит понять, как это работает.

+ +

В некотором смысле вы используете наследование все время. Всякий раз, когда вы используете различные функции веб-API или методы/свойства, определенные во встроенном объекте браузера, который вы вызываете в своих строках, массивах и т.д., вы неявно используете наследование.

+ +

Что касается использования наследования в вашем собственном коде, вы, вероятно, не будете часто его использовать, особенно для начала и в небольших проектах. Это пустая трата времени на использование объектов и наследование только ради этого, когда они вам не нужны. Но по мере того, как ваши базы кода становятся больше, вы с большей вероятностью найдете необходимость в этом. Если вы начинаете создавать несколько объектов с подобными функциями, то создание универсального типа объекта, содержащего все общие функции и наследование этих функций в более специализированных типах объектов, может быть удобным и полезным.

+ +
+

Примечание. Из-за того, как работает JavaScript, с цепочкой прототипов и т.д., совместное использование функций между объектами часто называется делегированием. Специализированные объекты делегируют функциональность универсальному типу объекта.

+
+ +

При использовании наследования вам рекомендуется не иметь слишком много уровней наследования и тщательно отслеживать, где вы определяете свои методы и свойства. Можно начать писать код, который временно изменяет прототипы встроенных объектов браузера, но вы не должны этого делать, если у вас нет действительно веской причины. Слишком много наследования могут привести к бесконечной путанице и бесконечной боли при попытке отладки такого кода.

+ +

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

+ +

Резюме

+ +

В этой статье мы рассмотрели оставшуюся часть основной теории и синтаксиса OOJS, которые, как мы думаем, вам следует знать сейчас. На этом этапе вы должны понимать основы JavaScript, ООП, прототипы и прототипное наследование, как создавать классы (конструкторы) и экземпляры объектов, добавлять функции в классы и создавать подклассы, которые наследуются от других классов.

+ +

В следующей статье мы рассмотрим, как работать с JavaScript Object Notation (JSON), общим форматом обмена данными, написанным с использованием объектов JavaScript.

+ +

See also

+ + + +

{{PreviousMenuNext("Learn/JavaScript/Objects/Object_prototypes", "Learn/JavaScript/Objects/JSON", "Learn/JavaScript/Objects")}}

+ +

В этом модуле

+ + diff --git a/files/ru/learn/javascript/objects/json/index.html b/files/ru/learn/javascript/objects/json/index.html new file mode 100644 index 0000000000..371f254ec6 --- /dev/null +++ b/files/ru/learn/javascript/objects/json/index.html @@ -0,0 +1,353 @@ +--- +title: Работа с JSON +slug: Learn/JavaScript/Объекты/JSON +tags: + - Beginner + - JSON + - JavaScript +translation_of: Learn/JavaScript/Objects/JSON +--- +
{{LearnSidebar}}
+ +
{{PreviousMenuNext("Learn/JavaScript/Objects/Inheritance", "Learn/JavaScript/Objects/Object_building_practice", "Learn/JavaScript/Objects")}}
+ +

Обозначение объектов JavaScript (JSON - JavaScript Object Notation) - стандартный текстовый формат для представления структурированных данных на основе синтаксиса объекта JavaScript. Он обычно используется для передачи данных в веб-приложениях (например, отправка некоторых данных с сервера клиенту,таким образом чтобы это могло отображаться на веб-странице или наоборот). Вы будете сталкиваться с этим довольно часто, поэтому в этой статье мы даем вам все, что вам нужно для работы с JSON используя JavaScript, включая парсинг JSON, чтобы вы могли получить доступ к данным внутри него при создании JSON.

+ + + + + + + + + + + + +
Необходимые знания:Базовая компьютерная грамотность, базовые знания HTML и CSS, знакомство с основами JavaScript (см. First steps и Building blocks) и основами OOJS  (see Introduction to objects).
Цель:Понять, как работать с данными, хранящимися в JSON, и создавать свои собственные объекты JSON.
+ +

Нет, действительно, что такое JSON?

+ +

{{glossary("JSON")}} - текстовый формат данных, следующий за синтаксисом объекта JavaScript, который был популяризирован Дугласом Крокфордом. Несмотря на то, что он очень похож на буквенный синтаксис объекта JavaScript, его можно использовать независимо от JavaScript, и многие среды программирования имеют возможность читать (анализировать) и генерировать JSON.

+ +

JSON существует как строка,что необходимо при передаче данных по сети. Он должен быть преобразован в собственный объект JavaScript, если вы хотите получить доступ к данным. Это не большая проблема. JavaScript предоставляет глобальный объект JSON, который имеет методы для преобразования между ними.

+ +
+

Примечание: Преобразование строки в родной объект называется десериализацией (преобразование из последовательной формы в параллельную), в то время как преобразовании родного объекта в строку, таким образом ,чтобы он мог быть передан через сеть, называется сериализацией(преобразование в последовательную форму).

+
+ +

Объект JSON может быть сохранен в собственном файле, который в основном представляет собой текстовый файл с расширением .json и {{glossary("MIME type")}} application/json.

+ +

Структура JSON

+ +

Как описано выше, JSON представляет собой строку, формат которой очень похож на буквенный формат объекта JavaScript. Вы можете включать одни и те же базовые типы данных внутри JSON, так же как и  в стандартном объекте JavaScript - строки, числа, массивы, булевы и другие объектные литералы. Это позволяет построить иерархию данных, к примеру, так:

+ +
{
+  "squadName": "Super hero squad",
+  "homeTown": "Metro City",
+  "formed": 2016,
+  "secretBase": "Super tower",
+  "active": true,
+  "members": [
+    {
+      "name": "Molecule Man",
+      "age": 29,
+      "secretIdentity": "Dan Jukes",
+      "powers": [
+        "Radiation resistance",
+        "Turning tiny",
+        "Radiation blast"
+      ]
+    },
+    {
+      "name": "Madame Uppercut",
+      "age": 39,
+      "secretIdentity": "Jane Wilson",
+      "powers": [
+        "Million tonne punch",
+        "Damage resistance",
+        "Superhuman reflexes"
+      ]
+    },
+    {
+      "name": "Eternal Flame",
+      "age": 1000000,
+      "secretIdentity": "Unknown",
+      "powers": [
+        "Immortality",
+        "Heat Immunity",
+        "Inferno",
+        "Teleportation",
+        "Interdimensional travel"
+      ]
+    }
+  ]
+}
+ +

Если бы мы загрузили этот объект в программу JavaScript, создали переменную с названием superHeroes, мы могли бы затем получить доступ к данным внутри нее, используя те же самые точечную и скобочную нотации, которые мы рассмотрели в статье JavaScript object basics. Например:

+ +
superHeroes.homeTown
+superHeroes['active']
+ +

Чтобы получить доступ к последующим данным  по иерархии, вам просто нужно объединить требуемые имена свойств и индексы массивов. Например, чтобы получить доступ к третьей сверхспособности второго героя, указанного в списке участников, вы должны сделать следующее:

+ +
superHeroes['members'][1]['powers'][2]
+ +
    +
  1. Сначала у нас есть имя переменной - superHeroes.
  2. +
  3. Внутри мы хотим получить доступ к свойству members, поэтому мы используем ['members'].
  4. +
  5. members содержат массив, заполненный объектами. Мы хотим получить доступ ко второму объекту внутри массива, поэтому мы используем [1].
  6. +
  7. Внутри этого объекта мы хотим получить доступ к свойству powers, поэтому мы используем ['powers'].
  8. +
  9. Внутри свойства powers находится массив, содержащий сверхспособности выбранного героя. Нам нужен третий, поэтому мы используем [2].
  10. +
+ +
+

Примечание. Мы сделали JSON, видимый выше, доступным внутри переменной в нашем примере JSONTest.html (см. исходный код). Попробуйте загрузить это, а затем получить доступ к данным внутри переменной через консоль JavaScript вашего браузера.

+
+ +

Массивы как JSON

+ +

Выше мы упоминали ,что JSON текст выглядит практически так же как и JavaScript объект,и это почти правильно.Причина,по которой мы говорим почти правильно заключается в том ,что массив также валиден JSON  например:

+ +
[
+  {
+    "name": "Molecule Man",
+    "age": 29,
+    "secretIdentity": "Dan Jukes",
+    "powers": [
+      "Radiation resistance",
+      "Turning tiny",
+      "Radiation blast"
+    ]
+  },
+  {
+    "name": "Madame Uppercut",
+    "age": 39,
+    "secretIdentity": "Jane Wilson",
+    "powers": [
+      "Million tonne punch",
+      "Damage resistance",
+      "Superhuman reflexes"
+    ]
+  }
+]
+ +

Вышесказанное вполне справедливо для JSON. Вам просто нужно получить доступ к элементам массива (в его анализируемой версии), начиная с индекса массива, например [0]["powers"][0].

+ +

Другие примечания

+ + + +

Активное обучение: Работа с примером JSON

+ +

Итак, давайте рассмотрим пример, чтобы показать то, как мы можем использовать некоторые данные JSON на веб-сайте.

+ +

Начало работы

+ +

Для начала создайте локальные копии наших файлов heroes.html и style.css. Последний содержит простой CSS для стилизации нашей страницы, в то время как первый содержит очень простой HTML-код сущности:

+ +
<header>
+</header>
+
+<section>
+</section>
+ +

Плюс {{HTMLElement("script")}}, чтобы содержать код JavaScript, который мы будем писать в этом упражнении. На данный момент он содержит только две строки, которые захватывают ссылки на элементы {{HTMLElement("header")}} и {{HTMLElement("section")}} и сохраняют их в переменных:

+ +
var header = document.querySelector('header');
+var section = document.querySelector('section');
+ +

Мы предоставили данные JSON на нашем GitHub, на https://mdn.github.io/learning-area/javascript/oojs/json/superheroes.json.

+ +

Мы собираемся загрузить его на нашу страницу и использовать некоторые изящные манипуляции DOM, чтобы отобразить их, например:

+ +

+ +

Получение JSON

+ +

Чтобы получить JSON, мы будем использовать API, называемый {{domxref("XMLHttpRequest")}} (часто называемый XHR). Это очень полезный объект JavaScript, который позволяет нам делать сетевые запросы для извлечения ресурсов с сервера через JavaScript (например, изображения, текст, JSON, даже фрагменты HTML), что означает, что мы можем обновлять небольшие разделы контента без необходимости перезагрузки всей страницы. Это привело к более отзывчивым веб-страницам и звучит захватывающе, но, к сожалению, выходит за рамки этой статьи, чтобы изучить это гораздо более подробно.

+ +
    +
  1. Начнем с того, что мы собираемся сохранить URL-адрес JSON, который мы хотим получить в переменной. Добавьте нижеследующий код JavaScript: +
    var requestURL = 'https://mdn.github.io/learning-area/javascript/oojs/json/superheroes.json';
    +
  2. +
  3. Чтобы создать запрос, нам нужно создать новый экземпляр объекта запроса из конструктора XMLHttpRequest, используя ключевое слово new. Добавьте следующую ниже свою последнюю строку: +
    var request = new XMLHttpRequest();
    +
  4. +
  5. Теперь нам нужно открыть новый запрос, используя метод open(). Добавьте следующую строку: +
    request.open('GET', requestURL);
    + +

    Это занимает не менее двух параметров - есть другие доступные параметры. Нам нужно только два обязательных для этого простого примера:

    + +
      +
    • Метод HTTP, который следует использовать при выполнении сетевого запроса. В этом случае GET самый подходящий, так как мы просто извлекаем некоторые простые данные.
    • +
    • URL-адрес для запроса - это URL-адрес файла JSON, который мы сохранили ранее.
    • +
    +
  6. +
  7. Затем добавьте следующие две строки: здесь мы устанавливаем responseType в JSON, так что XHR знает, что сервер будет возвращать JSON и, что это должно быть преобразовано за кулисами в объект JavaScript. Затем мы отправляем запрос методом send(): +
    request.responseType = 'json';
    +request.send();
    +
  8. +
  9. Последний бит этого раздела предполагает ожидание ответа на возврат с сервера, а затем работы с ним. Добавьте следующий код ниже вашего предыдущего кода: +
    request.onload = function() {
    +  var superHeroes = request.response;
    +  populateHeader(superHeroes);
    +  showHeroes(superHeroes);
    +}
    +
  10. +
+ +

Здесь мы сохраняем ответ на наш запрос (доступный в свойстве response) в переменной superHeroes; эта переменная теперь будет содержать объект JavaScript, основанный на JSON! Затем мы передаем этот объект двум вызовам функций - первый из них заполнит <header> правильными данными, а второй создаст информационную карту для каждого героя в команде и вставляет ее в <section>.

+ +

Мы свернули код в обработчик событий, который запускается, когда событие загрузки запускается в объекте запроса (см. onload) - это связано с тем, что событие загрузки запускается, когда ответ успешно возвращается; поступая  таким образом,это гарантия того, что request.response определенно будет доступен, когда мы начнем работу с ним.

+ +

Заполнение заголовка

+ +

Теперь мы извлекли данные JSON и превратили его в объект JavaScript, давайте воспользуемся им, написав две функции, на которые мы ссылались выше. Прежде всего, добавьте следующее определение функции ниже предыдущего кода:

+ +
function populateHeader(jsonObj) {
+  var myH1 = document.createElement('h1');
+  myH1.textContent = jsonObj['squadName'];
+  header.appendChild(myH1);
+
+  var myPara = document.createElement('p');
+  myPara.textContent = 'Hometown: ' + jsonObj['homeTown'] + ' // Formed: ' + jsonObj['formed'];
+  header.appendChild(myPara);
+}
+ +

Мы назвали параметр jsonObj, чтобы напомнить себе, что этот объект JavaScript возник из JSON. Здесь мы сначала создаем элемент {{HTMLElement("h1")}} с createElement(), устанавливаем его textContent равным свойству squadName объекта, а затем добавляем его в заголовок с помощью appendChild(). Затем мы выполняем очень похожую операцию с абзацем: создаем его, устанавливаем его текстовое содержимое и добавляем его в заголовок. Единственное различие заключается в том, что его текст задан, как конкатенированная строка, содержащая как homeTown, так и formed свойства объекта.

+ +

Создание информационных карт героя

+ +

Затем добавьте следующую функцию внизу кода, которая создает и отображает карты супергероев:

+ +
function showHeroes(jsonObj) {
+  var heroes = jsonObj['members'];
+
+  for (var i = 0; i < heroes.length; i++) {
+    var myArticle = document.createElement('article');
+    var myH2 = document.createElement('h2');
+    var myPara1 = document.createElement('p');
+    var myPara2 = document.createElement('p');
+    var myPara3 = document.createElement('p');
+    var myList = document.createElement('ul');
+
+    myH2.textContent = heroes[i].name;
+    myPara1.textContent = 'Secret identity: ' + heroes[i].secretIdentity;
+    myPara2.textContent = 'Age: ' + heroes[i].age;
+    myPara3.textContent = 'Superpowers:';
+
+    var superPowers = heroes[i].powers;
+    for (var j = 0; j < superPowers.length; j++) {
+      var listItem = document.createElement('li');
+      listItem.textContent = superPowers[j];
+      myList.appendChild(listItem);
+    }
+
+    myArticle.appendChild(myH2);
+    myArticle.appendChild(myPara1);
+    myArticle.appendChild(myPara2);
+    myArticle.appendChild(myPara3);
+    myArticle.appendChild(myList);
+
+    section.appendChild(myArticle);
+  }
+}
+ +

Для начала сохраним свойство members объекта JavaScript в новой переменной. Этот массив содержит несколько объектов, которые содержат информацию для каждого героя.

+ +

Затем мы используем for loop для циклического прохождения каждого объекта в массиве. Для каждого из них мы:

+ +
    +
  1. Создаем несколько новых элементов: <article>, <h2>, три <p> и <ul>.
  2. +
  3. Установливаем <h2>, чтобы содержать name текущего героя.
  4. +
  5. Заполняем три абзаца своей secretIdentity, age и строкой, в которой говорится: «Суперспособности:», чтобы ввести информацию в список.
  6. +
  7. Сохраняем свойство powers в другой новой переменной под названием superPowers - где содержится массив, в котором перечислены сверхспособности текущего героя.
  8. +
  9. Используем другой цикл for, чтобы прокрутить сверхспособности текущего героя , для каждого из них мы создаем элемент <li>, помещаем в него сверхспособности, а затем помещаем listItem внутри элемента <ul> (myList) с помощью appendChild().
  10. +
  11. Последнее, что мы делаем, это добавляем <h2>, <p> и <ul> внутри <article> (myArticle), а затем добавляем <article> в <section>. Важное значение имеет порядок, в котором добавляются элементы, так как это порядок, который они будут отображать внутри HTML.
  12. +
+ +
+

Примечание. Если вам не удается заставить этот пример работать, попробуйте обратиться к нашему исходному коду heroes-finished.html (см. также он работает в режиме live).

+
+ +
+

Примечание. Если у вас возникли проблемы после нотации точек / скобок, которые мы используем для доступа к объекту JavaScript, в этом поможет открытие файла superheroes.json на другой вкладке или в текстовом редакторе ,и обращаться к нему каждый раз, когда вам нужен JavaScript. Вы также можете обратиться к нашей статье JavaScript objectbasics чтобы получить дополнительную информацию о нотации точек и скобок.

+
+ +

Преобразование между объектами и текстом

+ +

Вышеприведенный пример был прост с точки зрения доступа к объекту JavaScript, потому что мы задали XHR-запрос для прямого преобразования ответа JSON в объект JavaScript, используя:

+ +
request.responseType = 'json';
+ +

Но иногда нам не так везет - иногда мы получаем сырую строку JSON и нам нужно  преобразовать ее в объект самостоятельно. И когда мы хотим отправить объект JavaScript по сети, нам нужно  преобразовать его в JSON (строку) перед отправкой. К счастью, эти две проблемы настолько распространены в веб-разработке, что встроенный объект JSON доступен в браузерах, которые содержат следующие два метода:

+ + + +

Вы можете увидеть первый метод в действии в нашем примере heroes-finished-json-parse.html (см. исходный код) - это то же самое, что и в примере, который мы создали ранее, за исключением того, что мы установили XHR для возврата сырого JSON текста, затем используется parse(), чтобы преобразовать его в фактический объект JavaScript. Ключевой фрагмент кода находится здесь:

+ +
request.open('GET', requestURL);
+request.responseType = 'text'; // now we're getting a string!
+request.send();
+
+request.onload = function() {
+  var superHeroesText = request.response; // get the string from the response
+  var superHeroes = JSON.parse(superHeroesText); // convert it to an object
+  populateHeader(superHeroes);
+  showHeroes(superHeroes);
+}
+ +

Как вы могли догадаться, stringify() работает обратным образом. Попробуйте ввести следующие строки в консоль JavaScript браузера один за другим, чтобы увидеть его в действии:

+ +
var myJSON = { "name": "Chris", "age": "38" };
+myJSON
+var myString = JSON.stringify(myJSON);
+myString
+ +

Здесь мы создаем объект JavaScript, затем проверяем, что он содержит, а затем преобразуем его в строку JSON, используя stringify() , сохраняя возвращаемое значение в новой переменной, а затем снова проверяем его.

+ +

Резюме

+ +

В этой статье мы предоставили вам простое руководство по использованию JSON в ваших программах, в том числе о том, как создавать и анализировать JSON, и как получить доступ к данным, заблокированным внутри него. В следующей статье мы рассмотрим объектно-ориентированный JavaScript.

+ +

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

+ + + +

{{PreviousMenuNext("Learn/JavaScript/Objects/Inheritance", "Learn/JavaScript/Objects/Object_building_practice", "Learn/JavaScript/Objects")}}

+ +

В этом модуле

+ + + +
+ + +
+ +
+
diff --git a/files/ru/learn/javascript/objects/object-oriented_js/index.html b/files/ru/learn/javascript/objects/object-oriented_js/index.html new file mode 100644 index 0000000000..0299268a90 --- /dev/null +++ b/files/ru/learn/javascript/objects/object-oriented_js/index.html @@ -0,0 +1,286 @@ +--- +title: Объектно-ориентированный JavaScript для начинающих +slug: Learn/JavaScript/Объекты/Object-oriented_JS +tags: + - Constructor + - Create + - JavaScript + - OOJS + - Object + - Новичку + - ООП + - экземпляр +translation_of: Learn/JavaScript/Objects/Object-oriented_JS +--- +
{{LearnSidebar}}
+ +
{{PreviousMenuNext("Learn/JavaScript/Objects/Basics", "Learn/JavaScript/Objects/Object_prototypes", "Learn/JavaScript/Objects")}}
+ +

Разобравшись с основами, сосредоточимся на объектно-ориентированном JavaScript (OOJS) — данная статья дает базовое представление о теории объектно-ориентированного программирования (ООП), далее рассмотрено как JavaScript эмулирует классы объектов с помощью функции-конструктора и как создаются экземпляры объектов.

+ + + + + + + + + + + + +
Необходимые знания: +

Базовая компьютерная грамотность, базовое понимание HTML и CSS, знакомство с основами JavaScript (см. Первые шаги и Cтруктурные элементы JavaScript) и основы OOJS (см. Введение в объекты).

+
Цель:Понять основную теорию объектно-ориентированного программирования, как это относится к JavaScript («все является объектом») и как создавать конструкторы и экземпляры объектов.
+ +

Объектно-ориентированное программирование: основы

+ +

Начнём с упрощённого высокоуровневого представления о том, что такое объектно-ориентированное программирование (ООП). Мы говорим упрощённого, потому что ООП может быстро стать очень сложным, и если сейчас дать полный курс, вероятно, можно запутать больше, чем помочь. Основная идея ООП заключается в том, что мы используем объекты для отображения моделей из реального мира в наших программах и/или упрощения доступа к функциям, которые в противном случае было бы трудно или невозможно использовать.

+ +

Объекты могут содержать данные и код, представляющие информацию о том, что вы пытаетесь смоделировать, а также о том, какие у этих объектов должны быть функциональные возможности или поведение. Данные объекта (а часто так же и функции) могут быть точно сохранены (официальный термин "инкапсулированы") внутри пакета объекта, упрощая структуру и доступ к ним. Пакету объекта может быть присвоено определенное имя, на которое можно сослаться и которое иногда называют пространством имен. Объекты также широко используются в качестве хранилищ данных, которые могут быть легко отправлены по сети.

+ +

Определение шаблона объекта

+ +

Рассмотрим простую программу, которая отображает информацию об учениках и учителях в школе. Здесь мы рассмотрим теорию ООП в целом, а не в контексте какого-либо конкретного языка программирования.

+ +

Вернёмся к объекту Person из нашей статьи Основы объектов, который определяет общие сведения и функциональные возможности человека. Есть много вещей, которые вы можете узнать о человеке (его адрес, рост, размер обуви, профиль ДНК, номер паспорта, значимые черты личности ...), но в данном случае нас интересует только имя, возраст, пол и интересы, а также мы хотим иметь возможность написать краткую информацию о нём, основываясь на этих данных, и сделать так, чтобы он поздоровался. Это известно как абстракция — создание простой модели более сложной сущности, которая представляет её наиболее важные аспекты таким образом, чтобы с ней было удобно работать для выполнения целей нашей программы.

+ +

+ +

В некоторых языках ООП, это общее определение типа объекта называется class (JavaScript использует другой механизм и терминологию, как вы увидите ниже) — это на самом деле не объект, а шаблон, который определяет, какие характеристики должен иметь объект.

+ +

Создание реальных объектов

+ +

Из нашего класса мы можем создать экземпляры объектов — объекты, содержащие данные и функциональные возможности, определённые в классе. Из нашего класса Person мы теперь можем создавать модели реальных людей:

+ +

+ +

Когда экземпляр объекта создается из класса, для его создания выполняется функция-конструктор класса. Этот процесс создания экземпляра объекта из класса называется создание экземпляра (instantiation) — из класса создается экземпляр объекта.

+ +

Специализированные классы

+ +

В нашем случае нам не нужны все люди — нам требуются учителя и ученики, которые являются более конкретными типами людей. В ООП мы можем создавать новые классы на основе других классов — эти новые дочерние классы могут быть созданы для наследования данных и характеристик родительского класса, так чтобы можно было использовать функциональные возможности, общие для всех типов объекта, вместо того чтобы дублировать их. Когда функциональность различается между классами, можно по мере необходимости определять специализированные функции непосредственно на них.

+ +

+ +

Это действительно полезно — преподаватели и студенты имеют много общих характеристик, таких как имя, пол и возраст, и удобно определить их только один раз. Вы можете также задать одну и ту же характеристику отдельно в разных классах, поскольку каждое определение этой характеристики будет находиться в отдельном пространстве имен. Например, приветствие студента может быть в форме "Yo, I'm [firstName]" (например Yo, I'm Sam), в то время как учитель может использовать что-то более формальное, такое как "Hello, my name is [Prefix] [lastName], and I teach [Subject]." (например Hello, My name is Mr Griffiths, and I teach Chemistry).

+ +
+

Примечание: Если вам интересно, существует специальный термин Polymorphism (Полиморфизм) - это забавное слово, обозначающее реализацию той же функциональности для нескольких типов объекта. 

+
+ +

Теперь вы можете создавать экземпляры объекта из дочерних классов. Например:

+ +

+ +

Далее мы рассмотрим, как ООП теорию можно применить на практике в JavaScript.

+ +

Конструкторы и экземпляры объектов

+ +

JavaScript использует специальные функции, называемые функциями конструктора (constructor functions) для определения объектов и их свойств. Они полезны, потому что вы часто будете сталкиваться с ситуациями, в которых не известно, сколько объектов вы будете создавать; конструкторы позволяют создать столько объектов, сколько нужно эффективным способом, прикреплением данных и функций для объектов по мере необходимости.

+ +

Рассмотрим создание классов через конструкторы и создание экземпляров объектов из них в JavaScript. Прежде всего, мы хотели бы, чтобы вы создали новую локальную копию файла oojs.html, который мы видели в нашей первой статье «Объекты».

+ +

Простой пример

+ +
    +
  1. Давайте рассмотрим как можно определить человека с нормальной функцией. Добавьте эту функцию в элемент script: + +
    function createNewPerson(name) {
    +  const obj = {};
    +  obj.name = name;
    +  obj.greeting = function() {
    +    alert('Hi! I\'m ' + this.name + '.');
    +  };
    +  return obj;
    +}
    +
  2. +
  3. Теперь вы можете создать нового человека, вызвав эту функцию - попробуйте следующие строки в консоли JavaScript браузера: +
    const salva = createNewPerson('Salva');
    +salva.name;
    +salva.greeting();
    + Это работает достаточно хорошо, но код излишне многословен; если мы знаем, что хотим создать объект, зачем нам явно создавать новый пустой объект и возвращать его? К счастью, JavaScript предоставляет нам удобный способ в виде функций-конструкторов - давайте сделаем это сейчас!
  4. +
  5. Замените предыдущую функцию следующей: +
    function Person(name) {
    +  this.name = name;
    +  this.greeting = function() {
    +    alert('Hi! I\'m ' + this.name + '.');
    +  };
    +}
    +
  6. +
+ +

Функция-конструктор - это JavaScript версия класса. Вы заметите, что в нем есть все признаки, которые вы ожидаете от функции, хотя он ничего не возвращает и явно не создает объект - он в основном просто определяет свойства и методы. Вы также увидите, что ключевое слово this также используется здесь, - это в основном говорит о том, что всякий раз, когда создается один из этих экземпляров объектов, свойство имени объекта будет равно значению name, переданному вызову конструктора, и метод greeting() будет использовать значение имени, переданное также вызову конструктора.

+ +
+

Примечание: Имя функции конструктора обычно начинается с заглавной буквы - это соглашение используется для упрощения распознавания функций конструктора в коде.

+
+ +

Итак, как мы вызываем конструктор для создания некоторых объектов?

+ +
    +
  1. Добавьте следующие строки под предыдущим добавлением кода: +
    let person1 = new Person('Bob');
    +let person2 = new Person('Sarah');
    +
  2. +
  3. Сохраните код и перезагрузите его в браузере и попробуйте ввести следующие строки в консоль JS: +
    person1.name
    +person1.greeting()
    +person2.name
    +person2.greeting()
    +
  4. +
+ +

Круто! Теперь, как вы видите, у нас есть два новых объекта на странице, каждый из которых хранится в отдельном пространстве имен - при доступе к их свойствам и методам вы должны начинать вызовы с person1 или person2; функциональность, содержащаяся внутри, аккуратно упакована, поэтому она не будет конфликтовать с другими функциями. Тем не менее, у них есть одно и то же свойство name и greeting(). Обратите внимание, что они используют свое собственное значение name, которое было присвоено им, когда они были созданы; это одна из причин, почему очень важно использовать this, таким образом они будут использовать свои собственные значения, а не какие-либо другие.

+ +

Давайте снова посмотрим на вызовы конструктора:

+ +
let person1 = new Person('Bob');
+let person2 = new Person('Sarah');
+ +

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

+ +
function Person(name) {
+  this.name = name;
+  this.greeting = function() {
+    alert('Hi! I\'m ' + this.name + '.');
+  };
+}
+ +

После создания новых объектов переменные person1 и person2 содержат следующие объекты:

+ +
{
+  name: 'Bob',
+  greeting: function() {
+    alert('Hi! I\'m ' + this.name + '.');
+  }
+}
+
+{
+  name: 'Sarah',
+  greeting: function() {
+    alert('Hi! I\'m ' + this.name + '.');
+  }
+}
+ +

Обратите внимание, что когда мы вызываем нашу функцию-конструктор, мы определяем greeting() каждый раз, что не является идеальным. Чтобы этого избежать, вместо этого мы можем определить функции на прототипе, о которых мы поговорим позже.

+ +

Создавая наш готовый конструктор

+ +

Пример, рассмотренный выше, был лишь наглядным примером, чтобы вы поняли суть. Теперь, давайте создадим нашу конечную функцию-конструктор Person().

+ +
    +
  1. Замените весь предыдущий код новой функцией конструктора - это, в принципе, тот же самое что и в наглядном примере, но несколько сложнее: +
    function Person(first, last, age, gender, interests) {
    +  this.name = {
    +    first : first,
    +    last: last
    +  };
    +  this.age = age;
    +  this.gender = gender;
    +  this.interests = interests;
    +  this.bio = function() {
    +    alert(this.name.first + ' ' + this.name.last + ' is ' + this.age + ' years old. He likes ' + this.interests[0] + ' and ' + this.interests[1] + '.');
    +  };
    +  this.greeting = function() {
    +    alert('Hi! I\'m ' + this.name.first + '.');
    +  };
    +};
    +
  2. +
  3. Теперь добавьте следующую строку ниже, чтобы создать экземпляр объекта из него: +
    let person1 = new Person('Bob', 'Smith', 32, 'male', ['music', 'skiing']);
    +
  4. +
+ +

Как вы могли заметить, вы можете получить доступ к свойствам и методам, как это было ранее, - попробуйте использовать их в консоли JS:

+ +
person1['age']
+person1.interests[1]
+person1.bio()
+// etc.
+ +
Примечание: Если у Вас возникли проблемы с работой кода, попробуйте сравнить его с нашей версией - см. oojs-class-finished.html (также смотрите, как он работает в прямом эфире).
+ +

Дальнейшие упражнения

+ +

Для начала, попробуйте добавить еще пару собственных строк создания объекта и попробуйте получить и установить элементы полученных экземпляров объектов.

+ +

Кроме того, есть несколько проблем с нашим методом bio() - вывод всегда включает местоимение «He» ("Он" в пер. с англ.), даже если ваш человек является женщиной или какой-либо другой предпочтительной гендерной классификацией. И bio будет включать только два интереса, даже если в массиве interests указано больше. Можете ли Вы решить, как исправить это в определении класса (конструкторе)? Вы можете поместить любой код, который вам нравится внутри конструктора (вам, вероятно, понадобятся несколько условий и цикл). Подумайте о том, как предложения должны быть структурированы по-разному в зависимости от пола и в зависимости от того, имеет ли число перечисленных интересов 1, 2 или более 2.

+ +
+

Примечание: Если у Вас возникли трудности с решением задачи, мы предоставили ответ в нашем репозитории GitHub (см. это в действии) — но сначала попробуйте написать сами!

+
+ +

Другие способы создания экземпляров объектов

+ +

До сих пор мы видели два разных способа создания экземпляра объекта - объявление объектного литерала и использование функции конструктора (см. выше).

+ +

Это имеет смысл, но есть и другие способы - мы бы хотели ознакомить Вас с ними на случай, если Вы встретите их в своих путешествиях по Сети.

+ +

Конструктор Object ()

+ +

Прежде всего, вы можете использовать конструктор Object() для создания нового объекта. Да, даже общие объекты имеют конструктор, который генерирует пустой объект.

+ +
    +
  1. Попробуйте ввести это в консоль JavaScript вашего браузера: +
    let person1 = new Object();
    +
  2. +
  3. Это сохраняет ссылку на пустой объект в переменную person1. Затем вы можете добавить свойства и методы к этому объекту с использованием точечной или скобочной нотации по желанию; попробуйте эти примеры в консоли: +
    person1.name = 'Chris';
    +person1['age'] = 38;
    +person1.greeting = function() {
    +  alert('Hi! I\'m ' + this.name + '.');
    +};
    +
  4. +
  5. Вы также можете передать литерал объекта конструктору Object() в качестве параметра, чтобы заполнить его свойствами / методами. Попробуйте это в консоли JS: +
    let person1 = new Object({
    +  name: 'Chris',
    +  age: 38,
    +  greeting: function() {
    +    alert('Hi! I\'m ' + this.name + '.');
    +  }
    +});
    +
  6. +
+ +

Использование метода create()

+ +

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

+ +

Однако некоторые люди предпочитают создавать экземпляры объектов без предварительного создания конструкторов, особенно если они создают только несколько экземпляров объекта. JavaScript имеет встроенный метод create(), который позволяет вам это делать. С его помощью вы можете создать новый объект на основе любого существующего объекта.

+ +
    +
  1. Закончив упражнение из предыдущего раздела, загруженное в браузер, попробуйте это в консоли JavaScript: +
    let person2 = Object.create(person1);
    +
  2. +
  3. Теперь попробуйте: +
    person2.name
    +person2.greeting()
    +
  4. +
+ +

Вы увидите, что person2 был создан на основе person1 - он имеет те же свойства и метод, доступные для него.

+ +

Одно ограничение метода create() заключается в том, что IE8 не поддерживает его. Поэтому конструкторы могут быть более эффективными, если вы хотите поддерживать старые браузеры.

+ +

Подробнее мы рассмотрим особенности метода create() немного позже.

+ +

Сводка

+ +

В этой статье представлен упрощенный взгляд на объектно-ориентированную теорию — это еще не вся история, но она дает представление о том, с чем мы имеем дело. Кроме того, мы начали рассматривать различные способы создания экземпляров объектов.

+ +

В следующей статье мы рассмотрим прототипы объектов JavaScript.

+ +

{{PreviousMenuNext("Learn/JavaScript/Objects/Basics", "Learn/JavaScript/Objects/Object_prototypes", "Learn/JavaScript/Objects")}}

+ +

В этом модуле

+ + diff --git a/files/ru/learn/javascript/objects/object_building_practice/index.html b/files/ru/learn/javascript/objects/object_building_practice/index.html new file mode 100644 index 0000000000..b06b769ca4 --- /dev/null +++ b/files/ru/learn/javascript/objects/object_building_practice/index.html @@ -0,0 +1,302 @@ +--- +title: Практика построения объектов +slug: Learn/JavaScript/Объекты/Object_building_practice +tags: + - Guide + - JavaScript +translation_of: Learn/JavaScript/Objects/Object_building_practice +--- +
{{LearnSidebar}}
+ +
{{PreviousMenuNext("Learn/JavaScript/Objects/JSON", "Learn/JavaScript/Objects/Adding_bouncing_balls_features", "Learn/JavaScript/Objects")}}
+ +

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

+ + + + + + + + + + + + +
Необходимые знания:Базовая компьютерная грамотность, базовые знания HTML и CSS, знакомство с основами JavaScript (see First steps and Building blocks) и основами OOJS (см. Introduction to objects).
Цель:Получение некоторой практики в использовании объектов и объектно-ориентированных методов в реальном мире.
+ +

Давайте подбросим несколько мячей

+ +

В этой статье мы напишем классическую демонстрацию «прыгающих шаров», чтобы показать вам, насколько полезными могут быть объекты в JavaScript. Наши маленькие шары будут подпрыгивать на экране и менять цвет, когда они касаются друг друга. Готовый пример будет выглядеть примерно так:

+ +

+ +
    +
+ +

В этом примере будет использоваться Canvas API для рисования шаров на экране и API requestAnimationFrame для анимации всего экрана - вам не нужно иметь никаких предыдущих знаний об этих API, и мы надеемся, что к тому моменту, когда вы закончите эту статью, вам будет интересно изучить их больше. По пути мы воспользуемся некоторыми изящными объектами и покажем вам пару хороших приемов, таких как отскоки шаров от стен и проверка того, попали ли они друг в друга (иначе известный как обнаружение столкновения).

+ +

Начало работы

+ +

Для начала создайте локальные копии наших файловindex.html, style.css и main.js. Они содержат следующее:

+ +
    +
  1. Очень простой HTML-документ, содержащий элемент {{HTMLElement("h1")}}, элемент {{HTMLElement("canvas")}} для рисования наших шаров и элементы для применения нашего CSS и JavaScript в нашем HTML.
  2. +
  3. Некоторые очень простые стили, которые в основном служат для стилизации и позиционирования <h1>, и избавляются от любых полос прокрутки или отступы по краю страницы (так что это выглядит красиво и аккуратно).
  4. +
  5. Некоторые JavaScript, которые служат для настройки элемента <canvas> и предоставляют общую функцию, которую мы собираемся использовать.
  6. +
+ +

Первая часть скрипта выглядит так:

+ +
var canvas = document.querySelector('canvas');
+
+var ctx = canvas.getContext('2d');
+
+var width = canvas.width = window.innerWidth;
+var height = canvas.height = window.innerHeight;
+ +

Этот скрипт получает ссылку на элемент <canvas>, а затем вызывает метод getContext(), чтобы дать нам контекст, по которому мы можем начать рисовать. Результирующая переменная (ctx) - это объект, который непосредственно представляет область рисования холста и позволяет рисовать на ней 2D-фигуры.

+ +

Затем мы устанавливаем переменные, называемые width и height, а также ширину и высоту элемента canvas (представленные свойствами canvas.width и canvas.height), чтобы равняться ширине и высоте окна просмотра браузера (область, на которой отображается веб-страница - это можно получить из свойств {{domxref("Window.innerWidth")}} и {{domxref("Window.innerHeight")}}).

+ +

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

+ +

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

+ +
function random(min, max) {
+  var num = Math.floor(Math.random() * (max - min + 1)) + min;
+  return num;
+}
+ +

Эта функция принимает два числа в качестве аргументов и возвращает случайное число в диапазоне между ними.

+ +

Моделирование мяча в нашей программе

+ +

В нашей программе будет много шаров, подпрыгивающих вокруг экрана. Поскольку эти шары будут вести себя одинаково, имеет смысл представлять их в виде объекта. Начнем с добавления следующего конструктора в конец нашего кода.

+ +
function Ball(x, y, velX, velY, color, size) {
+  this.x = x;
+  this.y = y;
+  this.velX = velX;
+  this.velY = velY;
+  this.color = color;
+  this.size = size;
+}
+ +

Здесь мы включаем некоторые параметры, которые определяют свойства, которым должен соответствовать каждый шар в нашей программе:

+ + + +

Этим мы сортируем свойства, но что насчет методов? Мы хотим заставить эти шары на самом деле сделать что-то в нашей программе.

+ +

Рисование шара

+ +

Сначала добавьте следующий метод draw() к Ball()'s prototype:

+ +
Ball.prototype.draw = function() {
+  ctx.beginPath();
+  ctx.fillStyle = this.color;
+  ctx.arc(this.x, this.y, this.size, 0, 2 * Math.PI);
+  ctx.fill();
+}
+ +

Используя эту функцию, мы можем сказать нашему шару нарисовать себя на экране, вызвав ряд членов контекста двумерного холста, который мы определили ранее (ctx). Контекст похож на бумагу, и теперь мы хотим, чтобы наше перо рисовало что-то на нем:

+ + + +

Теперь вы можете начать тестирование своего объекта..

+ +
    +
  1. Сохраните код и загрузите HTML-файл в браузер.
  2. +
  3. Откройте консоль JavaScript браузера, а затем обновите страницу, чтобы размер холста изменился в соответствии с новой шириной и высотой окна просмотра браузера после открытия консоли.
  4. +
  5. Чтобы создать новый экземпляр шара, введите следующее: +
    var testBall = new Ball(50, 100, 4, 4, 'blue', 10);
    +
  6. +
  7. Попробуйте вызвать его свойства и методы: +
    testBall.x
    +testBall.size
    +testBall.color
    +testBall.draw()
    +
  8. +
  9. После введения последней строки, вы должны увидеть, как мяч нарисовался где-то на вашем холсте.
  10. +
+ +

Обновление данных мяча

+ +

Мы можем нарисовать мяч в нужном положении, но чтобы начать движение мяча, нам нужна функция обновления. Добавьте следующий код внизу вашего файла JavaScript, чтобы добавить метод update() к Ball()'s prototype:

+ +
Ball.prototype.update = function() {
+  if ((this.x + this.size) >= width) {
+    this.velX = -(this.velX);
+  }
+
+  if ((this.x - this.size) <= 0) {
+    this.velX = -(this.velX);
+  }
+
+  if ((this.y + this.size) >= height) {
+    this.velY = -(this.velY);
+  }
+
+  if ((this.y - this.size) <= 0) {
+    this.velY = -(this.velY);
+  }
+
+  this.x += this.velX;
+  this.y += this.velY;
+}
+ +

Первые четыре части функции проверяют, достиг ли шар края холста. Если это так, мы изменяем полярность соответствующей скорости, чтобы заставить шар двигаться в противоположном направлении. Так, например, если мяч двигался вверх (положительный velY), то вертикальная скорость изменяется так, что он начинает двигаться вниз (отрицательная величина velY).

+ +

В этих четырех случаях мы:

+ + + +

В каждом случае мы включаем size шарика в расчет, потому что координаты x/y находятся в центре шара, но мы хотим, чтобы край шара отскакивал от периметра - мы не хотим, чтобы мяч на половину заходил за границу экрана прежде чем он начнет возвращаться назад.

+ +

Последние две строки добавляют значение velX к координате x, а значение velY - координате y - шар фактически перемещается при каждом вызове этого метода.

+ +

На сейчас этого достаточно, давайте продолжим анимацию!

+ +

Анимация мяча

+ +

Теперь давайте приступать к веселью! Сейчас мы начнем добавлять шары к холсту и анимировать их.

+ +
    +
  1. Во-первых, нам нужно где-то хранить все наши шары. Следующий массив выполнит это задание - добавьте его внизу кода: +
    var balls = [];
    + +

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

    +
  2. +
  3. Добавьте ниже эту часть кода: +
    function loop() {
    +  ctx.fillStyle = 'rgba(0, 0, 0, 0.25)';
    +  ctx.fillRect(0, 0, width, height);
    +
    +  while (balls.length < 25) {
    +    var ball = new Ball(
    +      random(0,width),
    +      random(0,height),
    +      random(-7,7),
    +      random(-7,7),
    +      'rgb(' + random(0,255) + ',' + random(0,255) + ',' + random(0,255) +')',
    +      random(10,20)
    +    );
    +    balls.push(ball);
    +  }
    +
    +  for (var i = 0; i < balls.length; i++) {
    +    balls[i].draw();
    +    balls[i].update();
    +  }
    +
    +  requestAnimationFrame(loop);
    +}
    + +

    Наша функция loop() выполняет следующие действия:

    + +
      +
    • Устанавливает цвет заливки на полупрозрачный черный, затем рисует прямоугольник цвета по всей ширине и высоте холста, используя fillRect() (четыре параметра обеспечивают начальную координату, а ширину и высоту для рисованного прямоугольника ). Это позволяет скрыть рисунок предыдущего кадра до того, как будет нарисован следующий. Если вы этого не сделаете, вы увидите, как длинные змеи пробираются вокруг холста, а не шары! Цвет заливки устанавливается на полупрозрачный, rgba(0,0,0,0,25), чтобы позволить нескольким кадрам слегка просвечивать, создавая маленькие тропы за шариками по мере их перемещения. Если вы изменили 0.25 на 1, вы больше не увидите их. Попробуйте изменить это число, чтобы увидеть эффект, который он имеет.
    • +
    • Создает новый экземпляр нашего Ball(), используя случайные значения, сгенерированные с помощью нашей функции random(), затем push() на конец нашего массива шаров, но только в том случае, когда количество шаров в массиве меньше 25. Итак когда у нас есть 25 мячей на экране, больше не появляется шаров. Вы можете попробовать изменить число в balls.length < 25, чтобы получить больше или меньше шаров на экране. В зависимости от того, сколько вычислительной мощности имеет ваш компьютер / браузер, если указать несколько тысячь шаров, это может довольно существенно повлиять на производительность анимации. 
    • +
    • перебирает все шары в массиве balls и запускает каждую функцию draw() и update() для рисования каждого из них на экране, а затем выполняет необходимые обновления по положению и скорости во времени для следующего кадра.
    • +
    • Выполняет функцию снова с помощью метода requestAnimationFrame() - когда этот метод постоянно запускается и передается одно и то же имя функции, он будет запускать эту функцию определенное количество раз в секунду для создания плавной анимации. Обычно это делается рекурсивно - это означает, что функция вызывает себя каждый раз, когда она запускается, поэтому она будет работать снова и снова.
    • +
    +
  4. +
  5. И последнее, но не менее важное: добавьте следующую строку в конец вашего кода - нам нужно вызвать функцию один раз, чтобы начать анимацию. +
    loop();
    +
  6. +
+ +

Вот и все для основы - попробуйте сохранить и освежить, чтобы проверить свои прыгающие шары!

+ +

Добавление обнаружения столкновений

+ +

Теперь немного поиграем, давайте добавим в нашу программу обнаружение конфликтов, поэтому наши мячи узнают, когда они ударят по другому шару.

+ +
    +
  1. Прежде всего, добавьте следующее определение метода ниже, где вы определили метод update() (т.е. блок Ball.prototype.update). + +
    Ball.prototype.collisionDetect = function() {
    +  for (var j = 0; j < balls.length; j++) {
    +    if (!(this === balls[j])) {
    +      var dx = this.x - balls[j].x;
    +      var dy = this.y - balls[j].y;
    +      var distance = Math.sqrt(dx * dx + dy * dy);
    +
    +      if (distance < this.size + balls[j].size) {
    +        balls[j].color = this.color = 'rgb(' + random(0, 255) + ',' + random(0, 255) + ',' + random(0, 255) +')';
    +      }
    +    }
    +  }
    +}
    + +

    Этот метод немного сложный, поэтому не беспокойтесь, если вы не понимаете, как именно это работает. Ниже приводится объяснение:

    + +
      +
    • Для каждого шара нам нужно проверить каждый другой шар, чтобы увидеть, столкнулся ли он с текущим мячом. Чтобы сделать это, мы открываем еще один цикл for  через все шары в массиве balls[].
    • +
    • Сразу же в нашем цикле for мы используем оператор if, чтобы проверить, проходит ли текущий шарик, тот же самый шар, что и тот, который мы сейчас проверяем. Мы не хотим проверять, что мяч столкнулся с самим собой! Для этого мы проверяем, является ли текущий мяч (т.е. мяч, метод которого вызван методом collisionDetect) такой же, как шар петли (т.е. шар, на который ссылается текущая итерация цикла for в collisionDetect метод). Затем мы используем ! чтобы отменить проверку, чтобы код внутри оператора if выполнялся только в том случае, если они не совпадают.
    • +
    • Затем мы используем общий алгоритм для проверки столкновения двух окружностей. Мы в основном проверяем, перекрывается ли какая-либо из областей круга. Это объясняется далее 2D collision detection.
    • +
    • Если обнаружено столкновение, выполняется код внутри внутреннего оператора if. В этом случае мы просто устанавливаем свойство color обоих кругов на новый случайный цвет. Мы могли бы сделать что-то гораздо более сложное, например, заставить шары отскакивать друг от друга реалистично, но это было бы гораздо сложнее реализовать. Для такого моделирования физики разработчики склонны использовать игры или библиотеку физики, такие как PhysicsJS, matter.js, Phaser и т.д.
    • +
    +
  2. +
  3. Вы также должны вызвать этот метод в каждом кадре анимации. Добавьте следующий код после строки balls[i].update(); +
    balls[i].collisionDetect();
    +
  4. +
  5. Сохраните и обновите демо снова, и вы увидите, как ваши мячи меняют цвет, когда они сталкиваются!
  6. +
+ +
+

Примечание. Если вам не удается заставить этот пример работать, попробуйте сравнить код JavaScript с нашей готовой версией (также смотрите, как он работает в прямом эфире).

+
+ +

Резюме

+ +

Мы надеемся, что вам понравилось писать собственный пример случайных прыгающих шаров в реальном мире, используя различные объектные и объектно-ориентированные методы из всего модуля! Это должно было дать вам некоторую полезную практику использования объектов и хорошего контекста реального мира.

+ +

Вот и все для предметных статей - все, что осталось сейчас, - это проверить свои навыки в оценке объекта.

+ +

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

+ + + +

{{PreviousMenuNext("Learn/JavaScript/Objects/JSON", "Learn/JavaScript/Objects/Adding_bouncing_balls_features", "Learn/JavaScript/Objects")}}

+ +

В этом модуле

+ + diff --git a/files/ru/learn/javascript/objects/object_prototypes/index.html b/files/ru/learn/javascript/objects/object_prototypes/index.html new file mode 100644 index 0000000000..0a76580d9c --- /dev/null +++ b/files/ru/learn/javascript/objects/object_prototypes/index.html @@ -0,0 +1,285 @@ +--- +title: Прототипы объектов +slug: Learn/JavaScript/Объекты/Object_prototypes +tags: + - JavaScript + - create() + - Конструктор + - Начинающий + - ООП + - Обучение + - Обьект + - Статья + - прототип +translation_of: Learn/JavaScript/Objects/Object_prototypes +--- +
{{LearnSidebar}}
+ +
{{PreviousMenuNext("Learn/JavaScript/Objects/Object-oriented_JS", "Learn/JavaScript/Objects/Inheritance", "Learn/JavaScript/Objects")}}
+ +
Прототипы - это механизм, с помощью которого объекты JavaScript наследуют свойства друг от друга. В этой статье мы объясним, как работают цепочки прототипов, и рассмотрим, как свойство prototype можно использовать для добавления методов к существующим конструкторам.
+ +
+ + + + + + + + + + + + +
Необходимые знания: +

Базовая компьютерная грамотность, базовое понимание HTML и CSS, знакомство с основами JavaScript (см. Первые шаги и Строительные блоки) и основы OOJS (см. Введение в объекты).

+
Цель: +

Понять прототипы объектов JavaScript, как работают прототипные цепочки и как добавить новые методы в prototype свойство.

+
+ +

Язык основанный на прототипах?

+ +

JavaScript часто описывают как язык прототипного наследования — каждый объект, имеет объект-прототип, который выступает как шаблон, от которого объект наследует методы и свойства. Объект-прототип так же может иметь свой прототип и наследовать его свойства и методы и так далее. Это часто называется цепочкой прототипов и объясняет почему одним объектам доступны свойства и методы которые определены в других объектах.

+ +

Точнее, свойства и методы определяются в свойстве prototype функции-конструктора объектов, а не в самих объектах.

+ +

В JavaScript создается связь между экземпляром объекта и его прототипом (свойство __proto__, которое является производным от свойства prototype конструктора), а свойства и методы обнаруживаются при переходе по цепочке прототипов.

+ +
+

Примечание: Важно понимать, что существует различие между прототипом объекта (который доступен через Object.getPrototypeOf(obj) или через устаревшее свойство __proto__) и свойством prototype в функциях-конструкторах. Первое свойство является свойством каждого экземпляра, а второе - свойством конструктора. То есть Object.getPrototypeOf(new Foobar()) относится к тому же объекту, что и Foobar.prototype.

+
+ +

Давайте посмотрим на пример, чтобы стало понятнее.

+ +

Понимание прототипа объектов

+ +

Вернемся к примеру, когда мы закончили писать наш конструктор Person()- загрузите пример в свой браузер. Если у вас еще нет работы от последней статьи, используйте наш пример oojs-class-further-exercises.html (см. Также исходный код).

+ +

В этом примере мы определили конструкторную функцию, например:

+ +
function Person(first, last, age, gender, interests) {
+
+  // Определения методов и свойств
+  this.name = {
+    'first': first,
+    'last' : last
+  };
+  this.age = age;
+  this.gender = gender;
+  //...см. Введение в объекты для полного определения
+}
+ +

Затем мы создаём экземпляр объекта следующим образом:

+ +
var person1 = new Person('Bob', 'Smith', 32, 'male', ['music', 'skiing']);
+ +

Если вы наберете «person1.» в вашей консоли JavaScript, вы должны увидеть, что браузер пытается автоматически заполнить это с именами участников, доступных на этом объекте:

+ +

+ +

В этом списке вы увидите элементы, определенные в конструкторе person 1 — Person() — name, age, gender, interests, bio, и greeting. Однако вы также увидите некоторые другие элементы — watch, valueOfи т. д. — они определены в объекте прототипа Person (), который является Object.

+ +

+ +

Итак, что произойдет, если вы вызываете метод в person1, который фактически определен в Object? Например:

+ +
person1.valueOf()
+ +

Этот метод — Object.valueOf()наследуется person1, потому что его конструктором является Person(), а прототипом Person() является Object(). valueOf() возвращает значение вызываемого объекта — попробуйте и убедитесь! В этом случае происходит следующее:

+ + + +
+

Примечание: Мы хотим повторить, что методы и свойства не копируются из одного объекта в другой в цепочке прототипов - к ним обращаются, поднимаясь по цепочке, как описано выше.

+
+ +
+

Примечание: Официально нет способа получить доступ к объекту прототипа объекта напрямую - «ссылки» между элементами в цепочке определены во внутреннем свойстве, называемом [[prototype]] в спецификации для языка JavaScript ( см. {{glossary("ECMAScript")}}). Однако у большинства современных браузеров есть свойство, доступное для них под названием __proto__ (это 2 подчеркивания с обеих сторон), который содержит объект-прототип объекта-конструктора. Например, попробуйте person1.__proto__ и person1.__proto__.__proto__, чтобы увидеть, как выглядит цепочка в коде!

+ +

С ECMAScript 2015 вы можете косвенно обращаться к объекту прототипа объекта Object.getPrototypeOf (obj).

+
+ +

Свойство prototype: Где определены унаследованные экземпляры

+ +

Итак, где определены наследуемые свойства и методы? Если вы посмотрите на страницу со ссылкой Object, вы увидите в левой части большое количество свойств и методов - это намного больше, чем количество унаследованных членов, доступных для объекта person1. Некоторые из них унаследованы, а некоторые нет - почему это?

+ +

Как упоминалось выше, наследованные свойства это те, что определены в свойстве prototype (вы можете называть это подпространством имен), то есть те, которые начинаются с Object.prototype., а не те, которые начинаются с простого Object. Значение свойства prototype - это объект, который в основном представляет собой контейнер для хранения свойств и методов, которые мы хотим наследовать объектами, расположенными дальше по цепочке прототипов.

+ +

Таким образом Object.prototype.watch(), Object.prototype.valueOf() и т. д. доступны для любых типов объектов, которые наследуются от Object.prototype, включая новые экземпляры объектов, созданные из конструктора Person() .

+ +

Object.is(), Object.keys() и другие члены, не определенные в контейнере prototype, не наследуются экземплярами объектов или типами объектов, которые наследуются от Object.prototype. Это методы / свойства, доступные только в конструкторе Object().

+ +
+

Примечание: Это кажется странным - как у вас есть метод, определенный для конструктора, который сам по себе является функцией? Ну, функция также является типом объекта - см. Ссылку на конструктор Function(), если вы нам не верите.

+
+ +
    +
  1. Вы можете проверить существующие свойства прототипа для себя - вернитесь к нашему предыдущему примеру и попробуйте ввести следующее в консоль JavaScript: +
    Person.prototype
    +
  2. +
  3. Результат покажет вам не много, ведь мы ничего не определили в прототипе нашего конструктора! По умолчанию prototype конструктора всегда пуст. Теперь попробуйте следующее: +
    Object.prototype
    +
  4. +
+ +

Вы увидите большое количество методов, определенных для свойства prototype Object'а , которые затем доступны для объектов, которые наследуются от Object, как показано выше.

+ +

Вы увидите другие примеры наследования цепочек прототипов по всему JavaScript - попробуйте найти методы и свойства, определенные на прототипе глобальных объектов String, Date, Number и Array, например. Все они имеют несколько элементов, определенных на их прототипе, поэтому, например, когда вы создаете строку, вот так:

+ +
var myString = 'This is my string.';
+ +

В myString сразу есть множество полезных методов, таких как split(), indexOf(), replace() и т. д.

+ +
+

Важно: Свойство prototype является одной из наиболее противоречивых названий частей JavaScript - вы можете подумать, что this указывает на объект прототипа текущего объекта, но это не так (это внутренний объект, к которому можно получить доступ __proto__, помните ?). prototype вместо этого - свойство, содержащее объект, на котором вы определяете членов, которые вы хотите наследовать.

+
+ +

Снова create()

+ +

Ранее мы показали, как метод Object.create() может использоваться для создания нового экземпляра объекта.

+ +
    +
  1. Например, попробуйте это в консоли JavaScript предыдущего примера: +
    var person2 = Object.create(person1);
    +
  2. +
  3. На самом деле create()создает новый объект из указанного объекта-прототипа. Здесь person2 создается с помощью person1 в качестве объекта-прототипа. Это можно проверить, введя в консоли следующее: +
    person2.__proto__
    +
  4. +
+ +

Это вернет объект person1.

+ +

Свойство constructor

+ +

Каждая функция-конструктор имеет свойство prototype, значением которого является объект, содержащий свойство constructor. Это свойство constructor указывает на исходную функцию-конструктор. Как вы увидите в следующем разделе, свойства, определенные в свойстве Person.prototype (или в общем случае в качестве свойства прототипа функции конструктора, который является объектом, как указано в предыдущем разделе) становятся доступными для всех объектов экземпляра, созданных с помощью конструктор Person(). Следовательно, свойство конструктора также доступно для объектов person1 и person2.

+ +
    +
  1. Например, попробуйте эти команды в консоли: +
    person1.constructor
    +person2.constructor
    + +

    Они должны возвращать конструктор Person(), поскольку он содержит исходное определение этих экземпляров.

    + +

    Хитрый трюк заключается в том, что вы можете поместить круглые скобки в конец свойства constructor (содержащие любые требуемые параметры) для создания другого экземпляра объекта из этого конструктора. Конструктор - это функция в конце концов, поэтому ее можно вызвать с помощью круглых скобок; вам просто нужно включить ключевое слово new, чтобы указать, что вы хотите использовать эту функцию в качестве конструктора.

    +
  2. +
  3. Попробуйте это в консоли: +
    var person3 = new person1.constructor('Karen', 'Stephenson', 26, 'female', ['playing drums', 'mountain climbing']);
    +
  4. +
  5. Теперь попробуйте получить доступ к функциям вашего нового объекта, например: +
    person3.name.first
    +person3.age
    +person3.bio()
    +
  6. +
+ +

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

+ +

Свойство constructor имеет другие применения. Например, если у вас есть экземпляр объекта и вы хотите вернуть имя конструктора этого экземпляра, вы можете использовать следующее:

+ +
instanceName.constructor.name
+ +

Например, попробуйте это:

+ +
person1.constructor.name
+
+ +
+

Примечание: Значение constructor.name может измениться (из-за прототипического наследования, привязки, препроцессоров, транспилеров и т. д.), Поэтому для более сложных примеров вы захотите использовать оператор instanceof.

+
+ +
    +
+ +

Изменение прототипов

+ +

Давайте рассмотрим пример изменения свойства prototype функции-конструктора — методы, добавленные в прототип, затем доступны для всех экземпляров объектов, созданных из конструктора.

+ +
    +
  1. Вернитесь к нашему примеру oojs-class-further-exercises.html и создайте локальную копию исходного кода. Ниже существующего JavaScript добавьте следующий код, который добавляет новый метод в свойство prototype конструктора: + +
    Person.prototype.farewell = function() {
    +  alert(this.name.first + ' has left the building. Bye for now!');
    +};
    +
  2. +
  3. Сохраните код и загрузите страницу в браузере и попробуйте ввести следующее в текстовый ввод: +
    person1.farewell();
    +
  4. +
+ +

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

+ +

Подумайте об этом на мгновение. В нашем коде мы определяем конструктор, затем мы создаем экземпляр объекта из конструктора, затем добавляем новый метод к прототипу конструктора:

+ +
function Person(first, last, age, gender, interests) {
+
+  // определения свойств и методов
+
+}
+
+var person1 = new Person('Tammi', 'Smith', 32, 'neutral', ['music', 'skiing', 'kickboxing']);
+
+Person.prototype.farewell = function() {
+  alert(this.name.first + ' has left the building. Bye for now!');
+};
+ +

Но метод farewell() по-прежнему доступен в экземпляре объекта person1 - его элементы были автоматически обновлены, чтобы включить недавно определенный метод farewell().

+ +
+

Примечание: Если у вас возникли проблемы с получением этого примера для работы, посмотрите на наш пример oojs-class-prototype.html (см. также это running live).

+
+ +

Вы редко увидите свойства, определенные в свойстве prototype, потому что они не очень гибки при таком определении. Например, вы можете добавить свойство следующим образом:

+ +
Person.prototype.fullName = 'Bob Smith';
+ +

Это не очень гибко, так как человека нельзя назвать так. Было бы намного лучше сделать это, создав fullName из name.first и name.last:

+ +
Person.prototype.fullName = this.name.first + ' ' + this.name.last;
+ +

Однако это не работает, поскольку в этом случае this будет ссылаться на глобальную область, а не на область функции. Вызов этого свойства вернет undefined undefined. Это отлично работало с методом, который мы определили ранее в прототипе, потому что он находится внутри области функций, которая будет успешно перенесена в область экземпляра объекта. Таким образом, вы можете определить постоянные свойства прототипа (т. е. те, которые никогда не нуждаются в изменении), но обычно лучше определять свойства внутри конструктора.

+ +

Фактически, довольно распространенный шаблон для большего количества определений объектов - это определение свойств внутри конструктора и методов в прототипе. Это упрощает чтение кода, поскольку конструктор содержит только определения свойств, а методы разделены на отдельные блоки. Например:

+ +
// Определение конструктора и его свойств
+
+function Test(a, b, c, d) {
+  // определение свойств...
+}
+
+// Определение первого метода
+
+Test.prototype.x = function() { ... };
+
+// Определение второго метода
+
+Test.prototype.y = function() { ... };
+
+//...и так далее
+ +

Этот образец можно увидеть в действии в примере приложения плана школы Петра Залевы.

+ +

Резюме

+ +

В этой статье рассмотрены прототипы объектов JavaScript (в том числе и то, как прототип цепочки объектов позволяет объектам наследовать функции друг от друга), свойство прототипа и как его можно использовать для добавления методов к конструкторам и другие связанные с этой статьёй темы.

+ +

В следующей статье мы рассмотрим то, как вы можете реализовать наследование функциональности между двумя собственными настраиваемыми объектами.

+ +

{{PreviousMenuNext("Learn/JavaScript/Objects/Object-oriented_JS", "Learn/JavaScript/Objects/Inheritance", "Learn/JavaScript/Objects")}}

+ + + +

В этом модуле

+ + diff --git "a/files/ru/learn/javascript/\320\276\320\261\321\212\320\265\320\272\321\202\321\213/adding_bouncing_balls_features/index.html" "b/files/ru/learn/javascript/\320\276\320\261\321\212\320\265\320\272\321\202\321\213/adding_bouncing_balls_features/index.html" deleted file mode 100644 index fe97392371..0000000000 --- "a/files/ru/learn/javascript/\320\276\320\261\321\212\320\265\320\272\321\202\321\213/adding_bouncing_balls_features/index.html" +++ /dev/null @@ -1,212 +0,0 @@ ---- -title: Добавление функций в нашу демонстрацию отбойных шаров -slug: Learn/JavaScript/Объекты/Adding_bouncing_balls_features -translation_of: Learn/JavaScript/Objects/Adding_bouncing_balls_features ---- -
{{LearnSidebar}}
- -
{{PreviousMenuNext("Learn/JavaScript/Objects/Object_building_practice", "", "Learn/JavaScript/Objects")}}
- -

В этом упражнении мы будем использовать проект прыгающих шаров из предыдущей статьи и добавим в него новые интересные возможности.

- - - - - - - - - - - - -
Требования:Перед тем как приступить к этому упражнению нужно выполнить задания из всех статей текущего модуля.
Цель:Проверить насколько хорошо вы понимаете объекты и связанные с ними конструкции в языке Javascript. 
- -

Начало

- -

Для начала скопируйте файлы index-finished.html, style.css и main-finished.js из предыдущей статьи в новую директорию на вашем компьютере.

- -

Для выполнения упражнения вы можете использовать сайт JSBin или Thimble. Вы можете вставлять HTML, CSS и JavaScript код в один из этих онлайн-редакторов. Если ваш онлайн-редактор не поддерживает раздельные панели для редактирования JavaScript/CSS кода, то вы можете встроить код в HTML с помощью тегов <script>/<style>.

- -
-

Примечание. Если у вас что-то не получается — попросите о помощи. Более подробная информация находится в секции {{anch("Assessment or further help")}} в конце этой страницы.

-
- -

Краткое описание проекта

- -

Наша веселая демонстрация шаров - это весело, но теперь мы хотим сделать ее немного более интерактивной, добавив контролируемый пользователем злой круг, который будет есть шары, если он их поймает. Мы также хотим проверить ваши навыки создания объектов, создав общий объект Shape(), который могут наследовать наши шары и злой круг. Наконец, мы хотим добавить счетчик очков, чтобы отслеживать количество оставшихся шаров для захвата.

- -

Следующий скриншот дает вам представление о том, как должна выглядеть готовая программа:

- -

- - - -

Чтобы дать вам больше идеи, посмотрите на законченный пример (не заглядывая в исходный код!)

- -

Шаги по завершению

- -

В следующих разделах описывается, что вам нужно делать.

- -

Создание наших новых объектов

- -

Прежде всего, измените существующий конструктор Ball() так, чтобы он стал конструктором Shape() и добавил новый конструктор Ball():

- -
    -
  1. Конструктор Shape() должен определять свойства x, y, velX и velY,  так же, как и конструктор Ball(), но не свойства color и size.
  2. -
  3. Он также должен определить новое свойствоexists, которое используется для отслеживания наличия шаров в программе (не было съедено злым кругом). Это должно быть логическое (true / false).
  4. -
  5. Конструктор Ball() должен наследовать свойства x, y, velX, velY и exists из конструктора Shape().
  6. -
  7. Он также должен определить свойство color и size, как это сделал оригинальный конструктор Ball().
  8. -
  9. Не забудьте установить prototype и constructor конструктора Ball() соответствующим образом.
  10. -
- -

Определения меток шара draw(), update() и collisionDetect() должны быть такими же, как и раньше.

- -

Вам также нужно добавить новый параметр в новый вызов конструктора new Ball() ( ... ) - параметр exists должен быть 5-м параметром и ему должно быть присвоено значение true.

- -

На этом этапе попробуйте перезагрузить код - он должен работать так же, как и раньше, с нашими перепроектированными объектами.

- -

Определение EvilCircle()

- -

Теперь пришло время встретить плохого парня - EvilCircle()! Наша игра будет включать только один злой круг, но мы все еще будем определять его с помощью конструктора, который наследует от Shape(), чтобы дать вам некоторую практику. Возможно, вам захочется добавить еще один круг в приложение, которое может контролироваться другим игроком или иметь несколько злобных окружений, управляемых компьютером. Вы, вероятно, не собираетесь захватить мир одним злым кругом, но он будет делать для этой оценки.

- -

Конструктор EvilCircle() должен наследовать x, y, velX, velY и exists из Shape(), но velX и velY должны всегда равняться 20.

- -

Вы должны сделать что-то вроде Shape.call(this, x, y, 20, 20, exists);

- -

Он также должен определить свои собственные свойства следующим образом:

- - - -

Опять же, не забудьте определить свои унаследованные свойства как параметры в конструкторе и правильно установить свойства prototype и constructor.

- -

Defining EvilCircle()'s methods

- -

EvilCircle() должен иметь четыре метода, как описано ниже.

- -

draw()

- -

Этот метод имеет ту же цель, что и метод draw() метода Ball(): он рисует экземпляр объекта на холсте. Он будет работать очень схожим образом, поэтому вы можете начать с копирования определения Ball.prototype.draw. Затем вы должны внести следующие изменения:

- - - -

checkBounds()

- -

Этот метод будет делать то же самое, что и первая часть функции  Ball()'s update(), чтобы посмотреть, не исчезнет ли злой круг от края экрана и не прекратит это делать. Опять же, вы можете просто скопировать определение Ball.prototype.update, но есть несколько изменений, которые вы должны сделать:

- - - -

setControls()

- -

Этот метод добавит прослушиватель событий onkeydown к объекту window, чтобы при нажатии определенных клавиш клавиатуры мы могли перемещать злой круг вокруг. Следующий код должен быть помещен внутри определения метода:

- -
var _this = this;
-window.onkeydown = function(e) {
-    if (e.keyCode === 65) {
-      _this.x -= _this.velX;
-    } else if (e.keyCode === 68) {
-      _this.x += _this.velX;
-    } else if (e.keyCode === 87) {
-      _this.y -= _this.velY;
-    } else if (e.keyCode === 83) {
-      _this.y += _this.velY;
-    }
-  }
- -

Поэтому, когда нажата клавиша, проконсультируется о свойствах keyCode объекта события, чтобы увидеть, какая клавиша нажата. Если это один из четырех, представленных указанными ключевыми кодами, тогда злой круг будет перемещаться влево / вправо / вверх / вниз.

- - - -

collisionDetect()

- -

Этот метод будет действовать очень похоже на метод collisionDetect() в Ball(), поэтому вы можете использовать его в качестве основы для этого нового метода. Но есть несколько отличий:

- - - -

Приведение злого круга в программу

- -

Теперь мы определили злой круг, нам нужно на самом деле заставить его появиться на нашей сцене. Для этого вам нужно внести некоторые изменения в функцию loop().

- - - -

Реализация счетчика баллов

- -

Чтобы выполнить счетчик счетчиков, выполните следующие действия:

- -
    -
  1. В своем HTML-файле добавьте элемент {{HTMLElement ("p")}} непосредственно под элементом {{HTMLElement ("h1")}}, содержащим текст «Ball count:».
  2. -
  3. В вашем файле CSS добавьте следующее правило внизу: -
    p {
    -  position: absolute;
    -  margin: 0;
    -  top: 35px;
    -  right: 5px;
    -  color: #aaa;
    -}
    -
  4. -
  5. В своем JavaScript сделайте следующие обновления: -
      -
    • Создайте переменную, которая хранит ссылку на абзац.
    • -
    • Держите подсчет количества шаров на экране в некотором роде.
    • -
    • Увеличьте количество и покажите обновленное количество шаров каждый раз, когда шар добавляется в сцену.
    • -
    • Уменьшите счет и покажите обновленное количество мячей каждый раз, когда злой круг ест шарик (его не существует).
    • -
    -
  6. -
- -

Советы и подсказки

- - - -

Assessment

- -

Если вы проводите эту оценку в рамках организованного курса, вы должны уметь отдать свою работу своему учителю / наставнику для маркировки. Если вы самообучаетесь, то вы можете получить руководство по маркировке довольно легко, задав тему обсуждения для этого упражнения или в IRC-канале #mdn в Mozilla IRC. Сначала попробуйте упражнение - ничего не выиграть от обмана!

- -

{{PreviousMenuNext("Learn/JavaScript/Objects/Object_building_practice", "", "Learn/JavaScript/Objects")}}

- - - -

In this module

- - - - - -
- - -
- -
-
diff --git "a/files/ru/learn/javascript/\320\276\320\261\321\212\320\265\320\272\321\202\321\213/index.html" "b/files/ru/learn/javascript/\320\276\320\261\321\212\320\265\320\272\321\202\321\213/index.html" deleted file mode 100644 index 9acc354feb..0000000000 --- "a/files/ru/learn/javascript/\320\276\320\261\321\212\320\265\320\272\321\202\321\213/index.html" +++ /dev/null @@ -1,47 +0,0 @@ ---- -title: Введение в объекты JavaScript -slug: Learn/JavaScript/Объекты -tags: - - JavaScript - - Начинающим - - Объекты - - Руководства -translation_of: Learn/JavaScript/Objects ---- -
{{LearnSidebar}}
- -

В JavaScript большинство сущностей являются объектами, начиная с самого основного функционала JavaScript, такого как строки (strings) и массивы (array), и заканчивая встроенными в браузер API. Вы можете даже создавать свои собственные объекты, чтобы инкапсулировать связанные между собой функции и переменные в эффективные пакеты и действовать как удобные хранилища данных. Понимание объектно-ориентированной природы JavaScript очень важно, если Вы хотите продолжить дальнейшее более углубленное изучение языка. Поэтому мы предоставляем Вам данный модуль, чтобы помочь Вам разобраться в этом. Здесь мы детально обучим Вас теории и синтаксису объектов, а затем рассмотрим, как создавать свои собственные объекты. 

- -

Необходимые знания

- -

Перед тем, как начать изучение данного модуля, Вы должны иметь некоторое представление о HTML и CSS. Мы советуем Вам поработать над разделами Введение в HTML и Введение в CSS перед изучением этого модуля JavaScript.

- -

Также Вам необходимо знать основы JavaScript перед подробным изучением объектов JavaScript. Предварительно поработайте с разделами Первые шаги в JavaScript и Структурные элементы в JavaScript перед началом изучения данного модуля.

- -
-

Примечание: Если Вы работаете за компьютером/планшетом/другим устройством, на котором у Вас нет возможности создавать собственные файлы, постарайтесь поработать с примерами кода на платформах онлайн-программирования, таких, как JSBin or Thimble.

-
- -

Руководства

- -
-
Основы объектов
-
В первой статье мы рассмотрим объекты в JavaScript. Мы будем разбирать основы синтаксиса объектов JavaScript и заново изучим некоторый функционал JavaScript, который мы уже исследовали ранее на курсе, подтвердив тот факт, что большая часть функционала, с которым мы уже столкнулись, в действительности является объектами.
-
Объектно-ориентированный JavaScript для начинающих
-
Закончив с основами, мы сфокусируемся на объектно-ориентированном JavaScript (OOJS) —  эта статья представляет основы теории объектно-ориентированного программирования (ООП). Затем мы изучим, как JavaScript эмулирует классы объектов через конструктор функций, и как создавать экземпляры объектов.
-
Прототипы объектов
-
Прототипы - это механизм, благодаря которому объекты в JavaScript наследуют функционал друг друга, но при этом они работают иначе по сравнению с механизмами наследования в классических объектно-ориентированных языках. В этой статье мы изучим эти отличия, объясним, как работает цепочка прототипов, и рассмотрим, как свойство прототипа может быть использовано для добавления методов к существующим конструкторам.
-
Наследование в JavaScript
-
После знакомства с самыми жуткими подробностями OOJS, эта статья покажет, как создавать "дочерные" классы объектов (конструкторы), которые наследуют функционал от своих "родительских" классов. В дополнении, мы дадим Вам пару советов о том, где и когда можно использовать OOJS.
-
Работа с JSON-данными
-
Представление объектов в JavaScript (JavaScript Object Notation) (JSON) - это стандартный формат для представления структурированных данных в виде объектов JavaScript, который обычно используется для представления и передачи данных на веб-сайтах (т.е. передача некоторых данных от сервера к клиенту - таким образом они могут быть отображены на веб-странице). Вы довольно часто будете с этим сталкиваться, поэтому в данной статье мы предоставим вам все, что необходимо для работы с JSON с помощью JavaScript, в том числе доступ к элементам данных в объекте JSON и написания собственного JSON-кода.
-
Практика построения объектов
-
В предыдущих статьях мы рассматривали самые основные моменты в теории и синтаксисе объектов в JavaScript, дав Вам твердую основу для начала. В этой статье мы погрузимся в практические занятия, получим больше практической работы в построении собственных объектов в JavaScript, чтобы сделать кое-что веселое и красочное - несколько цветных прыгающих шариков.
-
- -

Задания

- -
-
Добавление функционала к демо с прыгающими шариками
-
В этом задании, мы ожидаем, что Вы, используя демо с прыгающими шариками из предыдущей статьи как отправную точку, добавите немного нового и интересного функционала в него.
-
diff --git "a/files/ru/learn/javascript/\320\276\320\261\321\212\320\265\320\272\321\202\321\213/inheritance/index.html" "b/files/ru/learn/javascript/\320\276\320\261\321\212\320\265\320\272\321\202\321\213/inheritance/index.html" deleted file mode 100644 index c1565cd72f..0000000000 --- "a/files/ru/learn/javascript/\320\276\320\261\321\212\320\265\320\272\321\202\321\213/inheritance/index.html" +++ /dev/null @@ -1,266 +0,0 @@ ---- -title: Наследование в JavaScript -slug: Learn/JavaScript/Объекты/Inheritance -tags: - - JavaScript - - Наследование - - ООП -translation_of: Learn/JavaScript/Objects/Inheritance ---- -

- -

- - - -
{{LearnSidebar}}
- -
{{PreviousMenuNext("Learn/JavaScript/Objects/Object_prototypes", "Learn/JavaScript/Objects/JSON", "Learn/JavaScript/Objects")}}
- -

Теперь, когда объясняется большая часть подробностей OOJS, эта статья показывает, как создавать «дочерние» классы объектов (конструкторы), которые наследуют признаки из своих «родительских» классов. Кроме того, мы дадим некоторые советы о том, когда и где вы можете использовать OOJS , и посмотрим, как классы рассматриваются в современном синтаксисе ECMAScript.

- - - - - - - - - - - - -
Необходимые знания: -

Базовая компьютерная грамотность, понимание основ HTML и CSS, знакомство с основами JavaScript (см. Первые шаги и Структурные элементы) and основы Объектно-ориентированного JS (см. Введение в объекты).

-
Цель:Понять, как можно реализовать наследование в JavaScript.
- -

Прототипное наследование

- -

До сих пор мы видели некоторое наследование в действии - мы видели, как работают прототипы и как элементы наследуются, поднимаясь по цепочке. Но в основном это связано с встроенными функциями браузера. Как создать объект в JavaScript, который наследует от другого объекта?

- -

Давайте рассмотрим, как это сделать на конкретном примере.

- -

Начало работы

- -

Прежде всего сделайте себе локальную копию нашего файла oojs-class-inheritance-start.html (он также работает в режиме реального времени). В файле вы найдете тот же пример конструктора Person(), который мы использовали на протяжении всего модуля, с небольшим отличием - мы определили внутри конструктора только лишь свойства:

- -
function Person(first, last, age, gender, interests) {
-  this.name = {
-    first,
-    last
-  };
-  this.age = age;
-  this.gender = gender;
-  this.interests = interests;
-};
- -

Все методы определены в прототипе конструктора. Например:

- -
Person.prototype.greeting = function() {
-  alert('Hi! I\'m ' + this.name.first + '.');
-};
- -
-

Примечание. В исходном коде вы также увидите определенные методы bio() и farewell(). Позже вы увидите, как они могут быть унаследованы другими конструкторами.

-
- -

Скажем так, мы хотели создать класс Teacher, подобный тому, который мы описали в нашем первоначальном объектно-ориентированном определении, которое наследует всех членов от Person, но также включает в себя:

- -
    -
  1. Новое свойство, subject - оно будет содержать предмет, который преподает учитель.
  2. -
  3. Обновленный метод greeting(), который звучит немного более формально, чем стандартный метод greeting()— более подходит для учителя, обращающегося к некоторым ученикам в школе.
  4. -
- -

Определение функции-конструктора Teacher()

- -

Первое, что нам нужно сделать, это создать конструктор Teacher() - добавьте ниже следующий код:

- -
function Teacher(first, last, age, gender, interests, subject) {
-  Person.call(this, first, last, age, gender, interests);
-
-  this.subject = subject;
-}
- -

Это похоже на конструктор Person во многих отношениях, но здесь есть что-то странное, что мы не видели раньше - функцию call(). Эта функция в основном позволяет вам вызывать функцию, определенную где-то в другом месте, но в текущем контексте. Первый параметр указывает значение this, которое вы хотите использовать при выполнении функции, а остальные параметры - те, которые должны быть переданы функции при ее вызове.

- -

Мы хотим, чтобы конструктор Teacher() принимал те же параметры, что и конструктор Person(), от которго он наследуется, поэтому мы указываем их как параметры в вызове call().

- -

Последняя строка внутри конструктора просто определяет новое свойство subject, которое будут иметь учителя, и которого нет у Person().

- -

В качестве примечания мы могли бы просто сделать это:

- -
function Teacher(first, last, age, gender, interests, subject) {
-  this.name = {
-    first,
-    last
-  };
-  this.age = age;
-  this.gender = gender;
-  this.interests = interests;
-  this.subject = subject;
-}
- -

Но это просто переопределяет свойства заново, а не наследует их от Person(), так что теряется смысл того, что мы пытаемся сделать. Он также занимает больше строк кода.

- -

Наследование от конструктора без параметров

- -

Обратите внимание, что если конструктор, от которого вы наследуете, не принимает значения своего свойства из параметров, вам не нужно указывать их в качестве дополнительных аргументов в call(). Так, например, если у вас было что-то действительно простое:

- -
function Brick() {
-  this.width = 10;
-  this.height = 20;
-}
- -

Вы можете наследовать свойства width и height, выполнив это (как и другие шаги, описанные ниже, конечно):

- -
function BlueGlassBrick() {
-  Brick.call(this);
-
-  this.opacity = 0.5;
-  this.color = 'blue';
-}
- -

Обратите внимание, что мы указали только this внутри call() - никаких других параметров не требуется, поскольку мы не наследуем никаких свойств родителя, которые задаются через параметры.

- -

Установка Teacher()'s prototype и конструктор ссылок

- -

Пока все хорошо, но у нас есть проблема. Мы определили новый конструктор и у него есть свойство prototype, которое по умолчанию просто содержит ссылку на саму конструкторскую функцию. Он не содержит методов свойства prototype конструктора Person. Чтобы увидеть это, введите Object.getOwnPropertyNames(Teacher.prototype) в поле ввода текста или в вашу консоль JavaScript. Затем введите его снова, заменив Teacher на Person. Новый конструктор не наследует эти методы. Чтобы увидеть это, сравните выводы в консоль Person.prototype.greeting и Teacher.prototype.greeting. Нам нужно заставить Teacher() наследовать методы, определенные на прототипе Person(). Итак, как мы это делаем?

- -
    -
  1. Добавьте следующую строку ниже своего предыдущего добавления: -
    Teacher.prototype = Object.create(Person.prototype);
    - Здесь наш друг create() снова приходит на помощь. В этом случае мы используем его для создания нового объекта и делаем его значением Teacher.prototype. Новый объект имеет свой прототип Person.prototype и, следовательно, наследует, если и когда это необходимо, все доступные методы Person.prototype.
  2. -
  3. Нам нужно сделать еще одну вещь, прежде чем двигаться дальше. После добавления последней строки, Teacher.prototype.constructor стало равным Person(), потому что мы просто устанавливаем Teacher.prototype для ссылки на объект, который наследует его свойства от Person.prototype! Попробуйте сохранить код, загрузите страницу в браузере и введите Teacher.prototype.constructor в консоль для проверки.
  4. -
  5. Это может стать проблемой, поэтому нам нужно сделать это правильно. Вы можете сделать это, вернувшись к исходному коду и добавив следующие строки внизу: -
    Object.defineProperty(Teacher.prototype, 'constructor', {
    -    value: Teacher,
    -    enumerable: false, // false, чтобы данное свойство не появлялось в цикле for in
    -    writable: true });
    -
  6. -
  7. Теперь, если вы сохраните и обновите, введите Teacher.prototype.constructor, чтобы вернуть Teacher(), плюс мы теперь наследуем Person()!
  8. -
- -

Предоставление Teacher() новой функции greeting()

- -

Чтобы завершить наш код, нам нужно определить новую функцию greeting() в конструкторе Teacher().

- -

Самый простой способ сделать это - определить его на прототипе Teacher() - добавить в нижнюю часть кода следующее:

- -
Teacher.prototype.greeting = function() {
-  var prefix;
-
-  if (this.gender === 'male' || this.gender === 'Male' || this.gender === 'm' || this.gender === 'M') {
-    prefix = 'Mr.';
-  } else if (this.gender === 'female' || this.gender === 'Female' || this.gender === 'f' || this.gender === 'F') {
-    prefix = 'Mrs.';
-  } else {
-    prefix = 'Mx.';
-  }
-
-  alert('Hello. My name is ' + prefix + ' ' + this.name.last + ', and I teach ' + this.subject + '.');
-};
- -

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

- -

Попробуйте пример

- -

Теперь, когда вы ввели весь код, попробуйте создать экземпляр объекта из Teacher(), поставив ниже вашего JavaScript кода (или что-то похожее по вашему выбору):

- -
var teacher1 = new Teacher('Dave', 'Griffiths', 31, 'male', ['football', 'cookery'], 'mathematics');
- -

Теперь сохраните, обновите, и попробуйте получить доступ к свойствам и методам вашего нового объекта teacher1, например:

- -
teacher1.name.first;
-teacher1.interests[0];
-teacher1.bio();
-teacher1.subject;
-teacher1.greeting();
-teacher1.farewell();
- -

Все должно работать нормально. Запросы в строках 1, 2, 3 и 6 унаследованны от общего конструктора Person() (класса). Запрос в строке 4 обращается к subject, доступному только для более специализированного конструктора (класса) Teacher(). Запрос в строке 5 получил бы доступ к методу greeting(), унаследованному от Person(), но Teacher() имеет свой собственный метод greeting() с тем же именем, поэтому запрос обращается к этому методу.

- -
-

Примечание. Если вам не удается заставить это работать, сравните свой код с нашей готовой версией (см. также рабочее демо).

-
- -

Методика, которую мы здесь рассмотрили, - это не единственный способ создания наследующих классов в JavaScript, но он работает нормально и это дает вам представление о том, как реализовать наследование в JavaScript.

- -

Вам также может быть интересно узнать некоторые из новых функций {{glossary("ECMAScript")}}, которые позволяют нам делать наследование более чисто в JavaScript (см. Classes). Мы не рассматривали их здесь, поскольку они пока не поддерживаются очень широко в браузерах. Все остальные конструкторы кода, которые мы обсуждали в этом наборе статей, поддерживаются еще в IE9 или ранее и есть способы добиться более ранней поддержки, чем это.

- -

Обычный способ - использовать библиотеку JavaScript - большинство популярных опций имеют простой набор функций, доступных для выполнения наследования более легко и быстро. CoffeeScript , например, предоставляет класс, расширяет и т.д.

- -

Дальнейшее упражнение

- -

В нашем руководстве по Объектно-ориентированному JavaScript для начинающих мы также включили класс Student как концепцию, которая наследует все особенности Person, а также имеет другой метод greeting() от Person, который гораздо более неформален, чем приветствие Teacher. Посмотрите, как выглядит приветствие ученика в этом разделе, и попробуйте реализовать собственный конструктор Student(), который наследует все функции Person() и реализует другую функцию greeting().

- -
-

Примечание. Если вам не удается заставить это работать, сравните свой код с нашей готовой версией (см. также рабочее демо).

-
- -

Object member summary

- -

Подводя итог, вы в основном получили три типа свойств / методов, о которых нужно беспокоиться:

- -
    -
  1. Те, которые определены внутри функции-конструктора, которые присваиваются экземплярам объекта. Их довольно легко заметить - в вашем собственном коде они представляют собой элементы, определенные внутри конструктора, используя строки this.x = x; в встроенном коде браузера они являются членами, доступными только для экземпляров объектов (обычно создаются путем вызова конструктора с использованием ключевого слова new, например var myInstance = new myConstructor ().
  2. -
  3. Те, которые определяются непосредственно самим конструктором, которые доступны только для конструктора. Они обычно доступны только для встроенных объектов браузера и распознаются путем непосредственной привязки к конструктору, а не к экземпляру. Например, Object.keys().
  4. -
  5. Те, которые определены в прототипе конструктора, которые наследуются всеми экземплярами и наследуют классы объектов. К ним относятся любой член, определенный в свойстве прототипа конструктора, например. myConstructor.prototype.x().
  6. -
- -

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

- -

Когда вы используете наследование в JavaScript?

- -

В частности, после этой последней статьи вы можете подумать: «У-у-у, это сложно». Ну, ты прав. Прототипы и наследование представляют собой некоторые из самых сложных аспектов JavaScript, но многие возможности и гибкость JavaScript вытекают из его структуры объектов и наследования и стоит понять, как это работает.

- -

В некотором смысле вы используете наследование все время. Всякий раз, когда вы используете различные функции веб-API или методы/свойства, определенные во встроенном объекте браузера, который вы вызываете в своих строках, массивах и т.д., вы неявно используете наследование.

- -

Что касается использования наследования в вашем собственном коде, вы, вероятно, не будете часто его использовать, особенно для начала и в небольших проектах. Это пустая трата времени на использование объектов и наследование только ради этого, когда они вам не нужны. Но по мере того, как ваши базы кода становятся больше, вы с большей вероятностью найдете необходимость в этом. Если вы начинаете создавать несколько объектов с подобными функциями, то создание универсального типа объекта, содержащего все общие функции и наследование этих функций в более специализированных типах объектов, может быть удобным и полезным.

- -
-

Примечание. Из-за того, как работает JavaScript, с цепочкой прототипов и т.д., совместное использование функций между объектами часто называется делегированием. Специализированные объекты делегируют функциональность универсальному типу объекта.

-
- -

При использовании наследования вам рекомендуется не иметь слишком много уровней наследования и тщательно отслеживать, где вы определяете свои методы и свойства. Можно начать писать код, который временно изменяет прототипы встроенных объектов браузера, но вы не должны этого делать, если у вас нет действительно веской причины. Слишком много наследования могут привести к бесконечной путанице и бесконечной боли при попытке отладки такого кода.

- -

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

- -

Резюме

- -

В этой статье мы рассмотрели оставшуюся часть основной теории и синтаксиса OOJS, которые, как мы думаем, вам следует знать сейчас. На этом этапе вы должны понимать основы JavaScript, ООП, прототипы и прототипное наследование, как создавать классы (конструкторы) и экземпляры объектов, добавлять функции в классы и создавать подклассы, которые наследуются от других классов.

- -

В следующей статье мы рассмотрим, как работать с JavaScript Object Notation (JSON), общим форматом обмена данными, написанным с использованием объектов JavaScript.

- -

See also

- - - -

{{PreviousMenuNext("Learn/JavaScript/Objects/Object_prototypes", "Learn/JavaScript/Objects/JSON", "Learn/JavaScript/Objects")}}

- -

В этом модуле

- - diff --git "a/files/ru/learn/javascript/\320\276\320\261\321\212\320\265\320\272\321\202\321\213/json/index.html" "b/files/ru/learn/javascript/\320\276\320\261\321\212\320\265\320\272\321\202\321\213/json/index.html" deleted file mode 100644 index 371f254ec6..0000000000 --- "a/files/ru/learn/javascript/\320\276\320\261\321\212\320\265\320\272\321\202\321\213/json/index.html" +++ /dev/null @@ -1,353 +0,0 @@ ---- -title: Работа с JSON -slug: Learn/JavaScript/Объекты/JSON -tags: - - Beginner - - JSON - - JavaScript -translation_of: Learn/JavaScript/Objects/JSON ---- -
{{LearnSidebar}}
- -
{{PreviousMenuNext("Learn/JavaScript/Objects/Inheritance", "Learn/JavaScript/Objects/Object_building_practice", "Learn/JavaScript/Objects")}}
- -

Обозначение объектов JavaScript (JSON - JavaScript Object Notation) - стандартный текстовый формат для представления структурированных данных на основе синтаксиса объекта JavaScript. Он обычно используется для передачи данных в веб-приложениях (например, отправка некоторых данных с сервера клиенту,таким образом чтобы это могло отображаться на веб-странице или наоборот). Вы будете сталкиваться с этим довольно часто, поэтому в этой статье мы даем вам все, что вам нужно для работы с JSON используя JavaScript, включая парсинг JSON, чтобы вы могли получить доступ к данным внутри него при создании JSON.

- - - - - - - - - - - - -
Необходимые знания:Базовая компьютерная грамотность, базовые знания HTML и CSS, знакомство с основами JavaScript (см. First steps и Building blocks) и основами OOJS  (see Introduction to objects).
Цель:Понять, как работать с данными, хранящимися в JSON, и создавать свои собственные объекты JSON.
- -

Нет, действительно, что такое JSON?

- -

{{glossary("JSON")}} - текстовый формат данных, следующий за синтаксисом объекта JavaScript, который был популяризирован Дугласом Крокфордом. Несмотря на то, что он очень похож на буквенный синтаксис объекта JavaScript, его можно использовать независимо от JavaScript, и многие среды программирования имеют возможность читать (анализировать) и генерировать JSON.

- -

JSON существует как строка,что необходимо при передаче данных по сети. Он должен быть преобразован в собственный объект JavaScript, если вы хотите получить доступ к данным. Это не большая проблема. JavaScript предоставляет глобальный объект JSON, который имеет методы для преобразования между ними.

- -
-

Примечание: Преобразование строки в родной объект называется десериализацией (преобразование из последовательной формы в параллельную), в то время как преобразовании родного объекта в строку, таким образом ,чтобы он мог быть передан через сеть, называется сериализацией(преобразование в последовательную форму).

-
- -

Объект JSON может быть сохранен в собственном файле, который в основном представляет собой текстовый файл с расширением .json и {{glossary("MIME type")}} application/json.

- -

Структура JSON

- -

Как описано выше, JSON представляет собой строку, формат которой очень похож на буквенный формат объекта JavaScript. Вы можете включать одни и те же базовые типы данных внутри JSON, так же как и  в стандартном объекте JavaScript - строки, числа, массивы, булевы и другие объектные литералы. Это позволяет построить иерархию данных, к примеру, так:

- -
{
-  "squadName": "Super hero squad",
-  "homeTown": "Metro City",
-  "formed": 2016,
-  "secretBase": "Super tower",
-  "active": true,
-  "members": [
-    {
-      "name": "Molecule Man",
-      "age": 29,
-      "secretIdentity": "Dan Jukes",
-      "powers": [
-        "Radiation resistance",
-        "Turning tiny",
-        "Radiation blast"
-      ]
-    },
-    {
-      "name": "Madame Uppercut",
-      "age": 39,
-      "secretIdentity": "Jane Wilson",
-      "powers": [
-        "Million tonne punch",
-        "Damage resistance",
-        "Superhuman reflexes"
-      ]
-    },
-    {
-      "name": "Eternal Flame",
-      "age": 1000000,
-      "secretIdentity": "Unknown",
-      "powers": [
-        "Immortality",
-        "Heat Immunity",
-        "Inferno",
-        "Teleportation",
-        "Interdimensional travel"
-      ]
-    }
-  ]
-}
- -

Если бы мы загрузили этот объект в программу JavaScript, создали переменную с названием superHeroes, мы могли бы затем получить доступ к данным внутри нее, используя те же самые точечную и скобочную нотации, которые мы рассмотрели в статье JavaScript object basics. Например:

- -
superHeroes.homeTown
-superHeroes['active']
- -

Чтобы получить доступ к последующим данным  по иерархии, вам просто нужно объединить требуемые имена свойств и индексы массивов. Например, чтобы получить доступ к третьей сверхспособности второго героя, указанного в списке участников, вы должны сделать следующее:

- -
superHeroes['members'][1]['powers'][2]
- -
    -
  1. Сначала у нас есть имя переменной - superHeroes.
  2. -
  3. Внутри мы хотим получить доступ к свойству members, поэтому мы используем ['members'].
  4. -
  5. members содержат массив, заполненный объектами. Мы хотим получить доступ ко второму объекту внутри массива, поэтому мы используем [1].
  6. -
  7. Внутри этого объекта мы хотим получить доступ к свойству powers, поэтому мы используем ['powers'].
  8. -
  9. Внутри свойства powers находится массив, содержащий сверхспособности выбранного героя. Нам нужен третий, поэтому мы используем [2].
  10. -
- -
-

Примечание. Мы сделали JSON, видимый выше, доступным внутри переменной в нашем примере JSONTest.html (см. исходный код). Попробуйте загрузить это, а затем получить доступ к данным внутри переменной через консоль JavaScript вашего браузера.

-
- -

Массивы как JSON

- -

Выше мы упоминали ,что JSON текст выглядит практически так же как и JavaScript объект,и это почти правильно.Причина,по которой мы говорим почти правильно заключается в том ,что массив также валиден JSON  например:

- -
[
-  {
-    "name": "Molecule Man",
-    "age": 29,
-    "secretIdentity": "Dan Jukes",
-    "powers": [
-      "Radiation resistance",
-      "Turning tiny",
-      "Radiation blast"
-    ]
-  },
-  {
-    "name": "Madame Uppercut",
-    "age": 39,
-    "secretIdentity": "Jane Wilson",
-    "powers": [
-      "Million tonne punch",
-      "Damage resistance",
-      "Superhuman reflexes"
-    ]
-  }
-]
- -

Вышесказанное вполне справедливо для JSON. Вам просто нужно получить доступ к элементам массива (в его анализируемой версии), начиная с индекса массива, например [0]["powers"][0].

- -

Другие примечания

- - - -

Активное обучение: Работа с примером JSON

- -

Итак, давайте рассмотрим пример, чтобы показать то, как мы можем использовать некоторые данные JSON на веб-сайте.

- -

Начало работы

- -

Для начала создайте локальные копии наших файлов heroes.html и style.css. Последний содержит простой CSS для стилизации нашей страницы, в то время как первый содержит очень простой HTML-код сущности:

- -
<header>
-</header>
-
-<section>
-</section>
- -

Плюс {{HTMLElement("script")}}, чтобы содержать код JavaScript, который мы будем писать в этом упражнении. На данный момент он содержит только две строки, которые захватывают ссылки на элементы {{HTMLElement("header")}} и {{HTMLElement("section")}} и сохраняют их в переменных:

- -
var header = document.querySelector('header');
-var section = document.querySelector('section');
- -

Мы предоставили данные JSON на нашем GitHub, на https://mdn.github.io/learning-area/javascript/oojs/json/superheroes.json.

- -

Мы собираемся загрузить его на нашу страницу и использовать некоторые изящные манипуляции DOM, чтобы отобразить их, например:

- -

- -

Получение JSON

- -

Чтобы получить JSON, мы будем использовать API, называемый {{domxref("XMLHttpRequest")}} (часто называемый XHR). Это очень полезный объект JavaScript, который позволяет нам делать сетевые запросы для извлечения ресурсов с сервера через JavaScript (например, изображения, текст, JSON, даже фрагменты HTML), что означает, что мы можем обновлять небольшие разделы контента без необходимости перезагрузки всей страницы. Это привело к более отзывчивым веб-страницам и звучит захватывающе, но, к сожалению, выходит за рамки этой статьи, чтобы изучить это гораздо более подробно.

- -
    -
  1. Начнем с того, что мы собираемся сохранить URL-адрес JSON, который мы хотим получить в переменной. Добавьте нижеследующий код JavaScript: -
    var requestURL = 'https://mdn.github.io/learning-area/javascript/oojs/json/superheroes.json';
    -
  2. -
  3. Чтобы создать запрос, нам нужно создать новый экземпляр объекта запроса из конструктора XMLHttpRequest, используя ключевое слово new. Добавьте следующую ниже свою последнюю строку: -
    var request = new XMLHttpRequest();
    -
  4. -
  5. Теперь нам нужно открыть новый запрос, используя метод open(). Добавьте следующую строку: -
    request.open('GET', requestURL);
    - -

    Это занимает не менее двух параметров - есть другие доступные параметры. Нам нужно только два обязательных для этого простого примера:

    - -
      -
    • Метод HTTP, который следует использовать при выполнении сетевого запроса. В этом случае GET самый подходящий, так как мы просто извлекаем некоторые простые данные.
    • -
    • URL-адрес для запроса - это URL-адрес файла JSON, который мы сохранили ранее.
    • -
    -
  6. -
  7. Затем добавьте следующие две строки: здесь мы устанавливаем responseType в JSON, так что XHR знает, что сервер будет возвращать JSON и, что это должно быть преобразовано за кулисами в объект JavaScript. Затем мы отправляем запрос методом send(): -
    request.responseType = 'json';
    -request.send();
    -
  8. -
  9. Последний бит этого раздела предполагает ожидание ответа на возврат с сервера, а затем работы с ним. Добавьте следующий код ниже вашего предыдущего кода: -
    request.onload = function() {
    -  var superHeroes = request.response;
    -  populateHeader(superHeroes);
    -  showHeroes(superHeroes);
    -}
    -
  10. -
- -

Здесь мы сохраняем ответ на наш запрос (доступный в свойстве response) в переменной superHeroes; эта переменная теперь будет содержать объект JavaScript, основанный на JSON! Затем мы передаем этот объект двум вызовам функций - первый из них заполнит <header> правильными данными, а второй создаст информационную карту для каждого героя в команде и вставляет ее в <section>.

- -

Мы свернули код в обработчик событий, который запускается, когда событие загрузки запускается в объекте запроса (см. onload) - это связано с тем, что событие загрузки запускается, когда ответ успешно возвращается; поступая  таким образом,это гарантия того, что request.response определенно будет доступен, когда мы начнем работу с ним.

- -

Заполнение заголовка

- -

Теперь мы извлекли данные JSON и превратили его в объект JavaScript, давайте воспользуемся им, написав две функции, на которые мы ссылались выше. Прежде всего, добавьте следующее определение функции ниже предыдущего кода:

- -
function populateHeader(jsonObj) {
-  var myH1 = document.createElement('h1');
-  myH1.textContent = jsonObj['squadName'];
-  header.appendChild(myH1);
-
-  var myPara = document.createElement('p');
-  myPara.textContent = 'Hometown: ' + jsonObj['homeTown'] + ' // Formed: ' + jsonObj['formed'];
-  header.appendChild(myPara);
-}
- -

Мы назвали параметр jsonObj, чтобы напомнить себе, что этот объект JavaScript возник из JSON. Здесь мы сначала создаем элемент {{HTMLElement("h1")}} с createElement(), устанавливаем его textContent равным свойству squadName объекта, а затем добавляем его в заголовок с помощью appendChild(). Затем мы выполняем очень похожую операцию с абзацем: создаем его, устанавливаем его текстовое содержимое и добавляем его в заголовок. Единственное различие заключается в том, что его текст задан, как конкатенированная строка, содержащая как homeTown, так и formed свойства объекта.

- -

Создание информационных карт героя

- -

Затем добавьте следующую функцию внизу кода, которая создает и отображает карты супергероев:

- -
function showHeroes(jsonObj) {
-  var heroes = jsonObj['members'];
-
-  for (var i = 0; i < heroes.length; i++) {
-    var myArticle = document.createElement('article');
-    var myH2 = document.createElement('h2');
-    var myPara1 = document.createElement('p');
-    var myPara2 = document.createElement('p');
-    var myPara3 = document.createElement('p');
-    var myList = document.createElement('ul');
-
-    myH2.textContent = heroes[i].name;
-    myPara1.textContent = 'Secret identity: ' + heroes[i].secretIdentity;
-    myPara2.textContent = 'Age: ' + heroes[i].age;
-    myPara3.textContent = 'Superpowers:';
-
-    var superPowers = heroes[i].powers;
-    for (var j = 0; j < superPowers.length; j++) {
-      var listItem = document.createElement('li');
-      listItem.textContent = superPowers[j];
-      myList.appendChild(listItem);
-    }
-
-    myArticle.appendChild(myH2);
-    myArticle.appendChild(myPara1);
-    myArticle.appendChild(myPara2);
-    myArticle.appendChild(myPara3);
-    myArticle.appendChild(myList);
-
-    section.appendChild(myArticle);
-  }
-}
- -

Для начала сохраним свойство members объекта JavaScript в новой переменной. Этот массив содержит несколько объектов, которые содержат информацию для каждого героя.

- -

Затем мы используем for loop для циклического прохождения каждого объекта в массиве. Для каждого из них мы:

- -
    -
  1. Создаем несколько новых элементов: <article>, <h2>, три <p> и <ul>.
  2. -
  3. Установливаем <h2>, чтобы содержать name текущего героя.
  4. -
  5. Заполняем три абзаца своей secretIdentity, age и строкой, в которой говорится: «Суперспособности:», чтобы ввести информацию в список.
  6. -
  7. Сохраняем свойство powers в другой новой переменной под названием superPowers - где содержится массив, в котором перечислены сверхспособности текущего героя.
  8. -
  9. Используем другой цикл for, чтобы прокрутить сверхспособности текущего героя , для каждого из них мы создаем элемент <li>, помещаем в него сверхспособности, а затем помещаем listItem внутри элемента <ul> (myList) с помощью appendChild().
  10. -
  11. Последнее, что мы делаем, это добавляем <h2>, <p> и <ul> внутри <article> (myArticle), а затем добавляем <article> в <section>. Важное значение имеет порядок, в котором добавляются элементы, так как это порядок, который они будут отображать внутри HTML.
  12. -
- -
-

Примечание. Если вам не удается заставить этот пример работать, попробуйте обратиться к нашему исходному коду heroes-finished.html (см. также он работает в режиме live).

-
- -
-

Примечание. Если у вас возникли проблемы после нотации точек / скобок, которые мы используем для доступа к объекту JavaScript, в этом поможет открытие файла superheroes.json на другой вкладке или в текстовом редакторе ,и обращаться к нему каждый раз, когда вам нужен JavaScript. Вы также можете обратиться к нашей статье JavaScript objectbasics чтобы получить дополнительную информацию о нотации точек и скобок.

-
- -

Преобразование между объектами и текстом

- -

Вышеприведенный пример был прост с точки зрения доступа к объекту JavaScript, потому что мы задали XHR-запрос для прямого преобразования ответа JSON в объект JavaScript, используя:

- -
request.responseType = 'json';
- -

Но иногда нам не так везет - иногда мы получаем сырую строку JSON и нам нужно  преобразовать ее в объект самостоятельно. И когда мы хотим отправить объект JavaScript по сети, нам нужно  преобразовать его в JSON (строку) перед отправкой. К счастью, эти две проблемы настолько распространены в веб-разработке, что встроенный объект JSON доступен в браузерах, которые содержат следующие два метода:

- - - -

Вы можете увидеть первый метод в действии в нашем примере heroes-finished-json-parse.html (см. исходный код) - это то же самое, что и в примере, который мы создали ранее, за исключением того, что мы установили XHR для возврата сырого JSON текста, затем используется parse(), чтобы преобразовать его в фактический объект JavaScript. Ключевой фрагмент кода находится здесь:

- -
request.open('GET', requestURL);
-request.responseType = 'text'; // now we're getting a string!
-request.send();
-
-request.onload = function() {
-  var superHeroesText = request.response; // get the string from the response
-  var superHeroes = JSON.parse(superHeroesText); // convert it to an object
-  populateHeader(superHeroes);
-  showHeroes(superHeroes);
-}
- -

Как вы могли догадаться, stringify() работает обратным образом. Попробуйте ввести следующие строки в консоль JavaScript браузера один за другим, чтобы увидеть его в действии:

- -
var myJSON = { "name": "Chris", "age": "38" };
-myJSON
-var myString = JSON.stringify(myJSON);
-myString
- -

Здесь мы создаем объект JavaScript, затем проверяем, что он содержит, а затем преобразуем его в строку JSON, используя stringify() , сохраняя возвращаемое значение в новой переменной, а затем снова проверяем его.

- -

Резюме

- -

В этой статье мы предоставили вам простое руководство по использованию JSON в ваших программах, в том числе о том, как создавать и анализировать JSON, и как получить доступ к данным, заблокированным внутри него. В следующей статье мы рассмотрим объектно-ориентированный JavaScript.

- -

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

- - - -

{{PreviousMenuNext("Learn/JavaScript/Objects/Inheritance", "Learn/JavaScript/Objects/Object_building_practice", "Learn/JavaScript/Objects")}}

- -

В этом модуле

- - - -
- - -
- -
-
diff --git "a/files/ru/learn/javascript/\320\276\320\261\321\212\320\265\320\272\321\202\321\213/object-oriented_js/index.html" "b/files/ru/learn/javascript/\320\276\320\261\321\212\320\265\320\272\321\202\321\213/object-oriented_js/index.html" deleted file mode 100644 index 0299268a90..0000000000 --- "a/files/ru/learn/javascript/\320\276\320\261\321\212\320\265\320\272\321\202\321\213/object-oriented_js/index.html" +++ /dev/null @@ -1,286 +0,0 @@ ---- -title: Объектно-ориентированный JavaScript для начинающих -slug: Learn/JavaScript/Объекты/Object-oriented_JS -tags: - - Constructor - - Create - - JavaScript - - OOJS - - Object - - Новичку - - ООП - - экземпляр -translation_of: Learn/JavaScript/Objects/Object-oriented_JS ---- -
{{LearnSidebar}}
- -
{{PreviousMenuNext("Learn/JavaScript/Objects/Basics", "Learn/JavaScript/Objects/Object_prototypes", "Learn/JavaScript/Objects")}}
- -

Разобравшись с основами, сосредоточимся на объектно-ориентированном JavaScript (OOJS) — данная статья дает базовое представление о теории объектно-ориентированного программирования (ООП), далее рассмотрено как JavaScript эмулирует классы объектов с помощью функции-конструктора и как создаются экземпляры объектов.

- - - - - - - - - - - - -
Необходимые знания: -

Базовая компьютерная грамотность, базовое понимание HTML и CSS, знакомство с основами JavaScript (см. Первые шаги и Cтруктурные элементы JavaScript) и основы OOJS (см. Введение в объекты).

-
Цель:Понять основную теорию объектно-ориентированного программирования, как это относится к JavaScript («все является объектом») и как создавать конструкторы и экземпляры объектов.
- -

Объектно-ориентированное программирование: основы

- -

Начнём с упрощённого высокоуровневого представления о том, что такое объектно-ориентированное программирование (ООП). Мы говорим упрощённого, потому что ООП может быстро стать очень сложным, и если сейчас дать полный курс, вероятно, можно запутать больше, чем помочь. Основная идея ООП заключается в том, что мы используем объекты для отображения моделей из реального мира в наших программах и/или упрощения доступа к функциям, которые в противном случае было бы трудно или невозможно использовать.

- -

Объекты могут содержать данные и код, представляющие информацию о том, что вы пытаетесь смоделировать, а также о том, какие у этих объектов должны быть функциональные возможности или поведение. Данные объекта (а часто так же и функции) могут быть точно сохранены (официальный термин "инкапсулированы") внутри пакета объекта, упрощая структуру и доступ к ним. Пакету объекта может быть присвоено определенное имя, на которое можно сослаться и которое иногда называют пространством имен. Объекты также широко используются в качестве хранилищ данных, которые могут быть легко отправлены по сети.

- -

Определение шаблона объекта

- -

Рассмотрим простую программу, которая отображает информацию об учениках и учителях в школе. Здесь мы рассмотрим теорию ООП в целом, а не в контексте какого-либо конкретного языка программирования.

- -

Вернёмся к объекту Person из нашей статьи Основы объектов, который определяет общие сведения и функциональные возможности человека. Есть много вещей, которые вы можете узнать о человеке (его адрес, рост, размер обуви, профиль ДНК, номер паспорта, значимые черты личности ...), но в данном случае нас интересует только имя, возраст, пол и интересы, а также мы хотим иметь возможность написать краткую информацию о нём, основываясь на этих данных, и сделать так, чтобы он поздоровался. Это известно как абстракция — создание простой модели более сложной сущности, которая представляет её наиболее важные аспекты таким образом, чтобы с ней было удобно работать для выполнения целей нашей программы.

- -

- -

В некоторых языках ООП, это общее определение типа объекта называется class (JavaScript использует другой механизм и терминологию, как вы увидите ниже) — это на самом деле не объект, а шаблон, который определяет, какие характеристики должен иметь объект.

- -

Создание реальных объектов

- -

Из нашего класса мы можем создать экземпляры объектов — объекты, содержащие данные и функциональные возможности, определённые в классе. Из нашего класса Person мы теперь можем создавать модели реальных людей:

- -

- -

Когда экземпляр объекта создается из класса, для его создания выполняется функция-конструктор класса. Этот процесс создания экземпляра объекта из класса называется создание экземпляра (instantiation) — из класса создается экземпляр объекта.

- -

Специализированные классы

- -

В нашем случае нам не нужны все люди — нам требуются учителя и ученики, которые являются более конкретными типами людей. В ООП мы можем создавать новые классы на основе других классов — эти новые дочерние классы могут быть созданы для наследования данных и характеристик родительского класса, так чтобы можно было использовать функциональные возможности, общие для всех типов объекта, вместо того чтобы дублировать их. Когда функциональность различается между классами, можно по мере необходимости определять специализированные функции непосредственно на них.

- -

- -

Это действительно полезно — преподаватели и студенты имеют много общих характеристик, таких как имя, пол и возраст, и удобно определить их только один раз. Вы можете также задать одну и ту же характеристику отдельно в разных классах, поскольку каждое определение этой характеристики будет находиться в отдельном пространстве имен. Например, приветствие студента может быть в форме "Yo, I'm [firstName]" (например Yo, I'm Sam), в то время как учитель может использовать что-то более формальное, такое как "Hello, my name is [Prefix] [lastName], and I teach [Subject]." (например Hello, My name is Mr Griffiths, and I teach Chemistry).

- -
-

Примечание: Если вам интересно, существует специальный термин Polymorphism (Полиморфизм) - это забавное слово, обозначающее реализацию той же функциональности для нескольких типов объекта. 

-
- -

Теперь вы можете создавать экземпляры объекта из дочерних классов. Например:

- -

- -

Далее мы рассмотрим, как ООП теорию можно применить на практике в JavaScript.

- -

Конструкторы и экземпляры объектов

- -

JavaScript использует специальные функции, называемые функциями конструктора (constructor functions) для определения объектов и их свойств. Они полезны, потому что вы часто будете сталкиваться с ситуациями, в которых не известно, сколько объектов вы будете создавать; конструкторы позволяют создать столько объектов, сколько нужно эффективным способом, прикреплением данных и функций для объектов по мере необходимости.

- -

Рассмотрим создание классов через конструкторы и создание экземпляров объектов из них в JavaScript. Прежде всего, мы хотели бы, чтобы вы создали новую локальную копию файла oojs.html, который мы видели в нашей первой статье «Объекты».

- -

Простой пример

- -
    -
  1. Давайте рассмотрим как можно определить человека с нормальной функцией. Добавьте эту функцию в элемент script: - -
    function createNewPerson(name) {
    -  const obj = {};
    -  obj.name = name;
    -  obj.greeting = function() {
    -    alert('Hi! I\'m ' + this.name + '.');
    -  };
    -  return obj;
    -}
    -
  2. -
  3. Теперь вы можете создать нового человека, вызвав эту функцию - попробуйте следующие строки в консоли JavaScript браузера: -
    const salva = createNewPerson('Salva');
    -salva.name;
    -salva.greeting();
    - Это работает достаточно хорошо, но код излишне многословен; если мы знаем, что хотим создать объект, зачем нам явно создавать новый пустой объект и возвращать его? К счастью, JavaScript предоставляет нам удобный способ в виде функций-конструкторов - давайте сделаем это сейчас!
  4. -
  5. Замените предыдущую функцию следующей: -
    function Person(name) {
    -  this.name = name;
    -  this.greeting = function() {
    -    alert('Hi! I\'m ' + this.name + '.');
    -  };
    -}
    -
  6. -
- -

Функция-конструктор - это JavaScript версия класса. Вы заметите, что в нем есть все признаки, которые вы ожидаете от функции, хотя он ничего не возвращает и явно не создает объект - он в основном просто определяет свойства и методы. Вы также увидите, что ключевое слово this также используется здесь, - это в основном говорит о том, что всякий раз, когда создается один из этих экземпляров объектов, свойство имени объекта будет равно значению name, переданному вызову конструктора, и метод greeting() будет использовать значение имени, переданное также вызову конструктора.

- -
-

Примечание: Имя функции конструктора обычно начинается с заглавной буквы - это соглашение используется для упрощения распознавания функций конструктора в коде.

-
- -

Итак, как мы вызываем конструктор для создания некоторых объектов?

- -
    -
  1. Добавьте следующие строки под предыдущим добавлением кода: -
    let person1 = new Person('Bob');
    -let person2 = new Person('Sarah');
    -
  2. -
  3. Сохраните код и перезагрузите его в браузере и попробуйте ввести следующие строки в консоль JS: -
    person1.name
    -person1.greeting()
    -person2.name
    -person2.greeting()
    -
  4. -
- -

Круто! Теперь, как вы видите, у нас есть два новых объекта на странице, каждый из которых хранится в отдельном пространстве имен - при доступе к их свойствам и методам вы должны начинать вызовы с person1 или person2; функциональность, содержащаяся внутри, аккуратно упакована, поэтому она не будет конфликтовать с другими функциями. Тем не менее, у них есть одно и то же свойство name и greeting(). Обратите внимание, что они используют свое собственное значение name, которое было присвоено им, когда они были созданы; это одна из причин, почему очень важно использовать this, таким образом они будут использовать свои собственные значения, а не какие-либо другие.

- -

Давайте снова посмотрим на вызовы конструктора:

- -
let person1 = new Person('Bob');
-let person2 = new Person('Sarah');
- -

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

- -
function Person(name) {
-  this.name = name;
-  this.greeting = function() {
-    alert('Hi! I\'m ' + this.name + '.');
-  };
-}
- -

После создания новых объектов переменные person1 и person2 содержат следующие объекты:

- -
{
-  name: 'Bob',
-  greeting: function() {
-    alert('Hi! I\'m ' + this.name + '.');
-  }
-}
-
-{
-  name: 'Sarah',
-  greeting: function() {
-    alert('Hi! I\'m ' + this.name + '.');
-  }
-}
- -

Обратите внимание, что когда мы вызываем нашу функцию-конструктор, мы определяем greeting() каждый раз, что не является идеальным. Чтобы этого избежать, вместо этого мы можем определить функции на прототипе, о которых мы поговорим позже.

- -

Создавая наш готовый конструктор

- -

Пример, рассмотренный выше, был лишь наглядным примером, чтобы вы поняли суть. Теперь, давайте создадим нашу конечную функцию-конструктор Person().

- -
    -
  1. Замените весь предыдущий код новой функцией конструктора - это, в принципе, тот же самое что и в наглядном примере, но несколько сложнее: -
    function Person(first, last, age, gender, interests) {
    -  this.name = {
    -    first : first,
    -    last: last
    -  };
    -  this.age = age;
    -  this.gender = gender;
    -  this.interests = interests;
    -  this.bio = function() {
    -    alert(this.name.first + ' ' + this.name.last + ' is ' + this.age + ' years old. He likes ' + this.interests[0] + ' and ' + this.interests[1] + '.');
    -  };
    -  this.greeting = function() {
    -    alert('Hi! I\'m ' + this.name.first + '.');
    -  };
    -};
    -
  2. -
  3. Теперь добавьте следующую строку ниже, чтобы создать экземпляр объекта из него: -
    let person1 = new Person('Bob', 'Smith', 32, 'male', ['music', 'skiing']);
    -
  4. -
- -

Как вы могли заметить, вы можете получить доступ к свойствам и методам, как это было ранее, - попробуйте использовать их в консоли JS:

- -
person1['age']
-person1.interests[1]
-person1.bio()
-// etc.
- -
Примечание: Если у Вас возникли проблемы с работой кода, попробуйте сравнить его с нашей версией - см. oojs-class-finished.html (также смотрите, как он работает в прямом эфире).
- -

Дальнейшие упражнения

- -

Для начала, попробуйте добавить еще пару собственных строк создания объекта и попробуйте получить и установить элементы полученных экземпляров объектов.

- -

Кроме того, есть несколько проблем с нашим методом bio() - вывод всегда включает местоимение «He» ("Он" в пер. с англ.), даже если ваш человек является женщиной или какой-либо другой предпочтительной гендерной классификацией. И bio будет включать только два интереса, даже если в массиве interests указано больше. Можете ли Вы решить, как исправить это в определении класса (конструкторе)? Вы можете поместить любой код, который вам нравится внутри конструктора (вам, вероятно, понадобятся несколько условий и цикл). Подумайте о том, как предложения должны быть структурированы по-разному в зависимости от пола и в зависимости от того, имеет ли число перечисленных интересов 1, 2 или более 2.

- -
-

Примечание: Если у Вас возникли трудности с решением задачи, мы предоставили ответ в нашем репозитории GitHub (см. это в действии) — но сначала попробуйте написать сами!

-
- -

Другие способы создания экземпляров объектов

- -

До сих пор мы видели два разных способа создания экземпляра объекта - объявление объектного литерала и использование функции конструктора (см. выше).

- -

Это имеет смысл, но есть и другие способы - мы бы хотели ознакомить Вас с ними на случай, если Вы встретите их в своих путешествиях по Сети.

- -

Конструктор Object ()

- -

Прежде всего, вы можете использовать конструктор Object() для создания нового объекта. Да, даже общие объекты имеют конструктор, который генерирует пустой объект.

- -
    -
  1. Попробуйте ввести это в консоль JavaScript вашего браузера: -
    let person1 = new Object();
    -
  2. -
  3. Это сохраняет ссылку на пустой объект в переменную person1. Затем вы можете добавить свойства и методы к этому объекту с использованием точечной или скобочной нотации по желанию; попробуйте эти примеры в консоли: -
    person1.name = 'Chris';
    -person1['age'] = 38;
    -person1.greeting = function() {
    -  alert('Hi! I\'m ' + this.name + '.');
    -};
    -
  4. -
  5. Вы также можете передать литерал объекта конструктору Object() в качестве параметра, чтобы заполнить его свойствами / методами. Попробуйте это в консоли JS: -
    let person1 = new Object({
    -  name: 'Chris',
    -  age: 38,
    -  greeting: function() {
    -    alert('Hi! I\'m ' + this.name + '.');
    -  }
    -});
    -
  6. -
- -

Использование метода create()

- -

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

- -

Однако некоторые люди предпочитают создавать экземпляры объектов без предварительного создания конструкторов, особенно если они создают только несколько экземпляров объекта. JavaScript имеет встроенный метод create(), который позволяет вам это делать. С его помощью вы можете создать новый объект на основе любого существующего объекта.

- -
    -
  1. Закончив упражнение из предыдущего раздела, загруженное в браузер, попробуйте это в консоли JavaScript: -
    let person2 = Object.create(person1);
    -
  2. -
  3. Теперь попробуйте: -
    person2.name
    -person2.greeting()
    -
  4. -
- -

Вы увидите, что person2 был создан на основе person1 - он имеет те же свойства и метод, доступные для него.

- -

Одно ограничение метода create() заключается в том, что IE8 не поддерживает его. Поэтому конструкторы могут быть более эффективными, если вы хотите поддерживать старые браузеры.

- -

Подробнее мы рассмотрим особенности метода create() немного позже.

- -

Сводка

- -

В этой статье представлен упрощенный взгляд на объектно-ориентированную теорию — это еще не вся история, но она дает представление о том, с чем мы имеем дело. Кроме того, мы начали рассматривать различные способы создания экземпляров объектов.

- -

В следующей статье мы рассмотрим прототипы объектов JavaScript.

- -

{{PreviousMenuNext("Learn/JavaScript/Objects/Basics", "Learn/JavaScript/Objects/Object_prototypes", "Learn/JavaScript/Objects")}}

- -

В этом модуле

- - diff --git "a/files/ru/learn/javascript/\320\276\320\261\321\212\320\265\320\272\321\202\321\213/object_building_practice/index.html" "b/files/ru/learn/javascript/\320\276\320\261\321\212\320\265\320\272\321\202\321\213/object_building_practice/index.html" deleted file mode 100644 index b06b769ca4..0000000000 --- "a/files/ru/learn/javascript/\320\276\320\261\321\212\320\265\320\272\321\202\321\213/object_building_practice/index.html" +++ /dev/null @@ -1,302 +0,0 @@ ---- -title: Практика построения объектов -slug: Learn/JavaScript/Объекты/Object_building_practice -tags: - - Guide - - JavaScript -translation_of: Learn/JavaScript/Objects/Object_building_practice ---- -
{{LearnSidebar}}
- -
{{PreviousMenuNext("Learn/JavaScript/Objects/JSON", "Learn/JavaScript/Objects/Adding_bouncing_balls_features", "Learn/JavaScript/Objects")}}
- -

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

- - - - - - - - - - - - -
Необходимые знания:Базовая компьютерная грамотность, базовые знания HTML и CSS, знакомство с основами JavaScript (see First steps and Building blocks) и основами OOJS (см. Introduction to objects).
Цель:Получение некоторой практики в использовании объектов и объектно-ориентированных методов в реальном мире.
- -

Давайте подбросим несколько мячей

- -

В этой статье мы напишем классическую демонстрацию «прыгающих шаров», чтобы показать вам, насколько полезными могут быть объекты в JavaScript. Наши маленькие шары будут подпрыгивать на экране и менять цвет, когда они касаются друг друга. Готовый пример будет выглядеть примерно так:

- -

- -
    -
- -

В этом примере будет использоваться Canvas API для рисования шаров на экране и API requestAnimationFrame для анимации всего экрана - вам не нужно иметь никаких предыдущих знаний об этих API, и мы надеемся, что к тому моменту, когда вы закончите эту статью, вам будет интересно изучить их больше. По пути мы воспользуемся некоторыми изящными объектами и покажем вам пару хороших приемов, таких как отскоки шаров от стен и проверка того, попали ли они друг в друга (иначе известный как обнаружение столкновения).

- -

Начало работы

- -

Для начала создайте локальные копии наших файловindex.html, style.css и main.js. Они содержат следующее:

- -
    -
  1. Очень простой HTML-документ, содержащий элемент {{HTMLElement("h1")}}, элемент {{HTMLElement("canvas")}} для рисования наших шаров и элементы для применения нашего CSS и JavaScript в нашем HTML.
  2. -
  3. Некоторые очень простые стили, которые в основном служат для стилизации и позиционирования <h1>, и избавляются от любых полос прокрутки или отступы по краю страницы (так что это выглядит красиво и аккуратно).
  4. -
  5. Некоторые JavaScript, которые служат для настройки элемента <canvas> и предоставляют общую функцию, которую мы собираемся использовать.
  6. -
- -

Первая часть скрипта выглядит так:

- -
var canvas = document.querySelector('canvas');
-
-var ctx = canvas.getContext('2d');
-
-var width = canvas.width = window.innerWidth;
-var height = canvas.height = window.innerHeight;
- -

Этот скрипт получает ссылку на элемент <canvas>, а затем вызывает метод getContext(), чтобы дать нам контекст, по которому мы можем начать рисовать. Результирующая переменная (ctx) - это объект, который непосредственно представляет область рисования холста и позволяет рисовать на ней 2D-фигуры.

- -

Затем мы устанавливаем переменные, называемые width и height, а также ширину и высоту элемента canvas (представленные свойствами canvas.width и canvas.height), чтобы равняться ширине и высоте окна просмотра браузера (область, на которой отображается веб-страница - это можно получить из свойств {{domxref("Window.innerWidth")}} и {{domxref("Window.innerHeight")}}).

- -

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

- -

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

- -
function random(min, max) {
-  var num = Math.floor(Math.random() * (max - min + 1)) + min;
-  return num;
-}
- -

Эта функция принимает два числа в качестве аргументов и возвращает случайное число в диапазоне между ними.

- -

Моделирование мяча в нашей программе

- -

В нашей программе будет много шаров, подпрыгивающих вокруг экрана. Поскольку эти шары будут вести себя одинаково, имеет смысл представлять их в виде объекта. Начнем с добавления следующего конструктора в конец нашего кода.

- -
function Ball(x, y, velX, velY, color, size) {
-  this.x = x;
-  this.y = y;
-  this.velX = velX;
-  this.velY = velY;
-  this.color = color;
-  this.size = size;
-}
- -

Здесь мы включаем некоторые параметры, которые определяют свойства, которым должен соответствовать каждый шар в нашей программе:

- - - -

Этим мы сортируем свойства, но что насчет методов? Мы хотим заставить эти шары на самом деле сделать что-то в нашей программе.

- -

Рисование шара

- -

Сначала добавьте следующий метод draw() к Ball()'s prototype:

- -
Ball.prototype.draw = function() {
-  ctx.beginPath();
-  ctx.fillStyle = this.color;
-  ctx.arc(this.x, this.y, this.size, 0, 2 * Math.PI);
-  ctx.fill();
-}
- -

Используя эту функцию, мы можем сказать нашему шару нарисовать себя на экране, вызвав ряд членов контекста двумерного холста, который мы определили ранее (ctx). Контекст похож на бумагу, и теперь мы хотим, чтобы наше перо рисовало что-то на нем:

- - - -

Теперь вы можете начать тестирование своего объекта..

- -
    -
  1. Сохраните код и загрузите HTML-файл в браузер.
  2. -
  3. Откройте консоль JavaScript браузера, а затем обновите страницу, чтобы размер холста изменился в соответствии с новой шириной и высотой окна просмотра браузера после открытия консоли.
  4. -
  5. Чтобы создать новый экземпляр шара, введите следующее: -
    var testBall = new Ball(50, 100, 4, 4, 'blue', 10);
    -
  6. -
  7. Попробуйте вызвать его свойства и методы: -
    testBall.x
    -testBall.size
    -testBall.color
    -testBall.draw()
    -
  8. -
  9. После введения последней строки, вы должны увидеть, как мяч нарисовался где-то на вашем холсте.
  10. -
- -

Обновление данных мяча

- -

Мы можем нарисовать мяч в нужном положении, но чтобы начать движение мяча, нам нужна функция обновления. Добавьте следующий код внизу вашего файла JavaScript, чтобы добавить метод update() к Ball()'s prototype:

- -
Ball.prototype.update = function() {
-  if ((this.x + this.size) >= width) {
-    this.velX = -(this.velX);
-  }
-
-  if ((this.x - this.size) <= 0) {
-    this.velX = -(this.velX);
-  }
-
-  if ((this.y + this.size) >= height) {
-    this.velY = -(this.velY);
-  }
-
-  if ((this.y - this.size) <= 0) {
-    this.velY = -(this.velY);
-  }
-
-  this.x += this.velX;
-  this.y += this.velY;
-}
- -

Первые четыре части функции проверяют, достиг ли шар края холста. Если это так, мы изменяем полярность соответствующей скорости, чтобы заставить шар двигаться в противоположном направлении. Так, например, если мяч двигался вверх (положительный velY), то вертикальная скорость изменяется так, что он начинает двигаться вниз (отрицательная величина velY).

- -

В этих четырех случаях мы:

- - - -

В каждом случае мы включаем size шарика в расчет, потому что координаты x/y находятся в центре шара, но мы хотим, чтобы край шара отскакивал от периметра - мы не хотим, чтобы мяч на половину заходил за границу экрана прежде чем он начнет возвращаться назад.

- -

Последние две строки добавляют значение velX к координате x, а значение velY - координате y - шар фактически перемещается при каждом вызове этого метода.

- -

На сейчас этого достаточно, давайте продолжим анимацию!

- -

Анимация мяча

- -

Теперь давайте приступать к веселью! Сейчас мы начнем добавлять шары к холсту и анимировать их.

- -
    -
  1. Во-первых, нам нужно где-то хранить все наши шары. Следующий массив выполнит это задание - добавьте его внизу кода: -
    var balls = [];
    - -

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

    -
  2. -
  3. Добавьте ниже эту часть кода: -
    function loop() {
    -  ctx.fillStyle = 'rgba(0, 0, 0, 0.25)';
    -  ctx.fillRect(0, 0, width, height);
    -
    -  while (balls.length < 25) {
    -    var ball = new Ball(
    -      random(0,width),
    -      random(0,height),
    -      random(-7,7),
    -      random(-7,7),
    -      'rgb(' + random(0,255) + ',' + random(0,255) + ',' + random(0,255) +')',
    -      random(10,20)
    -    );
    -    balls.push(ball);
    -  }
    -
    -  for (var i = 0; i < balls.length; i++) {
    -    balls[i].draw();
    -    balls[i].update();
    -  }
    -
    -  requestAnimationFrame(loop);
    -}
    - -

    Наша функция loop() выполняет следующие действия:

    - -
      -
    • Устанавливает цвет заливки на полупрозрачный черный, затем рисует прямоугольник цвета по всей ширине и высоте холста, используя fillRect() (четыре параметра обеспечивают начальную координату, а ширину и высоту для рисованного прямоугольника ). Это позволяет скрыть рисунок предыдущего кадра до того, как будет нарисован следующий. Если вы этого не сделаете, вы увидите, как длинные змеи пробираются вокруг холста, а не шары! Цвет заливки устанавливается на полупрозрачный, rgba(0,0,0,0,25), чтобы позволить нескольким кадрам слегка просвечивать, создавая маленькие тропы за шариками по мере их перемещения. Если вы изменили 0.25 на 1, вы больше не увидите их. Попробуйте изменить это число, чтобы увидеть эффект, который он имеет.
    • -
    • Создает новый экземпляр нашего Ball(), используя случайные значения, сгенерированные с помощью нашей функции random(), затем push() на конец нашего массива шаров, но только в том случае, когда количество шаров в массиве меньше 25. Итак когда у нас есть 25 мячей на экране, больше не появляется шаров. Вы можете попробовать изменить число в balls.length < 25, чтобы получить больше или меньше шаров на экране. В зависимости от того, сколько вычислительной мощности имеет ваш компьютер / браузер, если указать несколько тысячь шаров, это может довольно существенно повлиять на производительность анимации. 
    • -
    • перебирает все шары в массиве balls и запускает каждую функцию draw() и update() для рисования каждого из них на экране, а затем выполняет необходимые обновления по положению и скорости во времени для следующего кадра.
    • -
    • Выполняет функцию снова с помощью метода requestAnimationFrame() - когда этот метод постоянно запускается и передается одно и то же имя функции, он будет запускать эту функцию определенное количество раз в секунду для создания плавной анимации. Обычно это делается рекурсивно - это означает, что функция вызывает себя каждый раз, когда она запускается, поэтому она будет работать снова и снова.
    • -
    -
  4. -
  5. И последнее, но не менее важное: добавьте следующую строку в конец вашего кода - нам нужно вызвать функцию один раз, чтобы начать анимацию. -
    loop();
    -
  6. -
- -

Вот и все для основы - попробуйте сохранить и освежить, чтобы проверить свои прыгающие шары!

- -

Добавление обнаружения столкновений

- -

Теперь немного поиграем, давайте добавим в нашу программу обнаружение конфликтов, поэтому наши мячи узнают, когда они ударят по другому шару.

- -
    -
  1. Прежде всего, добавьте следующее определение метода ниже, где вы определили метод update() (т.е. блок Ball.prototype.update). - -
    Ball.prototype.collisionDetect = function() {
    -  for (var j = 0; j < balls.length; j++) {
    -    if (!(this === balls[j])) {
    -      var dx = this.x - balls[j].x;
    -      var dy = this.y - balls[j].y;
    -      var distance = Math.sqrt(dx * dx + dy * dy);
    -
    -      if (distance < this.size + balls[j].size) {
    -        balls[j].color = this.color = 'rgb(' + random(0, 255) + ',' + random(0, 255) + ',' + random(0, 255) +')';
    -      }
    -    }
    -  }
    -}
    - -

    Этот метод немного сложный, поэтому не беспокойтесь, если вы не понимаете, как именно это работает. Ниже приводится объяснение:

    - -
      -
    • Для каждого шара нам нужно проверить каждый другой шар, чтобы увидеть, столкнулся ли он с текущим мячом. Чтобы сделать это, мы открываем еще один цикл for  через все шары в массиве balls[].
    • -
    • Сразу же в нашем цикле for мы используем оператор if, чтобы проверить, проходит ли текущий шарик, тот же самый шар, что и тот, который мы сейчас проверяем. Мы не хотим проверять, что мяч столкнулся с самим собой! Для этого мы проверяем, является ли текущий мяч (т.е. мяч, метод которого вызван методом collisionDetect) такой же, как шар петли (т.е. шар, на который ссылается текущая итерация цикла for в collisionDetect метод). Затем мы используем ! чтобы отменить проверку, чтобы код внутри оператора if выполнялся только в том случае, если они не совпадают.
    • -
    • Затем мы используем общий алгоритм для проверки столкновения двух окружностей. Мы в основном проверяем, перекрывается ли какая-либо из областей круга. Это объясняется далее 2D collision detection.
    • -
    • Если обнаружено столкновение, выполняется код внутри внутреннего оператора if. В этом случае мы просто устанавливаем свойство color обоих кругов на новый случайный цвет. Мы могли бы сделать что-то гораздо более сложное, например, заставить шары отскакивать друг от друга реалистично, но это было бы гораздо сложнее реализовать. Для такого моделирования физики разработчики склонны использовать игры или библиотеку физики, такие как PhysicsJS, matter.js, Phaser и т.д.
    • -
    -
  2. -
  3. Вы также должны вызвать этот метод в каждом кадре анимации. Добавьте следующий код после строки balls[i].update(); -
    balls[i].collisionDetect();
    -
  4. -
  5. Сохраните и обновите демо снова, и вы увидите, как ваши мячи меняют цвет, когда они сталкиваются!
  6. -
- -
-

Примечание. Если вам не удается заставить этот пример работать, попробуйте сравнить код JavaScript с нашей готовой версией (также смотрите, как он работает в прямом эфире).

-
- -

Резюме

- -

Мы надеемся, что вам понравилось писать собственный пример случайных прыгающих шаров в реальном мире, используя различные объектные и объектно-ориентированные методы из всего модуля! Это должно было дать вам некоторую полезную практику использования объектов и хорошего контекста реального мира.

- -

Вот и все для предметных статей - все, что осталось сейчас, - это проверить свои навыки в оценке объекта.

- -

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

- - - -

{{PreviousMenuNext("Learn/JavaScript/Objects/JSON", "Learn/JavaScript/Objects/Adding_bouncing_balls_features", "Learn/JavaScript/Objects")}}

- -

В этом модуле

- - diff --git "a/files/ru/learn/javascript/\320\276\320\261\321\212\320\265\320\272\321\202\321\213/object_prototypes/index.html" "b/files/ru/learn/javascript/\320\276\320\261\321\212\320\265\320\272\321\202\321\213/object_prototypes/index.html" deleted file mode 100644 index 0a76580d9c..0000000000 --- "a/files/ru/learn/javascript/\320\276\320\261\321\212\320\265\320\272\321\202\321\213/object_prototypes/index.html" +++ /dev/null @@ -1,285 +0,0 @@ ---- -title: Прототипы объектов -slug: Learn/JavaScript/Объекты/Object_prototypes -tags: - - JavaScript - - create() - - Конструктор - - Начинающий - - ООП - - Обучение - - Обьект - - Статья - - прототип -translation_of: Learn/JavaScript/Objects/Object_prototypes ---- -
{{LearnSidebar}}
- -
{{PreviousMenuNext("Learn/JavaScript/Objects/Object-oriented_JS", "Learn/JavaScript/Objects/Inheritance", "Learn/JavaScript/Objects")}}
- -
Прототипы - это механизм, с помощью которого объекты JavaScript наследуют свойства друг от друга. В этой статье мы объясним, как работают цепочки прототипов, и рассмотрим, как свойство prototype можно использовать для добавления методов к существующим конструкторам.
- -
- - - - - - - - - - - - -
Необходимые знания: -

Базовая компьютерная грамотность, базовое понимание HTML и CSS, знакомство с основами JavaScript (см. Первые шаги и Строительные блоки) и основы OOJS (см. Введение в объекты).

-
Цель: -

Понять прототипы объектов JavaScript, как работают прототипные цепочки и как добавить новые методы в prototype свойство.

-
- -

Язык основанный на прототипах?

- -

JavaScript часто описывают как язык прототипного наследования — каждый объект, имеет объект-прототип, который выступает как шаблон, от которого объект наследует методы и свойства. Объект-прототип так же может иметь свой прототип и наследовать его свойства и методы и так далее. Это часто называется цепочкой прототипов и объясняет почему одним объектам доступны свойства и методы которые определены в других объектах.

- -

Точнее, свойства и методы определяются в свойстве prototype функции-конструктора объектов, а не в самих объектах.

- -

В JavaScript создается связь между экземпляром объекта и его прототипом (свойство __proto__, которое является производным от свойства prototype конструктора), а свойства и методы обнаруживаются при переходе по цепочке прототипов.

- -
-

Примечание: Важно понимать, что существует различие между прототипом объекта (который доступен через Object.getPrototypeOf(obj) или через устаревшее свойство __proto__) и свойством prototype в функциях-конструкторах. Первое свойство является свойством каждого экземпляра, а второе - свойством конструктора. То есть Object.getPrototypeOf(new Foobar()) относится к тому же объекту, что и Foobar.prototype.

-
- -

Давайте посмотрим на пример, чтобы стало понятнее.

- -

Понимание прототипа объектов

- -

Вернемся к примеру, когда мы закончили писать наш конструктор Person()- загрузите пример в свой браузер. Если у вас еще нет работы от последней статьи, используйте наш пример oojs-class-further-exercises.html (см. Также исходный код).

- -

В этом примере мы определили конструкторную функцию, например:

- -
function Person(first, last, age, gender, interests) {
-
-  // Определения методов и свойств
-  this.name = {
-    'first': first,
-    'last' : last
-  };
-  this.age = age;
-  this.gender = gender;
-  //...см. Введение в объекты для полного определения
-}
- -

Затем мы создаём экземпляр объекта следующим образом:

- -
var person1 = new Person('Bob', 'Smith', 32, 'male', ['music', 'skiing']);
- -

Если вы наберете «person1.» в вашей консоли JavaScript, вы должны увидеть, что браузер пытается автоматически заполнить это с именами участников, доступных на этом объекте:

- -

- -

В этом списке вы увидите элементы, определенные в конструкторе person 1 — Person() — name, age, gender, interests, bio, и greeting. Однако вы также увидите некоторые другие элементы — watch, valueOfи т. д. — они определены в объекте прототипа Person (), который является Object.

- -

- -

Итак, что произойдет, если вы вызываете метод в person1, который фактически определен в Object? Например:

- -
person1.valueOf()
- -

Этот метод — Object.valueOf()наследуется person1, потому что его конструктором является Person(), а прототипом Person() является Object(). valueOf() возвращает значение вызываемого объекта — попробуйте и убедитесь! В этом случае происходит следующее:

- - - -
-

Примечание: Мы хотим повторить, что методы и свойства не копируются из одного объекта в другой в цепочке прототипов - к ним обращаются, поднимаясь по цепочке, как описано выше.

-
- -
-

Примечание: Официально нет способа получить доступ к объекту прототипа объекта напрямую - «ссылки» между элементами в цепочке определены во внутреннем свойстве, называемом [[prototype]] в спецификации для языка JavaScript ( см. {{glossary("ECMAScript")}}). Однако у большинства современных браузеров есть свойство, доступное для них под названием __proto__ (это 2 подчеркивания с обеих сторон), который содержит объект-прототип объекта-конструктора. Например, попробуйте person1.__proto__ и person1.__proto__.__proto__, чтобы увидеть, как выглядит цепочка в коде!

- -

С ECMAScript 2015 вы можете косвенно обращаться к объекту прототипа объекта Object.getPrototypeOf (obj).

-
- -

Свойство prototype: Где определены унаследованные экземпляры

- -

Итак, где определены наследуемые свойства и методы? Если вы посмотрите на страницу со ссылкой Object, вы увидите в левой части большое количество свойств и методов - это намного больше, чем количество унаследованных членов, доступных для объекта person1. Некоторые из них унаследованы, а некоторые нет - почему это?

- -

Как упоминалось выше, наследованные свойства это те, что определены в свойстве prototype (вы можете называть это подпространством имен), то есть те, которые начинаются с Object.prototype., а не те, которые начинаются с простого Object. Значение свойства prototype - это объект, который в основном представляет собой контейнер для хранения свойств и методов, которые мы хотим наследовать объектами, расположенными дальше по цепочке прототипов.

- -

Таким образом Object.prototype.watch(), Object.prototype.valueOf() и т. д. доступны для любых типов объектов, которые наследуются от Object.prototype, включая новые экземпляры объектов, созданные из конструктора Person() .

- -

Object.is(), Object.keys() и другие члены, не определенные в контейнере prototype, не наследуются экземплярами объектов или типами объектов, которые наследуются от Object.prototype. Это методы / свойства, доступные только в конструкторе Object().

- -
-

Примечание: Это кажется странным - как у вас есть метод, определенный для конструктора, который сам по себе является функцией? Ну, функция также является типом объекта - см. Ссылку на конструктор Function(), если вы нам не верите.

-
- -
    -
  1. Вы можете проверить существующие свойства прототипа для себя - вернитесь к нашему предыдущему примеру и попробуйте ввести следующее в консоль JavaScript: -
    Person.prototype
    -
  2. -
  3. Результат покажет вам не много, ведь мы ничего не определили в прототипе нашего конструктора! По умолчанию prototype конструктора всегда пуст. Теперь попробуйте следующее: -
    Object.prototype
    -
  4. -
- -

Вы увидите большое количество методов, определенных для свойства prototype Object'а , которые затем доступны для объектов, которые наследуются от Object, как показано выше.

- -

Вы увидите другие примеры наследования цепочек прототипов по всему JavaScript - попробуйте найти методы и свойства, определенные на прототипе глобальных объектов String, Date, Number и Array, например. Все они имеют несколько элементов, определенных на их прототипе, поэтому, например, когда вы создаете строку, вот так:

- -
var myString = 'This is my string.';
- -

В myString сразу есть множество полезных методов, таких как split(), indexOf(), replace() и т. д.

- -
-

Важно: Свойство prototype является одной из наиболее противоречивых названий частей JavaScript - вы можете подумать, что this указывает на объект прототипа текущего объекта, но это не так (это внутренний объект, к которому можно получить доступ __proto__, помните ?). prototype вместо этого - свойство, содержащее объект, на котором вы определяете членов, которые вы хотите наследовать.

-
- -

Снова create()

- -

Ранее мы показали, как метод Object.create() может использоваться для создания нового экземпляра объекта.

- -
    -
  1. Например, попробуйте это в консоли JavaScript предыдущего примера: -
    var person2 = Object.create(person1);
    -
  2. -
  3. На самом деле create()создает новый объект из указанного объекта-прототипа. Здесь person2 создается с помощью person1 в качестве объекта-прототипа. Это можно проверить, введя в консоли следующее: -
    person2.__proto__
    -
  4. -
- -

Это вернет объект person1.

- -

Свойство constructor

- -

Каждая функция-конструктор имеет свойство prototype, значением которого является объект, содержащий свойство constructor. Это свойство constructor указывает на исходную функцию-конструктор. Как вы увидите в следующем разделе, свойства, определенные в свойстве Person.prototype (или в общем случае в качестве свойства прототипа функции конструктора, который является объектом, как указано в предыдущем разделе) становятся доступными для всех объектов экземпляра, созданных с помощью конструктор Person(). Следовательно, свойство конструктора также доступно для объектов person1 и person2.

- -
    -
  1. Например, попробуйте эти команды в консоли: -
    person1.constructor
    -person2.constructor
    - -

    Они должны возвращать конструктор Person(), поскольку он содержит исходное определение этих экземпляров.

    - -

    Хитрый трюк заключается в том, что вы можете поместить круглые скобки в конец свойства constructor (содержащие любые требуемые параметры) для создания другого экземпляра объекта из этого конструктора. Конструктор - это функция в конце концов, поэтому ее можно вызвать с помощью круглых скобок; вам просто нужно включить ключевое слово new, чтобы указать, что вы хотите использовать эту функцию в качестве конструктора.

    -
  2. -
  3. Попробуйте это в консоли: -
    var person3 = new person1.constructor('Karen', 'Stephenson', 26, 'female', ['playing drums', 'mountain climbing']);
    -
  4. -
  5. Теперь попробуйте получить доступ к функциям вашего нового объекта, например: -
    person3.name.first
    -person3.age
    -person3.bio()
    -
  6. -
- -

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

- -

Свойство constructor имеет другие применения. Например, если у вас есть экземпляр объекта и вы хотите вернуть имя конструктора этого экземпляра, вы можете использовать следующее:

- -
instanceName.constructor.name
- -

Например, попробуйте это:

- -
person1.constructor.name
-
- -
-

Примечание: Значение constructor.name может измениться (из-за прототипического наследования, привязки, препроцессоров, транспилеров и т. д.), Поэтому для более сложных примеров вы захотите использовать оператор instanceof.

-
- -
    -
- -

Изменение прототипов

- -

Давайте рассмотрим пример изменения свойства prototype функции-конструктора — методы, добавленные в прототип, затем доступны для всех экземпляров объектов, созданных из конструктора.

- -
    -
  1. Вернитесь к нашему примеру oojs-class-further-exercises.html и создайте локальную копию исходного кода. Ниже существующего JavaScript добавьте следующий код, который добавляет новый метод в свойство prototype конструктора: - -
    Person.prototype.farewell = function() {
    -  alert(this.name.first + ' has left the building. Bye for now!');
    -};
    -
  2. -
  3. Сохраните код и загрузите страницу в браузере и попробуйте ввести следующее в текстовый ввод: -
    person1.farewell();
    -
  4. -
- -

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

- -

Подумайте об этом на мгновение. В нашем коде мы определяем конструктор, затем мы создаем экземпляр объекта из конструктора, затем добавляем новый метод к прототипу конструктора:

- -
function Person(first, last, age, gender, interests) {
-
-  // определения свойств и методов
-
-}
-
-var person1 = new Person('Tammi', 'Smith', 32, 'neutral', ['music', 'skiing', 'kickboxing']);
-
-Person.prototype.farewell = function() {
-  alert(this.name.first + ' has left the building. Bye for now!');
-};
- -

Но метод farewell() по-прежнему доступен в экземпляре объекта person1 - его элементы были автоматически обновлены, чтобы включить недавно определенный метод farewell().

- -
-

Примечание: Если у вас возникли проблемы с получением этого примера для работы, посмотрите на наш пример oojs-class-prototype.html (см. также это running live).

-
- -

Вы редко увидите свойства, определенные в свойстве prototype, потому что они не очень гибки при таком определении. Например, вы можете добавить свойство следующим образом:

- -
Person.prototype.fullName = 'Bob Smith';
- -

Это не очень гибко, так как человека нельзя назвать так. Было бы намного лучше сделать это, создав fullName из name.first и name.last:

- -
Person.prototype.fullName = this.name.first + ' ' + this.name.last;
- -

Однако это не работает, поскольку в этом случае this будет ссылаться на глобальную область, а не на область функции. Вызов этого свойства вернет undefined undefined. Это отлично работало с методом, который мы определили ранее в прототипе, потому что он находится внутри области функций, которая будет успешно перенесена в область экземпляра объекта. Таким образом, вы можете определить постоянные свойства прототипа (т. е. те, которые никогда не нуждаются в изменении), но обычно лучше определять свойства внутри конструктора.

- -

Фактически, довольно распространенный шаблон для большего количества определений объектов - это определение свойств внутри конструктора и методов в прототипе. Это упрощает чтение кода, поскольку конструктор содержит только определения свойств, а методы разделены на отдельные блоки. Например:

- -
// Определение конструктора и его свойств
-
-function Test(a, b, c, d) {
-  // определение свойств...
-}
-
-// Определение первого метода
-
-Test.prototype.x = function() { ... };
-
-// Определение второго метода
-
-Test.prototype.y = function() { ... };
-
-//...и так далее
- -

Этот образец можно увидеть в действии в примере приложения плана школы Петра Залевы.

- -

Резюме

- -

В этой статье рассмотрены прототипы объектов JavaScript (в том числе и то, как прототип цепочки объектов позволяет объектам наследовать функции друг от друга), свойство прототипа и как его можно использовать для добавления методов к конструкторам и другие связанные с этой статьёй темы.

- -

В следующей статье мы рассмотрим то, как вы можете реализовать наследование функциональности между двумя собственными настраиваемыми объектами.

- -

{{PreviousMenuNext("Learn/JavaScript/Objects/Object-oriented_JS", "Learn/JavaScript/Objects/Inheritance", "Learn/JavaScript/Objects")}}

- - - -

В этом модуле

- - diff --git "a/files/ru/learn/javascript/\320\276\320\261\321\212\320\265\320\272\321\202\321\213/\320\276\321\201\320\275\320\276\320\262\321\213/index.html" "b/files/ru/learn/javascript/\320\276\320\261\321\212\320\265\320\272\321\202\321\213/\320\276\321\201\320\275\320\276\320\262\321\213/index.html" deleted file mode 100644 index a4e7cc0071..0000000000 --- "a/files/ru/learn/javascript/\320\276\320\261\321\212\320\265\320\272\321\202\321\213/\320\276\321\201\320\275\320\276\320\262\321\213/index.html" +++ /dev/null @@ -1,257 +0,0 @@ ---- -title: Основы объектов в JavaScript -slug: Learn/JavaScript/Объекты/Основы -tags: - - JavaScript - - ООП -translation_of: Learn/JavaScript/Objects/Basics ---- -
{{LearnSidebar}}
- -
{{NextMenu("Learn/JavaScript/Objects/Object-oriented_JS", "Learn/JavaScript/Objects")}}
- -

В этой статье мы рассмотрим объекты в JavaScript. Мы будем разбирать основы синтаксиса объектов JavaScript и заново изучим некоторый функционал JavaScript, который мы уже исследовали ранее на курсе, подтвердив тот факт, что большая часть функционала, с которым мы уже столкнулись, в действительности является объектами.

- - - - - - - - - - - - -
Необходимые знания:Элементарная компьютерная грамотность, базовое понимание HTML и CSS, знакомство с основами JavaScript (см. Первые шаги и Структурные элементы).
Цель:Понимать основу теории перед началом объектно-ориентированного программирования, как это связано с JavaScript ("большинство сущностей являются объектами"), и как начать работу с объектами JavaScript.
- -

Основы объектов

- -

Объект — это совокупность связанных данных и/или функциональных возможностей. Обычно состоят из нескольких переменных и функций, которые называются свойства и методы, если они находятся внутри объектов. Разберём пример, чтобы показать, как они выглядят.

- -

Чтобы начать, скопируйте себе oojs.html файл. В нём содержится очень мало: {{HTMLElement("script")}} элемент для написания в нём исходного кода. Мы будем использовать это как основу для изучения основ синтаксиса объектов. Во время работы с этим примером у вас должна быть открытая консоль JavaScript инструментов разработчика, готовая к вводу некоторых команд.

- -

Как и во многих случаях в JavaScript, создание объекта часто начинается с определения и инициализации переменной. Попробуйте ввести следующий код JavaScript в ваш файл, а затем сохраните файл и обновите страницу браузера:

- -
const person = {};
- -

Если Вы введёте person в текстовое JS консоль и нажмёте клавишу Enter, должен получиться следующий результат:

- -
Object { }
- -

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

- -
const person = {
-  name: ['Bob', 'Smith'],
-  age: 32,
-  gender: 'male',
-  interests: ['music', 'skiing'],
-  bio: function() {
-    alert(this.name[0] + ' ' + this.name[1] + ' is ' + this.age + ' years old. He likes ' + this.interests[0] + ' and ' + this.interests[1] + '.');
-  },
-  greeting: function() {
-    alert('Hi! I\'m ' + this.name[0] + '.');
-  }
-};
-
- -

После сохранения и обновления, попробуйте ввести что-нибудь следующее в консоль JavaScript браузера:

- -
person.name
-person.name[0]
-person.age
-person.interests[1]
-person.bio()
-person.greeting()
- -

Теперь внутри объекта есть некоторые данные и функционал, и теперь можно получить доступ к ним с помощью некоторого лёгкого и простого синтаксиса!

- -
-

Примечание: Если у вас возникли проблемы с применением файла в работе, попробуйте сравнить ваш код с нашей версией — см. oojs-finished.html (также see it running live). Одна из распространенных ошибок, когда Вы начинаете с объектами ставить запятую в конце последнего члена — это приводит к ошибке.

-
- -

Итак что здесь происходит? Объект состоит из нескольких элементов, каждый из которых имеет своё название (пример name и age выше), и значение (пример ['Bob', 'Smith'] и 32). Каждая пара название/значение должны быть разделены запятой, а название и значение в каждом случае разделяются двоеточием. Синтаксис всегда следует этому образцу:

- -
const objectName = {
-  member1Name: member1Value,
-  member2Name: member2Value,
-  member3Name: member3Value
-};
- -

Значение члена объекта может быть чем угодно — в нашем объекте person есть строка, число, два массива, и две функции. Первые четыре элемента это элементы данных, относящиеся к свойствам объекта. Последние два элемента являются функциями, которые позволяют объекту что-то сделать с элементами данных, и называются методами объекта.

- -

Такие объекты называются литералами объекта (object literal) — мы буквально вписали все содержимое объекта для его создания. Этот способ сильно отличается от объектов реализованных классами, которые мы рассмотрим позже.

- -

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

- -

Точечная запись (Dot notation)

- -

Выше Вы получили доступ к свойствам и методам используя точечную запись (dot notation). Имя объекта (person) действует как пространство имен (namespace) — оно должно быть введено первым, для того чтобы получить доступ ко всему что заключено (encapsulated) внутри объекта. Далее Вы пишете точку, затем элемент, к которому хотите получить доступ — это может быть имя простого свойства, элемент массива, или вызов одного из методов объекта, например:

- -
person.age
-person.interests[1]
-person.bio()
- -

Внутренние пространства имен (Sub-namespaces)

- -

Можно даже сделать значением элемента объекта другой объект. Например, попробуйте изменить значение свойства name с такого

- -
name: ['Bob', 'Smith'],
- -

на такое

- -
name : {
-  first: 'Bob',
-  last: 'Smith'
-},
- -

Здесь мы фактически создаем внутреннее пространство имен (sub-namespace). Это звучит сложно, но на самом деле это не так — для доступа к этим элементам Вам нужно сделать один дополнительный шаг с еще одной точкой. Попробуйте в консоли браузера следующее: 

- -
person.name.first
-person.name.last
- -

Важно: На этом этапе вам также нужно будет пересмотреть код метода и изменить все экземпляры с

- -
name[0]
-name[1]
- -

на

- -
name.first
-name.last
- -

Иначе ваши методы больше не будут работать.

- -

Скобочная запись (Bracket notation)

- -

Существует другой способ получить свойства объекта — использовать скобочную запись (bracket notation). Вместо написания этого кода:

- -
person.age
-person.name.first
- -

Вы можете использовать следующий

- -
person['age']
-person['name']['first']
- -

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

- -

Запись элементов в объект

- -

До сих пор мы рассмастривали только возврат (или получение) элементов объекта — Вы так же можете установить (обновить) значение элемента объекта просто объявив элемент, который Вы хотите установить (используя точечную или скобочную запись), например:

- -
person.age = 45;
-person['name']['last'] = 'Cratchit';
- -

Попробуйте ввести эти строки, а затем снова верните элементы, чтобы увидеть, как они изменились

- -
person.age
-person['name']['last']
- -

Вы можете не просто обновлять и устанавливать значения свойств и методов объекта, а так же устанавливать совершенно новые элементы. Попробуйте их в консоли JS:

- -
person['eyes'] = 'hazel';
-person.farewell = function() { alert("Bye everybody!"); }
- -

Теперь Вы можете проверить ваши новые элементы:

- -
person['eyes']
-person.farewell()
- -

Одним из полезных аспектов скобочной записи является то, что с ее помощью можно динамически задавать не только значения элементов, но и их имена. Предположим, что мы хотим, чтобы пользователи могли хранить пользовательские типы данных, введя имя и значение элемента в два следующих поля? Мы могли бы получить эти значения следующим образом:

- -
let myDataName = nameInput.value;
-let myDataValue = nameValue.value;
- -

Затем мы можем добавить имя и значение этого нового элемента в объект person таким образом:

- -
person[myDataName] = myDataValue;
- -

Чтобы проверить это, попробуйте добавить следующие строки в свой код, после закрывающей скобки объекта person :

- -
let myDataName = 'height';
-let myDataValue = '1.75m';
-person[myDataName] = myDataValue;
- -

Теперь попробуйте сохранить и обновить, затем введите следующее в консоль браузера:

- -
person.height
- -

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

- -

Что такое "this"?

- -

Возможно, вы заметили что-то странное в наших методах. Посмотрите на этот пример:

- -
greeting: function() {
-  alert('Hi! I\'m ' + this.name.first + '.');
-}
- -

Вы, вероятно, задаетесь вопросом, что такое "this"? Ключевое слово this, ссылается на текущий объект, внутри которого пишется код — поэтому в нашем случае this равен объекту person. Но почему просто не написать person? Как Вы увидите в статье Object-oriented JavaScript for beginners (Объектно-ориентированный JavaScript для начинающих), когда мы начинаем создавать конструкторы и т.д., this очень полезен — он всегда будет гарантировать, что используется верное значение, когда контекст элемента изменяется (например, два разных экземпляра объекта person могут иметь разные имена, но захотят использовать свое собственное имя при приветствии.

- -

Давайте проиллюстритуем, что мы имеем в виду, с упрощенной парой объектов person :

- -
const person1 = {
-  name: 'Chris',
-  greeting: function() {
-    alert('Hi! I\'m ' + this.name + '.');
-  }
-}
-
-const person2 = {
-  name: 'Brian',
-  greeting: function() {
-    alert('Hi! I\'m ' + this.name + '.');
-  }
-}
- -

В этом случае, person1.greeting() выведет "Hi! I'm Chris.". person2.greeting(), с другой стороны, выведет "Hi! I'm Brian.", хотя код метода одинаковый в обоих случаях. Как мы сказали ранее, this равен объекту, внутри которого находится код — это не очень полезно, когда Вы пишите литералы объектов вручную, но оно действительно помогает, когда Вы генерируете объекты динамически (например используя конструкторы). Это станет понятнее чуть позже.

- -

Все это время вы использовали объекты

- -

Пока Вы проходили эти примеры, Вы вероятно заметили, что точечная запись, которую Вы использовали, выглядит очень знакомо. Это потому, что Вы использовали ее на протяжении всего курса! Каждый раз, когда мы работаем над примером, использующим встроенный API браузера или объект JavaScript, мы использовали объекты, потому что такие функции построены с использованием тех же структур объектов, которые мы здесь рассматривали, хотя и более сложные, чем наши собственные пользовательские примеры. 

- -

Поэтому, когда Вы использовали строковые методы, такие как:

- -
myString.split(',');
- -

Вы использовали метод доступный в экземпляре класса String. Каждый раз создавая строку в вашем коде, эта строка автоматически создается как экземпляр String, и поэтому имеет несколько общих методов/свойств, доступных на нем.

- -

Когда Вы обращались к объектной модели документа (DOM), используя следующие строки:

- -
const myDiv = document.createElement('div');
-const myVideo = document.querySelector('video');
- -

Вы использовали методы доступные в экземпляре класса Document. Для каждой загруженной веб-страницы создается экземпляр Document, называемый document, который представляет всю структуру страницы, ее содержимое и другие функции, такие как URL-адрес. Опять же, это означает, что он имеет несколько общих методов/свойств, доступных на нем.

- -

То же самое относится и к любому другому встроенному объекту/API, который вы использовали — Array, Math, и т. д.

- -

Обратите внимание, что встроенные объекты/API не всегда создают экземпляры объектов автоматически. Как пример, Notifications API — который позволяет новым браузерам запускать системные уведомления, требует, чтобы Вы создавали новый экземпляр объекта с помощью конструктора для каждого уведомления, которое Вы хотите запустить. Попробуйте ввести следующее в консоль JavaScript:

- -
const myNotification = new Notification('Hello!');
- -

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

- -
-

Примечание: Полезно подумать о том, как объекты взаимодействуют посредством передачи сообщений - когда объекту требуется другой объект для выполнения какого-либо действия, он часто отправляет сообщение другому объекту через один из его методов и ждет ответа, который мы знаем как возвращаемое (return) значение.

-
- -

Резюме

- -

Поздравляем, Вы достигли конца нашей первой статьи о объектах JS, теперь у вас должно быть хорошее представление о том, как работать с объектами в JavaScript - в том числе создавать свои собственные простые объекты. Вы также должны понимать, что объекты очень полезны в качестве структур для хранения связанных данных и функциональности - если бы мы пытались отслеживать все свойства и методы в нашем объекте person как отдельные переменные и функции, это было неэффективно, и мы бы рисковали столкнуться с другими переменными и функциями с такими же именами. Объекты позволяют нам безопасно хранить информацию в своем собственном блоке, вне опасности.

- -

В следующей статье мы начнем рассматривать теорию объектно-ориентированного программирования (OOП) и как эти техники могут быть использованны в JavaScript 

- -

{{NextMenu("Learn/JavaScript/Objects/Object-oriented_JS", "Learn/JavaScript/Objects")}}

- -

В этом модуле

- - diff --git "a/files/ru/learn/javascript/\320\277\320\265\321\200\320\262\321\213\320\265_\321\210\320\260\320\263\320\270/a_first_splash/index.html" "b/files/ru/learn/javascript/\320\277\320\265\321\200\320\262\321\213\320\265_\321\210\320\260\320\263\320\270/a_first_splash/index.html" deleted file mode 100644 index b2a811b992..0000000000 --- "a/files/ru/learn/javascript/\320\277\320\265\321\200\320\262\321\213\320\265_\321\210\320\260\320\263\320\270/a_first_splash/index.html" +++ /dev/null @@ -1,675 +0,0 @@ ---- -title: Первое погружение в JavaScript -slug: Learn/JavaScript/Первые_шаги/A_first_splash -translation_of: Learn/JavaScript/First_steps/A_first_splash ---- -
{{LearnSidebar}}
- -
{{PreviousMenuNext("Learn/JavaScript/Первые_шаги/What_is_JavaScript", "Learn/JavaScript/Первые_шаги/Что_пошло_не_так", "Learn/JavaScript/Первые_шаги")}}
- -

Теперь, когда вы получили базовое представление о JavaScript — самое время познакомиться с ним на практике! В данной статье представлен ускоренный практический курс, демонстрирующий основные возможности JavaScript. В этом курсе, шаг за шагом, вы создадите простую игру «Угадай число».

- - - - - - - - - - - - -
Необходимые навыки:Базовая компьютерная грамотность, знание основ HTML и CSS, понимание что такое и для чего нужен JavaScript.
Цели:Получение первого опыта в программировании на JavaScript.
- -

Вам не придется сразу понимать весь код — мы только хотим познакомить вас с базовыми концепциями языка и дать представление о том, как работает JavaScript (и другие языки программирования). В дальнейших статьях вы изучите эти концепции более подробно!

- -
-

Большинство языковых конструкций JavaScript, с которыми вы познакомитесь (функции, циклы и т.д.), имеют аналоги в других языках программирования — т.е. языки имеют разный синтаксис, но концепции в большинстве случаев те же самые.

-
- -

Думай как программист

- -

Одним из самых трудных и значимых моментов в обучении программированию является не изучение непосредственно синтаксиса языка, а понимание того как применять его для решения реальных задач. Вам нужно начать думать как программист, обычно это означает следующее:

- - - -

Всё вместе это потребует тяжелой работы, знания языка, практики в написании кода - и немного творчества. Чем больше вы будете заняты решением практических задач, тем быстрее будете расти в программировании. Мы не обещаем, что вы сразу начнете "думать как программист", но предоставим для этого достаточно возможностей в этой статье.

- -

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

- -

Игра «Угадай число»

- -

В этой статье мы покажем вам как создать простую игру, которую вы видите ниже:

- - - -

{{ EmbedLiveSample('Top_hidden_code', '100%', 320) }}

- -

Поиграйте в нее - познакомьтесь с игрой, прежде чем двигаться дальше.

- -

Давайте представим, что ваш босс дал вам следующую информацию для создания этой игры:

- -
-

Я хочу чтобы ты создал простую игру по принципу "Угадай число". Игра должна случайным образом генерировать число от 0 до 100, затем игрок должен отгадать это число за 10 попыток. После каждой попытки игроку сообщают угадал он число или не угадал и если он ошибся, то ему сообщается, что загаданное число больше или меньше того, которое он ввел. Так же необходимо показывать игроку числа из его предыдущих попыток. Игра будет окончена, если игрок угадал число верно или если у него кончатся все попытки. После окончания игры игроку будет дана возможность сыграть в игру еще раз.

-
- -

Поглядев на это краткое изложение, первое, что мы можем сделать - это начать разбивать его на простые действия, максимально думая как программист:

- -
    -
  1. Сгенерировать случайное число между 1 и 100.
  2. -
  3. Начать запись количества попыток игрока угадать число. Начать с 1.
  4. -
  5. Предоставить попытку угадать игроку загаданное число.
  6. -
  7. Как только попытка угадать была отправлена, сначала записать ее где-нибудь, чтобы пользователь мог увидеть свои предыдущие попытки
  8. -
  9. Далее, проверить было ли это число верным.
  10. -
  11. Если число верное: -
      -
    1. Показать поздравительное сообщение.
    2. -
    3. Оградить игрока от дальнейшей возможности ввода чисел (это испортит игру).
    4. -
    5. Предоставить возможность для перезапуска игры.
    6. -
    -
  12. -
  13. Если число не верное и есть попытки: -
      -
    1. Сказать игроку, что он не угадал.
    2. -
    3. Разрешить ему использовать еще попытку.
    4. -
    5. Повысить число попыток на 1.
    6. -
    -
  14. -
  15. Если число не верное и попыток нет: -
      -
    1. Сказать игроку, что игра окончена.
    2. -
    3. Оградить игрока от дальнейшей возможности ввода чисел (это испортит игру).
    4. -
    5. Предоставить возможность для перезапуска игры.
    6. -
    -
  16. -
  17. Во время перезапуска игры убедиться, что игровая логика и пользовательский интерфейс полностью сбросились на начальные значения и далее перейти обратно к пункту 1.
  18. -
- -

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

- -

Подготовка

- -

В начале этого урока, мы хотели бы, чтобы вы создали локальную копию файла  number-guessing-game-start.html  (см. здесь).  Откройте его как в текстовом редакторе, так и в веб-браузере. На данный момент вы увидите простой заголовок, абзац с инструкцией и форму для ввода предположения, но форма в настоящее время ничего не сделает.

- -

Место, где мы будем добавлять весь наш код, находится внутри элемента {{htmlelement("script")}} в нижней части HTML:

- -
<script>
-
-  // Your JavaScript goes here
-
-</script>
-
- -

Добавление переменных для хранения данных

- -

Давайте начнем. Прежде всего добавьте следующие строки внутри элемента  {{htmlelement("script")}} :

- -
var randomNumber = Math.floor(Math.random() * 100) + 1;
-
-var guesses = document.querySelector('.guesses');
-var lastResult = document.querySelector('.lastResult');
-var lowOrHi = document.querySelector('.lowOrHi');
-
-var guessSubmit = document.querySelector('.guessSubmit');
-var guessField = document.querySelector('.guessField');
-
-var guessCount = 1;
-var resetButton;
- -

В этом разделе кода устанавливаются переменные, необходимые для хранения данных, которые будет использоваться нашей программой. Переменные - это в основном контейнеры для значений (например, числа или строки текста). Вы создаете переменную с ключевым словом var, за которой следует имя для вашей переменной. Затем вы можете присвоить значение своей переменной знак равенства (=), за которым следует значение, которое вы хотите дать.

- -

В нашем примере:

- - - -
-

Заметка: В дальнейшем вы узнаете намного больше о переменных, в следующей статье.

-
- -

Функции (Functions)

- -

Затем добавьте следующие ниже предыдущего JavaScript:

- -
function checkGuess() {
-  alert('I am a placeholder');
-}
- -

Функции представляют собой многократно используемые блоки кода, написав один раз вы можете запускать их снова и снова, сохраняя нужный постоянно повторяющийся код. Это действительно полезно. Существует несколько способов определить функцию, но пока мы сосредоточимся на одном простом варианте. Здесь мы определили функцию используя ключевое слово function, за ним идет имя с двумя скобками после него. После этого мы добавляем две фигурные скобки ({ }). Внутри фигурных скобок содержится весь код, запускающийся всякий раз, когда вызываем функцию.

- -

Код запускается вводом имени функции, за которым следуют две скобки.

- -

Сейчас попробуйте сохранить код и обновить его в браузере.

- -

Перейдите к консоли JavaScript в инструментах разработчика, и введите следующую строку:

- -
checkGuess();
- -

Вы должны увидеть предупреждение, в котором говорится "I am a placeholder"; в нашем коде мы определили функцию, которая создает предупреждение, когда ее вызывают.

- -
-

Заметка: В дальнейшем вы намного больше узнаете о функциях.

-
- -

Операторы (Operators)

- -

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

- -

Сохраните наш код и обновите страницу показанную в браузере. Откройте консоль JavaScript, если вы еще её не открыли, чтобы попробовать ввести текст из приведенных ниже примеров — введите каждую строчку из столбца "Пример", нажимая Enter после каждого из них, и посмотрите какие результаты они возвращают. Если у вас нет доступа к инструментам разработчика в браузере, вы всегда можете использовать простую встроенную консоль, показанную ниже:

- - - -

{{ EmbedLiveSample('Hidden_code', '100%', 300) }}

- -

Сначала давайте посмотрим на арифметические операторы, например:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ОператорИмяПример
+Сложение6 + 9
-Вычитание20 - 15
*Умножение3 * 7
/Деление10 / 5
- -

Вы также можете использовать оператор + для сложения строк текста (в программировании это называется конкатенацией). Попробуйте ввести следующие строки:

- -
var name = 'Bingo';
-name;
-var hello = ' says hello!';
-hello;
-var greeting = name + hello;
-greeting;
- -

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

- -
name += ' says hello!';
- -

Это эквивалентно этому:

- -
name = name + ' says hello!';
- -

Когда мы запускаем проверку true/false (истина/ложь) (например, внутри условных выражений — смотри {{anch("Conditionals", "ниже")}}), мы используем операторы сравнения, например:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ОператорИмяПример
===Строгое равенство (это точно одно и то же?)5 === 2 + 4
!==Строгое неравенство (это не одно и то же?)'Chris' !== 'Ch' + 'ris'
<Меньше чем10 < 6
>Больше чем10 > 20
- -

Условные выражения (Conditionals)

- -

Вернемся к нашей функции checkGuess(), я думаю, можно с уверенностью сказать, что мы не хотим, чтобы она просто выводила сообщение заполнитель. Мы хотим, чтобы она проверяла сделал игрок правильный выбор или нет, и соответсвующе реагировала.

- -

Теперь, заменим вашу текущую функциюcheckGuess() на эту версию:

- -
function checkGuess() {
-  var userGuess = Number(guessField.value);
-  if (guessCount === 1) {
-    guesses.textContent = 'Previous guesses: ';
-  }
-  guesses.textContent += userGuess + ' ';
-
-  if (userGuess === randomNumber) {
-    lastResult.textContent = 'Congratulations! You got it right!';
-    lastResult.style.backgroundColor = 'green';
-    lowOrHi.textContent = '';
-    setGameOver();
-  } else if (guessCount === 10) {
-    lastResult.textContent = '!!!GAME OVER!!!';
-    setGameOver();
-  } else {
-    lastResult.textContent = 'Wrong!';
-    lastResult.style.backgroundColor = 'red';
-    if(userGuess < randomNumber) {
-      lowOrHi.textContent = 'Last guess was too low!';
-    } else if(userGuess > randomNumber) {
-      lowOrHi.textContent = 'Last guess was too high!';
-    }
-  }
-
-  guessCount++;
-  guessField.value = '';
-  guessField.focus();
-}
- -

Как много кода — фу! Давайте отдельно рассмотрим каждый раздел и объясним, что он делает.

- - - -

События (Events)

- -

На данный момент у нас есть хорошо реализованная функция checkGuess(), но она ничего не сделает, потому что мы еще не вызвали ее. В идеале мы хотим вызывать её во время нажатия кнопки « Submit guess », и для этого нам нужно использовать событие. События - это действия, которые происходят в браузере, например, нажатие кнопки или загрузка страницы или воспроизведение видео, в ответ на которые мы можем запускать блоки кода. Конструкции, которые прослушивают событие, называются прослушивателями событий, а блоки кода, выполняемые в ответ на срабатывание событий, называются обработчиками событий.

- -

Добавьте следующую строку ниже закрывающей фигурной скобки функции checkGuess():

- -
guessSubmit.addEventListener('click', checkGuess);
- -

Здесь мы добавляем прослушиватель событий к кнопке guessSubmit. Это метод, который принимает два входных значения (называемые аргументами) - тип события, которое мы выслушиваем (в данном случае click) в виде строки, и код, который мы хотим запустить при возникновении события (в данном случае функция checkGuess() - обратите внимание, что нам не нужно указывать круглые скобки при записи внутри {{domxref("EventTarget.addEventListener", "addEventListener()")}}).

- -

Попробуйте сохранить и обновить код сейчас, и ваш пример должен теперь работать, но до определенного момента. Единственная проблема в том, что если вы угадаете правильный ответ или исчерпаете догадки, игра сломается, потому что мы еще не определили функцию setGameOver(), которая должна запускаться после завершения игры. Давайте добавим наш недостающий код и завершим пример функциональности.

- -

Завершение игры

- -

Давайте добавим функцию setGameOver() в конец нашего кода, а затем пройдем по ней. Добавьте это под нижней частью вашего JavaScript:

- -
function setGameOver() {
-  guessField.disabled = true;
-  guessSubmit.disabled = true;
-  resetButton = document.createElement('button');
-  resetButton.textContent = 'Start new game';
-  document.body.appendChild(resetButton);
-  resetButton.addEventListener('click', resetGame);
-}
- - - -

Теперь нам нужно также определить эту функцию! Добавьте следующий код, снова в нижнюю часть вашего JavaScript:

- -
function resetGame() {
-  guessCount = 1;
-
-  var resetParas = document.querySelectorAll('.resultParas p');
-  for (var i = 0 ; i < resetParas.length ; i++) {
-    resetParas[i].textContent = '';
-  }
-
-  resetButton.parentNode.removeChild(resetButton);
-
-  guessField.disabled = false;
-  guessSubmit.disabled = false;
-  guessField.value = '';
-  guessField.focus();
-
-  lastResult.style.backgroundColor = 'white';
-
-  randomNumber = Math.floor(Math.random() * 100) + 1;
-}
- -

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

- - - -

С этого момента у вас есть полностью работающая (простая) игра - поздравляем!

- -

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

- -

Циклы (Loops) 

- -
-
-
Одна часть вышеприведенного кода, которую мы должны рассмотреть более подробно, - это цикл for. Циклы - очень важная концепция программирования, которая позволяет вам снова и снова запускать кусок кода, пока не будет выполнено определенное условие.
- -
Для начала перейдите в панель инструментов разработчика JavaScript-консоли и введите следующее:
-
-
- -
for (var i = 1 ; i < 21 ; i++) { console.log(i) }
- -

Что случилось? Номера с 1 по 20 были напечатаны в консоли. Это из-за цикла. Цикл for принимает три входных значения (аргументы):
- Начальное значение: в этом случае мы начинаем подсчет c 1, но это может быть любое число которое вам нравится. Вы можете заменить i любым другим именем, которое вам нравится, но я использую его как условность, потому что оно короткое и легко запоминается. Условие выхода: Здесь мы указали i <21 - цикл будет продолжаться до тех пор, пока i будет меньше 21. Когда i достигнет 21, цикл больше не будет работать. Инкремент: мы указали i ++, что означает «увеличить i на 1». Цикл будет выполняться один раз для каждого значения i, пока оно не достигнет значения 21 (как обсуждалось выше). В этом случае мы просто печатаем значение i в консоли на каждой итерации с помощью {{domxref ("Console.log", "console.log ()")}}.

- -

Теперь давайте посмотрим на цикл в нашей игре угадывания чисел - в функции resetGame () можно найти следующее:

- -
var resetParas = document.querySelectorAll('.resultParas p');
-for (var i = 0 ; i < resetParas.length ; i++) {
-  resetParas[i].textContent = '';
-}
- -

Этот код создает переменную, содержащую список всех абзацев внутри <div class = "resultParas">, используя метод {{domxref ("Document.querySelectorAll", "querySelectorAll ()")}}, затем он проходит через каждый из них, удаляя текстовое содержимое каждого из них.

- -

Немного об объектах (Objects)

- -

Давайте добавим еще одно окончательное улучшение, прежде чем перейти к обсуждению. Добавьте следующую строку чуть ниже var resetButton; в верхней части вашего JavaScript, затем сохраните файл:

- -
guessField.focus();
- -

Эта строка использует метод {{domxref("HTMLElement.focus", "focus()")}}, чтобы автоматически помещать текстовый курсор в текстовое поле {{htmlelement("input")}}, как только загрузится страница. Пользователь сможет сразу набрать свою первую догадку, не нажимая поле формы. Это всего лишь небольшое дополнение, но оно улучшает удобство использования - дает пользователю хорошую визуальную подсказку относительно того, что они должны делать в игре.

- -

Давайте проанализируем, что произошло. В JavaScript все элементы являются объектами. Объект - это набор связанных функций, хранящихся в одной группе. Вы можете создавать собственные объекты, но это требует мастерства, и мы не хотели бы раскрывать эту тему в рамках данного курса. Будет достаточно обсудить встроенные объекты вашего браузера, которые позволяют реализовывать множество полезных вещей.

- -

В нашем примере мы сначала создали переменную guessField, которая запоминает значение из поля ввода в нашем HTML - следующая строка находится среди первых в нашем коде:

- -
var guessField = document.querySelector('.guessField');
- -

Чтобы получить это значение, мы использовали метод {{domxref("document.querySelector", "querySelector()")}} объекта {{domxref("document")}}. querySelector() "берет" одну часть информации -  CSS selector, который выбирает нужный элемент.

- -

Поскольку guessField теперь содержит ссылку на элемент {{htmlelement("input")}}, теперь он будет иметь доступ к ряду свойств (в основном к переменным, хранящимся внутри объектов, некоторые значения которых нельзя изменять) и методы (в основном функции, хранящиеся внутри объектов). Одним из методов, доступных для ввода элементов, является focus (), поэтому мы можем теперь использовать эту строку для фокусировки ввода текста:

- -
guessField.focus();
- -

Для переменных, которые не содержат ссылок на элементы формы, не будет доступен focus(). Например, переменная guesses содержит ссылку на элемент {{htmlelement ("p")}}, а guessCount содержит число.

- -

Поиграем с объектами браузера

- -

Давайте немного поиграем с некоторыми объектами браузера.

- -
    -
  1. Для начала запустите свою программу в браузере.
  2. -
  3. Далее, откройте инструменты разработчика в вашем браузере, и убедитесь, что вы перешли во вкладку с консолью JavaScript.
  4. -
  5. Введите guessField и консоль покажет, что переменная содержит элемент {{htmlelement("input")}}. Вы также можете заметить, что консоль автоматически заполняет имена объектов, которые существуют внутри исполняющей среды, включая ваши переменные!
  6. -
  7. Теперь введите следующее: -
    guessField.value = 'Hello';
    - Свойство value представляет текущее значение, введенное в текстовое поле. Заметьте, что, введя эту команду, мы изменили его!
  8. -
  9. Попробуйте ввести guesses и нажать return. Консоль покажет, что в переменной содержится элемент {{htmlelement("p")}}.
  10. -
  11. Теперь попробуйте ввести: -
    guesses.value
    - Браузер вернет вам undefined, потому что value не существует в параграфах.
  12. -
  13. Для изменения текста внутри параграфа, взамен используйте свойство {{domxref("Node.textContent", "textContent")}}. Попробуйте: -
    guesses.textContent = 'Where is my paragraph?';
    -
  14. -
  15. Теперь немного повеселимся. Попробуйте ввести следующие строки, одну за другой: -
    guesses.style.backgroundColor = 'yellow';
    -guesses.style.fontSize = '200%';
    -guesses.style.padding = '10px';
    -guesses.style.boxShadow = '3px 3px 6px black';
    - Каждый элемент на странице имеет свойство style, которое само по себе содержит объект, свойства которого содержат все встроенные стили CSS, применяемые к этому элементу. Это позволяет нам динамически задавать новые стили CSS для элементов с помощью JavaScript.
  16. -
- -

Теперь можно отдохнуть...

- -

Итак, на этом пример закончился - отлично, вы добрались до конца! Попробуйте свой финальный код или поиграйте с нашей готовой версией здесь. Если вы не можете запустить этот пример, сверьтесь с исходным кодом.

- -

{{PreviousMenuNext("Learn/JavaScript/Первые_шаги/What_is_JavaScript", "Learn/JavaScript/Первые_шаги/Что_пошло_не_так", "Learn/JavaScript/Первые_шаги")}}

diff --git "a/files/ru/learn/javascript/\320\277\320\265\321\200\320\262\321\213\320\265_\321\210\320\260\320\263\320\270/arrays/index.html" "b/files/ru/learn/javascript/\320\277\320\265\321\200\320\262\321\213\320\265_\321\210\320\260\320\263\320\270/arrays/index.html" deleted file mode 100644 index 7f38ce4a50..0000000000 --- "a/files/ru/learn/javascript/\320\277\320\265\321\200\320\262\321\213\320\265_\321\210\320\260\320\263\320\270/arrays/index.html" +++ /dev/null @@ -1,678 +0,0 @@ ---- -title: Массивы -slug: Learn/JavaScript/Первые_шаги/Arrays -tags: - - JavaScript - - Pop - - Push - - shift - - unshift - - Для начинающих - - Массивы - - Статья -translation_of: Learn/JavaScript/First_steps/Arrays ---- -
{{LearnSidebar}}
- -
{{PreviousMenuNext("Learn/JavaScript/Первые_шаги/Useful_string_methods", "Learn/JavaScript/Первые_шаги/Создатель_глуых_историй", "Learn/JavaScript/Первые_шаги")}}
- -

В финальной статье этого раздела, мы познакомимся с массивами — лаконичным способом хранения списка элементов под одним именем. Мы поймем, чем они полезны, затем узнаем, как создать массив, получить, добавить и удалить элементы, хранящиеся в массиве.

- - - - - - - - - - - - -
Необходимые навыки:Базовая компьютерная грамотность, базовое понимание HTML и CSS, понимание о том, что такое JavaScript.
Цель:Понять, что такое массивы и как использовать их в JavaScript.
- -

Что такое массив?

- -

Массивы обычно описываются как «объекты, подобные спискам»; они представляют собой в основном отдельные объекты, которые содержат несколько значений, хранящихся в списке. Объекты массива могут храниться в переменных и обрабатываться во многом так же, как и любой другой тип значения, причем разница заключается в том, что мы можем получить доступ к каждому значению внутри списка отдельно и делать супер полезные и эффективные вещи со списком, а также делать то же самое для каждого из значений. Представим, что у нас есть список продуктов и их цены, хранящиеся в массиве, и мы хотим их просмотреть и распечатать на счете-фактуре, общая сумма всех цен и распечатка общей цены внизу.

- -

Если бы у нас не было массивов, мы должны были бы хранить каждый элемент в отдельной переменной, а затем вызывать код, выполняющий печать и добавляющий отдельно каждый элемент. Написание такого кода займет намного больше времени, сам код будет менее эффективным и подверженным  ошибкам. Если бы у нас было 10 элементов для добавления в счет-фактуру, это еще куда ни шло, но как насчет 100 предметов? Или 1000? Мы вернемся к этому примеру позже в статье.

- -

Как и в предыдущих статьях, давайте узнаем о реальных основах массивов, введя некоторые примеры в консоль JavaScript. Мы предоставили один ниже (вы также можете open this console в отдельном окне, или использовать browser developer console, если вам угодно).

- - - -

{{ EmbedLiveSample('Hidden_code', '100%', 300) }}

- -

Создание массива

- -

Массивы создаются из квадратных скобок , которые содержат список элементов, разделённых запятыми.

- -
    -
  1. Допустим, мы бы хотели хранить список покупок в массиве — мы бы сделали что-то вроде этого. Введите следующие строчки в вашу консоль: -
    var shopping = ['bread', 'milk', 'cheese', 'hummus', 'noodles'];
    -shopping;
    -
  2. -
  3. В данном случае, каждый элемент в массиве — это строка , но имейте в виду, что вы можете хранить любой элемент в массиве — строку, число, объект, другую переменную, даже другой массив. Вы также можете перемешивать типы элементов — они не должны все быть числами, строками, и так далее. Попробуйте это: -
    var sequence = [1, 1, 2, 3, 5, 8, 13];
    -var random = ['tree', 795, [0, 1, 2]];
    -
  4. -
  5. Попробуйте сами создать несколько массивов, перед тем как двигаться дальше.
  6. -
- -

Получение и изменение элементов массива

- -

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

- -
    -
  1. Введите следующее в вашу консоль: -
    shopping[0];
    -// возвращает "bread"
    -
  2. -
  3. Вы также можете изменять элемент в массиве, просто дав отдельному элементу массива новое значение. Попробуйте это: -
    shopping[0] = 'tahini';
    -shopping;
    -// shopping теперь возвратит [ "tahini", "milk", "cheese", "hummus", "noodles" ]
    - -
    Заметка: Мы уже упоминали это прежде, но просто как напоминание — компьютеры начинают считать с нуля!
    -
  4. -
  5. Заметьте, что массив внутри массива называется многомерным массивом. Вы можете получить доступ к элементу внутри массива, который сам находится внутри другого массива, объединив два набора квадратных скобок. Например, для доступа к одному из элементов внутри массива, который является третьим элементом внутри массива random (см. предыдущую секцию данной статьи), мы могли бы сделать что-то вроде этого: -
    random[2][2];
    -
  6. -
  7. Попробуйте внести некоторые дополнительные изменения в свои примеры массивов, прежде чем двигаться дальше.
  8. -
- -

Нахождение длины массива

- -

Вы можете найти длину массива (количество элементов в нём) точно таким же способом, как вы находите длину строки (в символах) — используя свойство {{jsxref("Array.prototype.length","length")}}. Попробуйте следующее:

- -
sequence.length;
-// должно возвратить 7
- -

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

- -
var sequence = [1, 1, 2, 3, 5, 8, 13];
-for (var i = 0; i < sequence.length; i++) {
-  console.log(sequence[i]);
-}
- -

В будущих статьях вы узнаете о циклах, но вкратце этот код говорит:

- -
    -
  1. Начать цикл с номера позиции 0 в массиве.
  2. -
  3. Остановить цикл на номере элемента, равном длине массива. Это будет работать для массива любой длины, но в этом случае он остановит цикл на элементе номер 7 (это хорошо, поскольку последний элемент, который мы хотим, чтобы цикл был закрыт, равен 6).
  4. -
  5. Для каждого элемента вернуть его значение в консоли браузера с помощью console.log().
  6. -
- -

Некоторые полезные методы массивов

- -

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

- -

Преобразование между строками и массивами

- -

Часто у Вас могут быть некоторые необработанные данные, содержащиеся в большой длинной строке, и вы можете захотеть разделить полезные пункты до более удобной и полезной формы, а затем сделать что-то для них, например отобразить их в таблице данных. Для этого мы можем использовать метод {{jsxref ("String.prototype.split ()", "split ()")}}. В его простейшей форме он принимает единственный параметр, символ, который вы хотите отделить в строке, и возвращает подстроки между разделителем как элементы в массиве.

- -
-

Заметка: Хорошо, технически это строковый метод, не метод массива, но мы поместили его в массивы, так как он хорошо подходит для них.

-
- -
    -
  1. Поиграем с этим, посмотрим как это работает. Сначала, создадим строку в вашей консоли: -
    var myData = 'Manchester,London,Liverpool,Birmingham,Leeds,Carlisle';
    -
  2. -
  3. Теперь разделим ee посредством запятой: -
    var myArray = myData.split(',');
    -myArray;
    -
  4. -
  5. Наконец, попробуйте найти длину вашего нового массива и извлечь из него некоторые элементы: -
    myArray.length;
    -myArray[0]; // первый элемент в массиве
    -myArray[1]; // второй элемент в массиве
    -myArray[myArray.length-1]; // последний элемент в массиве
    -
  6. -
  7. Вы можете сделать обратное используя метод{{jsxref("Array.prototype.join()","join()")}} . Попробуйте следующее: -
    var myNewString = myArray.join(',');
    -myNewString;
    -
  8. -
  9.  Другой способ преобразования массива в строку - использовать метод {{jsxref("Array.prototype.toString()","toString()")}} . toString() ,возможно, проще,чем join() поскольку он не принимает параметр, но это ограничивает его. С join()вы можете указать разные разделители (попробуйте выполнить шаг 4 с другим символом, кроме запятой). -
    var dogNames = ["Rocket","Flash","Bella","Slugger"];
    -dogNames.toString(); //Rocket,Flash,Bella,Slugger
    -
  10. -
- -

Добавление и удаление элементов массива

- -

Мы еще не рассмотрели добавление и удаление элементов массива - давайте посмотрим на это сейчас. Мы будем использовать массив myArray , с которым мы столкнулись в предыдущем разделе. Если вы еще не прошли этот раздел, сначала создайте массив в консоли:

- -
var myArray = ['Manchester', 'London', 'Liverpool', 'Birmingham', 'Leeds', 'Carlisle'];
- -

Прежде всего, чтобы добавить или удалить элемент с конца массива, мы можем использовать {{jsxref("Array.prototype.push()","push()")}} и {{jsxref("Array.prototype.pop()","pop()")}} соответственно.

- -
    -
  1. Давайте сначала используем метод push() — заметьте, что вам нужно указать один или более элементов, которые вы хотите добавить в конец своего массива. Попробуйте это: - -
    myArray.push('Cardiff');
    -myArray;
    -myArray.push('Bradford', 'Brighton');
    -myArray;
    -
    -
  2. -
  3. При завершении вызова метода возвращается новая длина массива. Если бы вы хотели сохранить новую длину массива в переменной, вы бы могли сделать что-то вроде этого: -
    var newLength = myArray.push('Bristol');
    -myArray;
    -newLength;
    -
  4. -
  5. Удаление последнего элемента массива можно совершить с помощью вызова метода pop(). Попробуйте это: -
    myArray.pop();
    -
  6. -
  7. Когда вызов метода завершается, возвращается удалённый элемент. Вы бы могли также сделать такое: -
    var removedItem = myArray.pop();
    -myArray;
    -removedItem;
    -
  8. -
- -

{{jsxref("Array.prototype.unshift()","unshift()")}} и {{jsxref("Array.prototype.shift()","shift()")}} работают точно таким же способом, за исключением того что они работают в начале массива, а не в конце.

- -
    -
  1. Сначала, попробуем метод unshift(): - -
    myArray.unshift('Edinburgh');
    -myArray;
    -
  2. -
  3. Теперь shift(); попробуйте эти! -
    var removedItem = myArray.shift();
    -myArray;
    -removedItem;
    -
  4. -
- -

Практика: Печать продуктов!

- -

Вернемся к описанному выше примеру - распечатываем названия продуктов и цен на счет-фактуру, затем суммируем цены и печатаем их внизу. В приведенном ниже редактируемом примере есть комментарии, содержащие числа - каждая из этих отметок является местом, где вы должны добавить что-то в код. Они заключаются в следующем:

- -
    -
  1. Ниже комментария // number 1  имеется ряд строк, каждая из которых содержит название продукта и цену, разделенные двоеточием. Нужно превратить их в массив и сохранить его  под названием  products.
  2. -
  3. На строке с комментарием // number 2  начинается цикл for. В строке цикла имеется i <= 0, что является условием , которое заставляет цикл for выполняться только один раз, так как это значение i сообщает циклу: «останавливаться, когда i меньше или равен 0», при этом i начинается с 0. Нужно заменить i <= 0 условным тестом, который останавливает цикл, когда i перестает быть меньше длины массива products .
  4. -
  5. Под комментарием // number 3 мы хотим, чтобы вы написали строку кода, которая разбивает текущий элемент массива (name:price) на два отдельных элемента: один содержит только имя, а другой - содержащее только цену. Если не знаете, как это сделать, еще раз просмотрите статью Полезные строковые методы, а лучше, посмотрите раздел {{anch("Преобразование между строками и массивами")}} этой статьи.
  6. -
  7. В рамках приведенной выше строки нужно преобразовать цену из строки в число. Если не помните, как это сделать, ознакомьтесь со статьей строки в JavaScript.
  8. -
  9. В верхней части кода есть переменная с именем total , которая содержит значение 0. Внутри цикла (под комментарием // number 4) нужно добавить строку, которая добавляет текущую цену товара к этой сумме на каждой итерации цикла, так чтобы в конце кода была выведена корректная сумма в счет-фактуре. Для этого вам может понадобится оператор присваивания.
  10. -
  11. Под комментарием // number 5 нужно изменить строку так, чтобы переменная itemText была равна "current item name — $current item price",  например "Shoes — $23.99" для каждого случая, чтобы корректная информация для каждого элемента была напечатана в счете-фактуре. Здесь обычная конкатенация строк, которая должна быть вам знакома.
  12. -
- - - -

{{ EmbedLiveSample('Playable_code', '100%', 730, "", "", "hide-codepen-jsfiddle") }}

- -

Практика: Топ 5 поисовых запросов

- -

Хорошим тоном, является использование методов массива, таких как {{jsxref ("Array.prototype.push ()", "push ()")}} и {{jsxref ("Array.prototype.pop ()", "pop ()") }} - это когда вы ведете запись активных элементов в веб-приложении. Например, в анимированной сцене может быть массив объектов, представляющих текущую отображаемую фоновую графику и вам может потребоваться только 50 одновременных отображений по причинам производительности или беспорядка. Когда новые объекты создаются и добавляются в массив, более старые могут быть удалены из массива для поддержания нужного числа.

- -

В этом примере мы собираемся показать гораздо более простое использование - ниже мы даем вам поддельный поисковый сайт с полем поиска. Идея заключается в том, что когда в поле поиска вводятся запросы, в списке отображаются 5 предыдущих поисковых запросов. Когда число терминов превышает 5, последний член начинает удаляться каждый раз, когда новый член добавляется в начало, поэтому всегда отображаются 5 предыдущих терминов.

- -
-

Примечание: В реальном приложении для поиска вы, вероятно, сможете щелкнуть предыдущие условия поиска, чтобы вернуться к предыдущим поисковым запросам и отобразите фактические результаты поиска! На данный момент мы просто сохраняем его.

-
- -

Чтобы завершить приложение, вам необходимо:

- -
    -
  1. Добавьте строку под комментарием // number 1, которая добавляет текущее значение, введенное в ввод поиска, к началу массива. Его можно получить с помощью searchInput.value.
  2. -
  3. Добавьте строку под комментарием // number 2, которая удаляет значение, находящееся в конце массива.
  4. -
- - - -

{{ EmbedLiveSample('Playable_code_2', '100%', 700, "", "", "hide-codepen-jsfiddle") }}

- -

Заключение

- -

Прочитав эту статью, мы уверены, что вы согласитесь, что массивы кажутся довольно полезными; вы увидите, что они появляются повсюду в JavaScript, часто в сочетании с циклами, чтобы делать то же самое для каждого элемента массива. Мы научим вас всем полезным основам, которые нужно знать о циклах в следующем модуле, но пока вы должны себе похлопать и воспользоваться заслуженным перерывом; вы проработали все статьи в этом модуле!

- -

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

- -

Посмотрите также

- - - -

{{PreviousMenuNext("Learn/JavaScript/Первые_шаги/Useful_string_methods", "Learn/JavaScript/Первые_шаги/Создатель_глуых_историй", "Learn/JavaScript/Первые_шаги")}}

- -

В этом разделе

- - diff --git "a/files/ru/learn/javascript/\320\277\320\265\321\200\320\262\321\213\320\265_\321\210\320\260\320\263\320\270/index.html" "b/files/ru/learn/javascript/\320\277\320\265\321\200\320\262\321\213\320\265_\321\210\320\260\320\263\320\270/index.html" deleted file mode 100644 index bd435e920f..0000000000 --- "a/files/ru/learn/javascript/\320\277\320\265\321\200\320\262\321\213\320\265_\321\210\320\260\320\263\320\270/index.html" +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: Первые шаги в JavaScript -slug: Learn/JavaScript/Первые_шаги -tags: - - JavaScript - - Массивы - - Новичкам -translation_of: Learn/JavaScript/First_steps ---- -
{{LearnSidebar}}
- -

В нашем первом модуле, прежде чем перейти к практике написания кода на языке JavaScript, сначала мы дадим ответы на некоторые фундаментальные вопросы, а именно: "Что же такое JavaScript?", "Что он из себя представляет?" и "Что он может делать?". После этого мы внимательно рассмотрим некоторые из ключевых элементов, такие как переменные, строки, числа и массивы.

- -

Предисловие

- -

Вам не нужно иметь никаких предварительных знаний JavaScript чтобы приступить к этому модулю, но у вас должно быть некоторое представление о HTML и CSS. Рекомендуем ознакомиться со следующими материалами, прежде чем начинать знакомство с JavaScript:

- - - -
-

Примечание:  Если Вы работаете на компьютере, планшете или другом устройстве, где нет возможности полноценно работать с файлами, можете использовать такие онлайн сервисы как  JSBin или Thimble, для запуска примеров кода. 

-
- -

Руководства

- -
-
Что такое JavaScript?
-
Добро пожаловать на курс начинающего JavaScript разработчика от MDN! В первой статье мы рассмотрим JavaScript в общем приближении и постараемся ответить на вопросы "Что такое JavaScript?" и "Для чего он предназначен?", и закрепим верное понимание его назначения. 
-
Первое погружение в JavaScript
-
Теперь, когда вы знаете кое-что о JavaScript, и что он может делать, мы предлагаем вам пройти интенсивный практический урок по базовой функциональности JavaScript. Здесь вы, шаг за шагом, создадите простую игру "Угадай число".
-
Что пошло не так? Устранение ошибок JavaScript
-
В процессе создания игры "Угадай число" из предыдущего урока, вы могли заметить что она не работала. Не стоит унывать - данная статья научит вас беречь собственные нервы, а так же, даст несколько советов о том как решать такие проблемы, искать и исправлять неполадки в JavaScript коде.
-
Хранение нужной вам информации - Переменные
-
После прочтения предыдущих статей вы должны знать что из себя представляет JavaScript, что он может, как взаимодействует с другими web технологиями, и каковы его основные особенности в общем приближении. В этой статье спустимся к самым основам языка и поработаем с Переменными.
-
Базовая математика в JavaScript — числа и операторы
-
Здесь мы обсуждаем математику в JavaScript - каким образом мы можем манипулировать числами и операторами для работы с ними.
-
Работа с текстом — строки в JavaScript
-
Теперь мы обратим своё внимание на строки - так называются кусочки текста в программировании. В этой статье мы рассмотрим то что действительно необходимо знать про строки в JavaScript: как создать строку, делать escape (экранирование) символов с помощью кавычек, и объединять их.
-
Полезные строковые методы
-
После того как мы рассмотрели основы работы со строками, давайте двинемся дальше и поговорим о том какие полезные операторы и методы существуют для строк, такие как вычисление длины, соединение и разделение строк, замена отдельных символов и многие другие. 
-
Массивы
-
В последней статье этого модуля мы рассмотрим массивы - изящный способ хранения различных наборов информации в имени всего одной переменной. Здесь мы поговорим о том почему это может быть полезным, рассмотрим как создать массив, получить, добавить или удалить элемент массива, и прочее.
-
- -

Проверка полученных знаний

- -

Предложенное тестовое задание проверит ваше понимание основ JavaScript, которые вы получили пройдя предложенные выше уроки. 

- -
-
Генератор глупых историй
-
Вашим заданием будет применить на практике полученные знания и создать развлекательное приложение которое будет генерировать случайные нелепые истории.
-
diff --git "a/files/ru/learn/javascript/\320\277\320\265\321\200\320\262\321\213\320\265_\321\210\320\260\320\263\320\270/math/index.html" "b/files/ru/learn/javascript/\320\277\320\265\321\200\320\262\321\213\320\265_\321\210\320\260\320\263\320\270/math/index.html" deleted file mode 100644 index 29ff9258bf..0000000000 --- "a/files/ru/learn/javascript/\320\277\320\265\321\200\320\262\321\213\320\265_\321\210\320\260\320\263\320\270/math/index.html" +++ /dev/null @@ -1,423 +0,0 @@ ---- -title: Базовая математика в JavaScript — числа и операторы -slug: Learn/JavaScript/Первые_шаги/Math -tags: - - JavaScript - - Гайд - - Математика - - Начинающий - - Операторы - - Руководство - - Скриптинг - - Статья - - кодинг -translation_of: Learn/JavaScript/First_steps/Math ---- -
{{LearnSidebar}}
- -
{{PreviousMenuNext("Learn/JavaScript/Первые_шаги/Variables", "Learn/JavaScript/Первые_шаги/Строки", "Learn/JavaScript/Первые_шаги")}}
- -

В этой части курса мы обсуждаем математику в JavaScript — как мы можем использовать {{Glossary("Operator","operators")}} и другие функции, чтобы успешно манипулировать числами для выполнения наших задач.

- - - - - - - - - - - - -
Необходимые условия:Базовая компьютерная грамотность, базовое понимание HTML и CSS, понимание того, что такое JavaScript.
Цель:Ознакомление с основами математики в JavaScript.
- -

Все любят математику

- -

Хорошо, может быть, не все. Некоторые из нас любят математику, некоторые из нас ненавидели математику с тех пор, как мы изучали таблицу умножения в школе, а некоторые из нас находятся где-то между ними. Но никто из нас не может отрицать, что математика является фундаментальной частью жизни, и мы не можем обойтись без нее. Это особенно актуально, когда мы учимся программировать на JavaScript (или на любом другом языке, если на то пошло) — большая часть того, что мы делаем, опирается на обработку числовых данных, вычисление новых значений и т.д. Так что не удивительно, что JavaScript имеет полнофункциональный набор математических функций.

- -

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

- -

Типы чисел

- -

В программировании даже скромная система десятичных чисел, которую мы все так хорошо знаем, сложнее, чем вы думаете. Мы используем разные термины для описания различных типов десятичных чисел. Например:

- - - -

У нас даже есть разные типы числовых систем:

- - - -

Прежде чем взорвется ваш мозг, остановитесь прямо здесь и сейчас! 

- -

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

- -

Во-вторых, в отличие от некоторых других языков программирования, JavaScript имеет только один тип данных для чисел, как вы догадались это {{jsxref("Number")}}. Это означает, независимо от типа чисел, с которыми вы работаете в JavaScript, обрабатывать вы их будете точно так же.

- -

Для меня всё — числа

- -

Давайте быстро поиграем с некоторыми числами, чтобы снова познакомиться с основным синтаксисом, который нам нужен. Введите команды, перечисленные ниже, в вашу консоль (developer tools JavaScript console), или используйте простую встроенную консоль.

- -
    -
  1. Прежде всего, давайте объявим пару переменных и инициализируем их целым числом и числом с плавающей точкой, соответственно, затем введите имена переменных обратно, чтобы проверить, что все в порядке: -
    var myInt = 5;
    -var myFloat = 6.667;
    -myInt;
    -myFloat;
    -
  2. -
  3. Числовые значения набираются без кавычек. Попробуйте объявить и инициализировать еще пару переменных, содержащих числа, прежде чем двигаться дальше.
  4. -
  5. Теперь давайте убедимся, что обе переменные содержат одинаковый тип данных. Для этого есть оператор {{jsxref("Operators/typeof", "typeof")}}, который позволяет проверить какой тип данных содержит в себе переменная. Введите две приведенные ниже строки: -
    typeof myInt;
    -typeof myFloat;
    - В обоих случаях вы должны получить "number" — это все упрощает, чем если бы разные числа имели разные типы данных, и нам приходилось иметь дело с ними по-разному.
  6. -
- -

Арифметические операторы

- -

Арифметические операторы — это основные операторы, которые мы используем для различных математических операций, например таких, как сложение или вычитание:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ОператорИмяФункцияПример
+СложениеОбъединение чисел в одно целое.6 + 9
-ВычитаниеВычитает правое число от левого.20 - 15
*УмножениеУмножает два числа вместе.3 * 7
/ДелениеДелит левое число на правое.10 / 5
%Модуль числа -

Возвращает значение остатка при делении первого числа на второе. Результат будет иметь тот же знак, что и первое число.

-
-

11 % 3 = 2 (поскольку число 3 вмещается три раза, остатком будет число 2)

-
**показатель степениВозводит базовое число в указанную степень, то есть количество базовых чисел, указанных экспонентой, умножается вместе. Впервые он был представлен в EcmaScript 2016.5 ** 5 (возвращает 3125, или как: 5*5*5*5*5)
- -
-

Примечание: Иногда числа участвующие в математических операциях называют операндами ( {{Glossary("Operand", "operands")}} ).

-
- -

Нам, вероятно, не нужно учить вас базовым математическим операциям, но мы хотели бы проверить ваше понимание синтаксиса. Попробуйте ввести приведенные ниже примеры в свою консоль (developer tools JavaScript console), или используйте встроенную консоль, с которой вы уже знакомы, чтобы ознакомиться с синтаксисом.

- -
    -
  1. Для начала попробуйте ввести простые примеры, такие как: -
    10 + 7
    -9 * 8
    -60 % 3
    -
  2. -
  3. Вы также можете попробовать объявить переменные и присвоить им различные числа. Попробуйте вместо чисел использовать ранее объявленные переменные — переменные будут вести себя точно так же, как значения, которые они хранят. Например: -
    var num1 = 10;
    -var num2 = 50;
    -9 * num1;
    -num2 / num1;
    -
  4. -
  5. И напоследок, попробуйте ввести более сложные выражения, например: -
    5 + 10 * 3;
    -num2 % 9 * num1;
    -num2 + num1 / 8 + 2;
    -
  6. -
- -

Некоторые примеры выше могут дать вам не тот результат, которого вы ожидали; приведенный ниже раздел может дать ответ на вопрос о том, почему.

- -

Приоритет операторов

- -

Давайте взглянем на последний пример сверху. Предположим, что num2 содержит значение 50 и num1 содержит значение 10 (как и было обозначено выше):

- -
num2 + num1 / 8 + 2;
- -

Будучи человеком, вы, вероятно, прочитаете это как "50 плюс 10 равно 60", затем "8 плюс 2 равно 10", и, наконец, "60 делить на 10 равно 6".

- -

Но браузер видит это по-другому: "10 делить на 8 равно 1.25", затем "50 плюс 1.25 плюс 2 равно 53.25".

- -

Это происходит из-за приоритета операторов - некоторые операторы будут применены перед другими в процесс вычисления суммы (в программировании ее называют выражением). Приоритет операторов в JavaScript ничем не отличается от приоритета арифметических операций, который вы изучали в школе - умножение и деление всегда выполняются первыми, затем сложение и вычитание (сумма всегда вычисляется слева направо).

- -

Если вы хотите переопределить порядок выполнения операторов, вы можете окружить парными скобками часть выражения, которая должна быть выполнена первой. Для получения результата 6 вам следует сделать следующее:

- -
(num2 + num1) / (8 + 2);
- -

Результат этого выражения равен 6.

- -
-

Заметка: полный список операторов JavaScript и приоритетов их выполнения можно найти по этой ссылке: Expressions and operators.

-
- -

Операторы инкремента и декремента

- -

Иногда вам захочется повторно добавить или вычесть единцу к/из значению числовой переменной. Это можно сделать с помощью оператора инкремента (++) и декремента (--). Мы использовали ++ в нашей игре "Угадай число" в статье первое погружение в JavaScript, где мы добавляли 1 к переменной guessCount, в которой хранилось значение количества попыток пользователя после каждого хода.

- -
guessCount++;
- -
-

Замечание: инкремент и декремент часто используются в циклах, о которых вы узнаете позже. Например, если вы захотите пройтись по списку цен и добавить к каждой налог с продаж, вам придется в цикле обойти каждую цену и провести необходимые вычисления для учета налога. Инкремент будет использован для перехода на новую ячейку списка при необходимости. У нас есть несложный пример реализации такого списка - попробуйте и взгляните на код чтобы посмотреть, сможете ли вы найти инкременты! Мы взглянем на циклы поближе позже по ходу курса.

-
- -

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

- -
3++;
- -

Таким образом, вы можете применить инкремент только к существующим переменным:

- -
var num1 = 4;
-num1++;
- -

Так, вторая странность! Если вы сделаете это, вы получите значение 4 - бразуер возвращает текущее число, после чего применяет к нему оператор инкремента. Вы можете удостовериться в том, что инкремент был применен, узнав значение переменной еще раз:

- -
num1;
- -

То же самое для --: попробуйте пример ниже

- -
var num2 = 6;
-num2--;
-num2;
- -
-

Замечание: вы можете заставить делать это в другом порядке - применить инкремент/декремент и только потом вернуть значение. Для этого необходимо записать оператор слева от переменной, а не справа. Попробуйте пример сверху еще раз, но в этот раз используйте ++num1 и --num2

-
- -

Операторы присваивания

- -

Операторы присваивания - операторы, которые присваивают значение переменным. Мы уже много раз использовали самый простой из них, =, он просто приравнивает значение переменной слева к значению справа:

- -
var x = 3; // x содержит значение 3
-var y = 4; // y содержит значение 4
-x = y; // x теперь содержит значение y (x == 4)
- -

Однако есть еще несколько сложных конструкций, которые позволяют делать ваш код более простым и аккуратным. Наиболее часто используемые перечислены ниже:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
OperatorNamePurposeExampleShortcut for
+=Присваивание сложенияПрибавляет значение справа к переменной слева и возвращает новое значение переменнойx = 3;
- x += 4;
x = 3;
- x = x + 4;
-=Присваивание вычитанияВычитает значение справа из переменной слева и возвращает новое зачение переменнойx = 6;
- x -= 3;
x = 6;
- x = x - 3;
*= -

Присваивание умножения

-
Умножает переменную слева на значение справа и возвращает новое зачение переменнойx = 2;
- x *= 3;
x = 2;
- x = x * 3;
/=Присваивание деленияДелит переменную слева на значение справа и возвращает новое зачение переменнойx = 10;
- x /= 5;
x = 10;
- x = x / 5;
- -

Попробуйте использовать такие конструкции, что понять, как они работают. Сможете ли вы определить значение до того, как напишите вторую строку?

- -

Замьтете, что значение справа может быть как числом (константой), так и переменной, например:

- -
var x = 3; // x содержит значение 3
-var y = 4; // y содержит значение 4
-x *= y; // x содержит значение 12
- -
-

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

-
- -

Активное обучение: меняем размеры коробки

- -

В этом упражнении вы будете пользоваться числами и операторами для работы с размерами коробки. Коробка рисуется с помощью API браузера, которое назывется Canvas API. Вам не следует беспокоиться о том, как это работает - просто сосредоточьтесь на математике. Ширина и высота коробки (в пикселях) определяются переменными x и y, которые изначально равны 50.

- -

{{EmbedGHLiveSample("learning-area/javascript/introduction-to-js-1/maths/editable_canvas.html", '100%', 520)}}

- -

Открыть в новом окне

- -

В коде сверху, который вы можете изменять, под комментарием есть две строчки, с помощью которых вы можете увеличивать/уменьшать размеры коробки. Мы хотим, чтобы вы выполнили несколько заданий:

- - - -

Не расстраивайтесть, если вы не поняли код сверху. Нажмите кнопку Reset для запуска программы снова. Если вы смогли ответить верно на все вопросы, попробуйте поэкспериментировать с кодом еще (или, например, предложить друзьям несколько заданий).

- -

Операторы сравнения

- -

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

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ОператорИмяНазначениеПример
===Строгое равенствоПроверяет левое и правое значения на идентичность5 === 2 + 4
!==Строгое неравенствоПроверяет левое и правое значения на неидентичность5 !== 2 + 3
<МеньшеПроверяет, меньше ли левое значение правого10 < 6
>БольшеПроверяет, больше ли левое значение правого10 > 20
<=Меньше или равноПроверят, меньше ли левое значение правому (или равно ему)3 <= 2
>=Больше или равноПроверят, больше ли левое значение левого (или равно ему)5 >= 4
- -
-

Заметка: вы можете заметить, что некоторые люди используют == и != в их программах для сравнения на равенство и неравенство — это валидные JavaScript-операторы, но они отличаются от ===/!== — первая пара проверяет на равенство/неравенство значений, не рассматривая их типы. Вторая пара - строгая версия первой, которая проверяет типы операндов. При использовании строгой версии выявляется больше ошибок, поэтому мы рекомендуем использовать именно ее.

-
- -

Если вы попробуете использовать эти операторы в консоли, вы увидите, что все они возвращают значения true/false — о типе данных boolean мы писали в прошлой статье. С их помощью мы можем принимать решения в нашей программе, например:

- - - -

Мы взглянем на то, как реализовать такую логику после знакомства с условными выражениями в следующей статье. Сейчас мы рассмотрим небольшой пример:

- -
<button>Запустить машину</button>
-<p>Машина остановлена</p>
-
- -
var btn = document.querySelector('button');
-var txt = document.querySelector('p');
-
-btn.addEventListener('click', updateBtn);
-
-function updateBtn() {
-  if (btn.textContent === 'Start machine') {
-    btn.textContent = 'Stop machine';
-    txt.textContent = 'The machine has started!';
-  } else {
-    btn.textContent = 'Start machine';
-    txt.textContent = 'The machine id stopped.';
-  }
-}
- -

{{EmbedGHLiveSample("learning-area/javascript/introduction-to-js-1/maths/conditional.html", '100%', 100)}}

- -

Открыть в новом окне

- -

Мы использовали оператор равенства внутри функции updateBtn(). В этом случае мы не проверяем пару математических выражений на равенcтво значений — мы просто смотрим, является ли текст на кнопке определенной строкой — что по сути является тем же самым. Если кнопка при нажатии содержит "Start machine", мы меняем содержимое метки на "Stop machine" и обновляем метку. Если же текст кнопки — "Stop machine", при нажатии мы возвращем все обратно. 

- -
-

Заметка: Такой элемент управления, который переключается между двумя состояниями, обычно называется тумблером. Он переключается между одним состоянием и другим: свет включен, свет выключен и т. д.

-
- -

Итого

- -

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

- -

В следующей статье мы изучим текст и то, как мы работаем с ним в JavaScript.

- -
-

Примечание: если вам хочется узнать подробнее о том, как математика реализуется в JavaScript, вы можете посмотерть главный раздел JavaScript MDN. Статьи Числа и даты и Выражения и операторы - хороший вариант для начала.

-
- -

{{PreviousMenuNext("Learn/JavaScript/Первые_шаги/Variables", "Learn/JavaScript/Первые_шаги/Строки", "Learn/JavaScript/Первые_шаги")}}

diff --git "a/files/ru/learn/javascript/\320\277\320\265\321\200\320\262\321\213\320\265_\321\210\320\260\320\263\320\270/useful_string_methods/index.html" "b/files/ru/learn/javascript/\320\277\320\265\321\200\320\262\321\213\320\265_\321\210\320\260\320\263\320\270/useful_string_methods/index.html" deleted file mode 100644 index 1318ee39ac..0000000000 --- "a/files/ru/learn/javascript/\320\277\320\265\321\200\320\262\321\213\320\265_\321\210\320\260\320\263\320\270/useful_string_methods/index.html" +++ /dev/null @@ -1,723 +0,0 @@ ---- -title: Полезные строковые методы -slug: Learn/JavaScript/Первые_шаги/Useful_string_methods -tags: - - Beginner - - CodingScripting - - JavaScript - - Learn - - length - - lower - - replace - - split - - upper - - Обучение - - Регистр -translation_of: Learn/JavaScript/First_steps/Useful_string_methods ---- -

{{LearnSidebar}}

- -

{{PreviousMenuNext("Learn/JavaScript/Первые_шаги/Строки", "Learn/JavaScript/Первые_шаги/Arrays", "Learn/JavaScript/Первые_шаги")}}

- -

Мы рассмотрели базовые понятия, касающиеся строк. Давайте пойдем дальше и рассмотрим, какие полезные операции мы можем выполнять со строками, используя встроенные функции, такие как поиск длины текстовой строки, объединение и разделение строк, замена одного символа из строки другим и многое другое.

- - - - - - - - - - - - -
Необходимые знания:Базовая компьютерная грамотность, базовое понимание HTML и CSS, понимание того, что такое JavaScript.
Задача:Понять, что строки являются объектами, и изучить, как использовать некоторые из основных методов, доступных для этих объектов для управления строками.
- -

Строки как объекты

- -

Почти всё в JavaScript является объектами. Когда вы создаете строку, например: 

- -
let string = 'This is my string';
- -

ваша переменная становится строковым объектом, и, как результат, ей доступно множество свойств и методов. Можете убедиться в этом, перейдя на страницу {{jsxref ("String")}} и просмотрев на ней список свойств и методов!

- -

Только не волнуйтесь! Большинство из них вам не нужно знать сейчас на ранней стадии вашего обучения. Но некоторые из них вы, возможно, будете использовать довольно часто. Их мы и рассмотрим.

- -

Приведем несколько примеров в новой консоли. Ниже вы можете открыть данную консоль в отдельной вкладке или окне, или, если вам так удобней, использовать браузер консоли разработчика.

- - - -

{{ EmbedLiveSample('Hidden_code', '100%', 300, "", "", "hide-codepen-jsfiddle") }}

- -

Поиск длины строки

- -

Это легко — вы просто используете свойство {{jsxref ("String.prototype.length", "length")}}. Попробуйте ввести следующие строки:

- -
let browserType = 'mozilla';
-browserType.length;
- -

Результатом должно быть число 7, потому что слово «mozilla» состоит из 7 символов. Это свойство можно применить, например, если вы захотите найти длины серии имен, чтобы их можно было отображать по порядку длины или сообщить пользователю, что имя пользователя, которое он ввёл в поле формы, слишком длинное, если оно превышает определённую длину.

- -

Получение определенного строкового символа

- -

Вы можете вернуть любой символ внутри строки, используя обозначение в квадратных скобках. Это означает, что вы добавляете квадратные скобки ([ ]) в конце вашего имени переменной. В квадратных скобках вы указываете номер символа, который хотите вернуть. Например, чтобы получить первую букву, нужно написать:

- -
browserType[0];
- -

Компьютеры считают от 0, а не 1! Чтобы получить последний символ любой строки, мы могли бы использовать следующую строку, объединив эту технику с свойством length:

- -
 browserType[browserType.length-1];
- -

Длина слова «mozilla» равна 7, но, поскольку счет начинается с 0, позиция последнего символа равна 6, поэтому нам нужна length-1. Такой способ можно использовать, чтобы найти первую букву ряда строк и упорядочить их по алфавиту.

- -

Поиск подстроки внутри строки и ее извлечение

- -
    -
  1. Иногда вам может понадобиться выяснить, присутствует ли меньшая строка внутри большей (обычно мы говорим, что внутри строки есть подстрока). Это можно сделать с помощью метода {{jsxref ("String.prototype.indexOf ()", "indexOf ()")}}, который принимает одну {{glossary ("parameter")}} - подстроку, которую вы хотите найти. Введите: -
    browserType.indexOf('zilla');
    - Это дает нам результат 2, потому что подстрока «zilla» начинается в позиции 2 ("m" — 0, "o" — 1, "z" — 2) внутри «mozilla». Такой код можно использовать для фильтрации строк. Например, если есть список веб-адресов и вы хотите распечатать только те, которые содержат «mozilla».
  2. -
- -
    -
  1. Это можно сделать по-другому, что, возможно, ещё более эффективно. Введите следующее: -
    browserType.indexOf('vanilla');
    - Это должно дать вам результат -1. Такое значение возвращается, когда подстрока, в данном случае «vanilla», не найдена в основной строке.
    -
    - Вы можете использовать это, чтобы найти все экземпляры строк, которые не содержат подстроку «mozilla» (для обратного эффекта, используйте оператор отрицания): -
    if(browserType.indexOf('mozilla') === -1) {
    -  // сделать что-то, если 'mozilla'
    -  // не является частью этой строки
    -}
    -
    -if(browserType.indexOf('mozilla') !== -1) {
    -  // сделать что-то, если 'mozilla'
    -  // является частью этой строки
    -}
    -
  2. -
  3. Когда вы знаете, где подстрока начинается внутри строки, и вы знаете, на каком символе вы хотите её завершить, можно использовать {{jsxref ("String.prototype.slice ()", "slice ()")}}  для извлечения. Попробуйте следующее: -
    browserType.slice(0,3);
    - Это возвращает «moz». Первым параметром является позиция символа, с которого начинается извлечение, а второй параметр — позиция последнего символа, перед которым нужно отсечь строку. Таким образом, срез происходит с первой позиции, вплоть до последней позиции, но не включая её (помним, что счет идёт с 0, а не с 1). Также можно сказать, что второй параметр равен длине возвращаемой строки.
  4. -
  5. Кроме того, если вы знаете, что хотите извлечь все остальные символы в строке после определённого символа, вам не нужно включать второй параметр. Достаточно включить только положение символа, с которого вы хотите начать извлечение оставшихся символов в строке. Введите: -
    browserType.slice(2);
    - Этот код возвращает «zilla» — это потому, что позиция символа 2 — это буква z, и поскольку вы не указали второй параметр, возвращаемая подстрока состояла из всех остальных символов в строке.
  6. -
- -
-

Примечание: второй параметр slice() не обязателен: если вы его не включите в код, обрезание закончится на конце оригинальной строки. Есть и другие варианты; изучите страницу {{jsxref ("String.prototype.slice ()", "slice ()")}}, чтобы узнать, что ещё вы можете узнать.

-
- -

Изменение регистра

- -

Строковые методы {{jsxref ("String.prototype.toLowerCase ()", "toLowerCase ()")}} и {{jsxref ("String.prototype.toUpperCase ()", "toUpperCase ()")}} преобразовывают все символы в строке в нижний или верхний регистр соответственно. Этот способ можно применить, если вы хотите нормализовать все введенные пользователем данные перед их сохранением в базе данных.

- -

Попробуем ввести следующие строки, чтобы узнать, что происходит:

- -
var radData = 'My NaMe Is MuD';
-radData.toLowerCase();
-radData.toUpperCase();
- -

Обновление частей строки

- -

Вы можете заменить одну подстроку внутри строки на другую подстроку, используя метод {{jsxref ("String.prototype.replace ()", "replace ()")}}. Этот метод работает очень просто на базовом уровне, но у него есть некоторые продвинутые свойства, но мы пока не будем вдаваться в детали.

- -

Он принимает два параметра — строку, которую вы хотите заменить, и строку, которую вы хотите вставить вместо заменяемой. Попробуйте этот пример:

- -
browserType.replace('moz','van');
- -

Обратите внимание, что для фактического получения обновленного значения, отраженного в переменной browserType в реальной программе, вам нужно будет установить значение переменной в результате операции; он не просто обновляет значение подстроки автоматически. Таким образом, вы должны были бы написать это: browserType = browserType.replace('moz','van');

- -

Активные примеры обучения

- -

В этом разделе мы дадим вам попробовать набить руку и вместе напишем код строковой манипуляции. В каждом упражнении ниже у нас есть массив строк и цикл, который обрабатывает каждое значение в массиве и отображает его в маркированном списке. Вам не нужно понимать массивы или циклы прямо сейчас — это будет объяснено в будущих статьях. Все, что вам нужно сделать в каждом случае, — написать код, который выводит строки в том формате, в котором мы предлагаем.

- -

В каждом примере есть кнопка Сбросить, которую вы можете использовать для сброса кода, если вы допустили ошибку и не можете заставить его работать снова, а кнопку Показать решение вы можете нажать, чтобы увидеть потенциальный ответ, если вы действительно застрянете на решении.

- -

Фильтрация приветственных сообщений

- -

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

- -
    -
  1. Сначала подумайте о том, как вы можете проверить, является ли сообщение в каждом случае рождественским сообщением. Какая строка присутствует во всех этих сообщениях и какой метод вы можете использовать для проверки?
  2. -
  3. Затем вам нужно будет написать условный тест операнд1 оператор операнд2. Соответствует ли результат слева результату справа? Или в этом случае вызов метода слева возвращает результат справа?
  4. -
  5. Подсказка. В этом случае, вероятно, полезнее проверить, не является ли часть строки не равной (!==) определенному результату.
  6. -
- - - -

{{ EmbedLiveSample('Playable_code', '100%', 590, "", "", "hide-codepen-jsfiddle") }}

- -

Исправление регистра (размера букв в тексте—прим. пер.)

- -

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

- -
    -
  1. Преобразуйте всю строку, содержащуюся в переменной input, в нижний регистр и сохраните ее в новой переменной.
  2. -
  3. Возьмите первую букву строки в этой новой переменной и сохраните ее в другой переменной.
  4. -
  5. Используя эту последнюю переменную в качестве подстроки, замените первую букву строчной строки первой буквой строчной строки, измененной на верхний регистр. Сохраните результат этой процедуры замены в другой новой переменной.
  6. -
  7. Измените значение переменной result на равную конечному результату (не input).
  8. -
- -
-

Примечание: Подсказка — параметры строковых методов не обязательно должны быть строковыми литералами; они также могут быть переменными или даже переменными с вызываемым ими методом.

-
- - - -

{{ EmbedLiveSample('Playable_code_2', '100%', 550, "", "", "hide-codepen-jsfiddle") }}

- -

Создание новых строк из старых частей

- -

В этом последнем упражнении массив содержит кучу строк, содержащих информацию о железнодорожных станциях на севере Англии. Строки представляют собой элементы данных, которые содержат трехбуквенный код станции, за которым следуют некоторые машиночитаемые данные, за которыми следует точка с запятой, а затем название станции, пригодное для чтения человеком. Например:

- -
MAN675847583748sjt567654;Manchester Piccadilly
- -

Мы хотим извлечь код станции и имя и поместить их в строку со следующей структурой:

- -
MAN: Manchester Piccadilly
- -

Мы бы рекоменовали реализовать это следующим образом:

- -
    -
  1. Извлеките трехбуквенный код станции и сохраните его в новой переменной.
  2. -
  3. Найдите номер символьного номера точки с запятой.
  4. -
  5. Извлеките название для чтения человеком, используя номер индекса точки с запятой в качестве контрольной точки и сохраните его в новой переменной.
  6. -
  7. Объедините две новые переменные и строковый литерал, чтобы сделать финальную строку.
  8. -
  9. Измените значение переменной result равной конечной строке (не input). 
  10. -
- - - -

{{ EmbedLiveSample('Playable_code_3', '100%', 585, "", "", "hide-codepen-jsfiddle") }}

- -

Заключение

- -

Нельзя не согласиться с тем, что способность обрабатывать слова и предложения в программировании очень важна — особенно в JavaScript, поскольку веб-сайты — все связаны с людьми. Эта статья дала вам основы, которые вам нужно знать о манипуляции строками на данный момент. Это пойдет вам на пользу, когда вы займётесь более сложными темами в будущем. Далее мы рассмотрим последний важный тип данных, на который нам нужно сосредоточиться в краткосрочной перспективе — массивы.

- -

{{PreviousMenuNext("Learn/JavaScript/Первые_шаги/Строки", "Learn/JavaScript/Первые_шаги/Arrays", "Learn/JavaScript/Первые_шаги")}}

- -

В этом модуле

- - diff --git "a/files/ru/learn/javascript/\320\277\320\265\321\200\320\262\321\213\320\265_\321\210\320\260\320\263\320\270/variables/index.html" "b/files/ru/learn/javascript/\320\277\320\265\321\200\320\262\321\213\320\265_\321\210\320\260\320\263\320\270/variables/index.html" deleted file mode 100644 index e1195effd5..0000000000 --- "a/files/ru/learn/javascript/\320\277\320\265\321\200\320\262\321\213\320\265_\321\210\320\260\320\263\320\270/variables/index.html" +++ /dev/null @@ -1,372 +0,0 @@ ---- -title: Переменные - место хранения необходимой информации -slug: Learn/JavaScript/Первые_шаги/Variables -translation_of: Learn/JavaScript/First_steps/Variables ---- -
{{LearnSidebar}}
- -
{{PreviousMenuNext("Learn/JavaScript/Первые_шаги/Что_пошло_не_так", "Learn/JavaScript/Первые_шаги/Math", "Learn/JavaScript/Первые_шаги")}}
- -

После прочтения последних двух статей вы знаете, что такое JavaScript, что он может сделать для вас, как использовать его вместе с другими веб-технологиями и какими он обладает функциями высокого уровня. В этой статье мы перейдем к реальным основам, рассмотрим, как работать с большинством базовых блоков JavaScript — Переменными.

- - - - - - - - - - - - -
Необходимые навыки:Базовая компьютерная грамотность, базовое понимание HTML и CSS, понимание того, что такое JavaScript.
Цель:Ознакомиться с основами переменных в JavaScript.
- -

Инструменты, которые вам нужны

- -

В этой статье вам будет предложено ввести строки кода, чтобы проверить ваше понимание материала. Если вы используете браузер для настольных компьютеров, лучшим примером для ввода кода примера является консоль JavaScript вашего браузера (см. What are browser developer tools для получения дополнительной информации о том, как получить доступ к этому инструменту).

- -

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

- -

Что такое переменные?

- -

Переменные — это контейнер для таких значений, как числа, используемые в сложении, или строка, которую мы могли бы использовать как часть предложения. Но одна из особенностей переменных — их значение может меняться. Давайте взглянем на простой пример:

- -
<button>Нажми на меня</button>
- -
const button = document.querySelector('button');
-
-button.onclick = function() {
-  let name = prompt('Как Вас зовут?');
-  alert('Привет ' + name + ', рады видеть Вас!');
-}
- -

{{ EmbedLiveSample('What_is_a_variable', '100%', 50, "", "", "hide-codepen-jsfiddle") }}

- -

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

- -

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

- -
var name = prompt('Как вас зовут?');
-
-if (name === 'Адам') {
-  alert('Привет, Адам, рады тебя видеть!');
-} else if (name === 'Алан') {
-  alert('Привет, Алан, рады тебя видеть!');
-} else if (name === 'Бэлла') {
-  alert('Привет, Бэлла, рады тебя видеть!');
-} else if (name === 'Бьянка') {
-  alert('Привет, Бьянка, рады тебя видеть!');
-} else if (name === 'Крис') {
-  alert('Привет, Крис, рады тебя видеть!');
-}
-
-// ... и так далее ...
- -

Вам сейчас не обязательно понимать синтаксис, который мы используем (пока!), но вы должны понять идею: если бы у нас не было доступных переменных, нам пришлось бы реализовать гигантский блок кода, который проверял, какое имя было введено, а затем отображал соответствующее сообщение для этого имени. Очевидно, что это неэффективно (код намного больше, даже для четырех вариантов), и он просто не сработает, так как вы не можете хранить все возможные варианты.

- -

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

- -

Еще одна особенность переменных заключается в том, что они могут содержать практически все, а не только строки и числа. Переменные могут также содержать сложные данные и даже целые функции. Об этом вы узнаете больше при дальнейшем изучении курса..

- -

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

- -

- -

Объявление переменной

- -

Чтобы использовать переменную, вы сначала должны ее создать, или, если быть точнее, объявить переменную. Чтобы сделать это, мы вводим ключевое слово var, за которым следует имя, которое вы хотите дать своей переменной:

- -
var myName;
-var myAge;
- -

Здесь мы создаем две переменные myName и myAge. Попробуйте ввести эти строки сейчас в консоли вашего веб-браузера или в консоли ниже (можно открыть эту консоль в отдельной вкладке или в новом окне). После этого попробуйте создать переменную (или две) с вашими именами.

- - - -

{{ EmbedLiveSample('Hidden_code', '100%', 300) }}

- -
-

Заметка: в JavaScript все инструкции кода должны заканчиваться точкой с запятой (;) - ваш код может работать правильно для отдельных строк, но, вероятно, не будет, когда вы пишете несколько строк кода вместе. Попытайтесь превратить написание точки с запятой в привычку.

-
- -

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

- -
myName;
-myAge;
- -

В настоящее время они не содержат значения, это пустые контейнеры. В этом случае, когда вы вводите имена переменных, вы должны получить значение  undefined . Если они не существуют, вы получите сообщение об ошибке - попробуйте сейчас ввести в консоли имя переменной ниже:

- -
scoobyDoo;
- -
-

Заметка: Не путайте переменную, которая существует, но не имеет значения, с переменной, которая вообще не существует - это разные вещи.

-
- -

Присвоение значения переменной

- -

Как только переменная объявлена, ей можно присвоить значение. Для этого пишется имя переменной, затем следует знак равенства (=), а за ним значение, которое вы хотите присвоить. Например:

- -
myName = 'Chris';
-myAge = 37;
- -

Попробуйте вернуться в консоль и ввести эти строки. Вы должны увидеть значение, которое вы назначили переменной, возвращаемой в консоли. Чтобы посмотреть значения переменных, нужно набрать их имя в консоли:

- -
myName;
-myAge;
- -

Вы можете объявить переменную и задать ей значение одновременно:

- -
var myName = 'Chris';
- -

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

- -
-

Заметка: Если вы пишете многострочную программу JavaScript, которая объявляет и инициализирует (задает значение) переменную, вы можете объявить ее после ее инициализации, и она все равно будет работать. Это связано с тем, что объявления переменных обычно выполняются первыми, прежде чем остальная часть кода будет выполнена. Это называется hoisting - прочитайте var hoisting для более подробной информации по этому вопросу.

-
- -

Обновление переменной

- -

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

- -
myName = 'Bob';
-myAge = 40;
- -

Правила именования переменных

- -

Вы можете назвать переменную как угодно, но есть ограничения. Как правило, вы должны придерживаться только латинских символов (0-9, a-z, A-Z) и символа подчеркивания.

- - - -
-

Заметка: По ссылке можно найти довольно полный список зарезервированных ключевых слов: Lexical grammar — keywords.

-
- -

Примеры хороших имен переменных:

- -
age
-myAge
-init
-initialColor
-finalOutputValue
-audio1
-audio2
-
- -

Примеры плохих имен переменных:

- -
1
-a
-_12
-myage
-MYAGE
-var
-Document
-skjfndskjfnbdskjfb
-thisisareallylongstupidvariablenameman
- -

Примеры имен переменных, которые вызовут ошибки:

- -
var
-Document
-
- -

Попытайтесь создать еще несколько переменных прямо сейчас, используя знания, изложенные выше.

- -

Типы переменных

- -

Есть несколько различных типов данных, которые мы можем хранить в переменных. В этом разделе мы кратко опишем их, а затем в будущих статьях вы узнаете о них более подробно.

- -

Числа (Numbers)

- -

Вы можете хранить числа в переменных (целые числа, такие как 30, или десятичные числа, такие как 2.456, также называемые числами с плавающей точкой или с плавающей запятой). Вам не нужно объявлять типы переменных в JavaScript, в отличие от некоторых других языков программирования Если давать переменной значение числа,кавычки не используются:

- -
var myAge = 17;
- -

Строки ('Strings')

- -

Строки - это фрагменты текста. Когда вы даете переменной значение строки, вам нужно обернуть ее в одиночные или двойные кавычки, в противном случае JavaScript попытается проиндексировать ее как другое имя переменной.

- -
var dolphinGoodbye = 'So long and thanks for all the fish';
- -

Логические (Booleans)

- -

Booleans - истинные / ложные значения - они могут иметь два значения: true или false. Они обычно используются для проверки состояния, после чего код запускается соответствующим образом. Вот простой пример:

- -
var iAmAlive = true;
- -

В действительности вы чаще будете использовать этот тип переменных так:

- -
var test = 6 < 3;
-
- -

Здесь используется оператор «меньше» (<), чтобы проверить, является ли 6 меньше 3. В данном примере, он вернет false, потому что 6 не меньше 3! В дальнейшем вы узнаете больше о таких операторах.

- -

Массивы (Arrays)

- -

Массив - это один объект, который содержит несколько значений, заключенных в квадратные скобки и разделенных запятыми. Попробуйте ввести следующие строки в консоль:

- -
var myNameArray = ['Chris', 'Bob', 'Jim'];
-var myNumberArray = [10,15,40];
- -

Как только эти массивы определены, можно получить доступ к каждому значению по их местоположению в массиве. Наберите следующие строки:

- -
myNameArray[0]; // should return 'Chris'
-myNumberArray[2]; // should return 40
- -

Квадратные скобки указывают значение индекса, соответствующее позиции возвращаемого значения. Возможно, вы заметили, что массивы в JavaScript индексируются с нулевой отметкой: первый элемент имеет индекс 0.

- -

В следующей статье вы узнаете больше о массивах.

- -

Объекты (Objects)

- -

В программировании объект представляет собой структуру кода, который моделирует объект реальной жизни. У вас может быть простой объект, представляющий автостоянку, и содержит информацию о её ширине и длине; или вы можете иметь объект, который представляет человека, и содержит данные о его имени, росте, весе, на каком языке он говорит, как сказать ему привет и многое другое.

- -

Попробуйте ввести следующую строку в консоль:

- -
var dog = { name : 'Spot', breed : 'Dalmatian' };
- -

Чтобы получить информацию, хранящуюся в объекте, вы можете использовать следующий синтаксис:

- -
dog.name
- -

Мы больше не будем рассматривать объекты в данном курсе - вы можете больше узнать о них в будущем модуле.

- -

Свободная типизация

- -

JavaScript - это «свободно типизируемый язык», что означает, что в отличие от некоторых других языков вам не нужно указывать, какой тип данных будет содержать переменная (например, числа, строки, массивы и т. д.).

- -

Например, если вы объявите переменную и присвоите ей значение, заключенное в кавычки, браузер будет обрабатывать переменную как строку:

- -
var myString = 'Привет';
- -

Он все равно будет строкой, даже если он содержит числа, поэтому будьте осторожны:

- -
var myNumber = '500'; // упс, это все еще строка (string)
-typeof(myNumber);
-myNumber = 500; // так-то лучше, теперь это число (number)
-typeof(myNumber);
- -

Попробуйте ввести четыре строки выше в консоль одну за другой и посмотреть результаты. Вы заметите, что мы используем специальную функцию typeof()  - она возвращает тип данных переменной, которую вы передаете в нее. В первый раз, когда она вызывается, она должа возвращать строку, так как переменная myNumber содержит строку '500'. Посмотрите, что она вернет во второй раз, когда вы ее вызовите.

- -

Подведение итогов

- -

К настоящему времени вы должны знать достаточно о переменных JavaScript и о том, как их создавать. В следующей статье мы остановимся на числах более подробно, рассмотрев, как сделать базовую математику в JavaScript.

- -

{{PreviousMenuNext("Learn/JavaScript/Первые_шаги/Что_пошло_не_так", "Learn/JavaScript/Первые_шаги/Math", "Learn/JavaScript/Первые_шаги")}}

diff --git "a/files/ru/learn/javascript/\320\277\320\265\321\200\320\262\321\213\320\265_\321\210\320\260\320\263\320\270/what_is_javascript/index.html" "b/files/ru/learn/javascript/\320\277\320\265\321\200\320\262\321\213\320\265_\321\210\320\260\320\263\320\270/what_is_javascript/index.html" deleted file mode 100644 index f34dac6902..0000000000 --- "a/files/ru/learn/javascript/\320\277\320\265\321\200\320\262\321\213\320\265_\321\210\320\260\320\263\320\270/what_is_javascript/index.html" +++ /dev/null @@ -1,339 +0,0 @@ ---- -title: Что такое JavaScript? -slug: Learn/JavaScript/Первые_шаги/What_is_JavaScript -translation_of: Learn/JavaScript/First_steps/What_is_JavaScript ---- -
{{LearnSidebar}}
- -
{{NextMenu("Learn/JavaScript/Первые_шаги/A_first_splash", "Learn/JavaScript/Первые_шаги")}}
- -

Добро пожаловать на курс MDN JavaScript для начинающих! В первой статье курса мы дадим базовое определение JavaScript, ответим на вопросы «Что такое JavaScript?» и «Что он делает?», узнаем как работает JavaScript и как добавить его на веб-страницу.

- - - - - - - - - - - - -
Необходимые навыки:Базовая компьютерная грамотность, знание основ HTML и CSS.
Цели:Знакомство с JavaScript и его возможностями, способами его подключения к веб-странице.
- -

Определение высокого уровня

- -

JavaScript это язык, который позволяет Вам применять сложные вещи на web странице — каждый раз, когда на web странице происходит что-то большее, чем просто её статичное отображение — отображение периодически обновляемого контента, или интерактивных карт, или анимация 2D/3D графики, или прокрутка видео в проигрывателе, и т.д. — можете быть уверены, что скорее всего, не обошлось без JavaScript. Это третий слой слоёного пирога стандартных web технологий, два из которых (HTML и CSS) мы детально раскрыли в других частях учебного пособия.

- -

- - - -

Три слоя прекрасно выстраиваются друг над другом. Возьмем простой текст для примера. Для придания структуры и смыслового назначения тексту, разметим его с помощью HTML:

- -
<p>Player 1: Chris</p>
- -

- -

Затем мы добавим немного CSS, что бы это выглядело симпатичнее:

- -
p {
-  font-family: 'helvetica neue', helvetica, sans-serif;
-  letter-spacing: 1px;
-  text-transform: uppercase;
-  text-align: center;
-  border: 2px solid rgba(0,0,200,0.6);
-  background: rgba(0,0,200,0.3);
-  color: rgba(0,0,200,0.6);
-  box-shadow: 1px 1px 2px rgba(0,0,200,0.4);
-  border-radius: 10px;
-  padding: 3px 10px;
-  display: inline-block;
-  cursor:pointer;
-}
- -

- -

И наконец, добавим немного JavaScript для придания динамического поведения:

- -
const para = document.querySelector('p');
-
-para.addEventListener('click', updateName);
-
-function updateName() {
-  let name = prompt('Enter a new name');
-  para.textContent = 'Player 1: ' + name;
-}
- -

{{ EmbedLiveSample('Определение_высокого_уровня', '100%', 80) }}

- -

Попробуйте кликнуть по тексту чтобы увидеть, что произойдет (Вы так же можете найти это демо на GitHub — смотрите исходный код, или запустите вживую)!

- -

JavaScript может делать намного больше — давайте выясним это более детально.

- -

Так что же он действительно может делать?

- -

Ядро языка JavaScript состоит из некоторого количества обычных возможностей, которые позволяют делать следующее:

- - - -

Еще более увлекательным является функциональность, созданная поверх основного языка JavaScript. Так называемые интерфейсы прикладного программирования (API) предоставляют вам дополнительные сверхспособности для использования в вашем коде JavaScript.

- -

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

- -

Они обычно делятся на две категории.

- -

- -

API-интерфейсы браузера встроены в ваш веб-браузер и могут отображать данные из окружающего компьютерного окружения или делать полезные сложные вещи. Например:    

- - - -
-

Заметка: Большинство наших демо не будут корректно работать в старых браузерах — поэтому будет хорошей идеей,  для запуска вашего кода установить один из современных браузеров , таких как Firefox, Chrome, Edge или Opera . Также понадобится более подробно рассмотреть раздел по кроссбраузерному тестированию, когда вы приблизитесь к разработке производственного кода (т.е реального кода, который будут использовать клиенты).

-
- -

По умолчанию сторонние API-интерфейсы  не встроены в браузер, и вам придётся захватывать их код и информацию из какого-либо места в Сети. Для примера: 

- - - -
-

Заметка: Эти API-и являются продвинутыми, и мы не будем их рассматривать в нашем курсе, но ссылки, данные выше, предлагают полную документацию, если вы заинтересованы в более подробной информации.

-
- -

Доступно еще больше! Но пока не заостряйте на этом внимание. Вы не сможете создать следующий Facebook, Google Maps или Instagram после 24 часов изучения JavaScript — сначала нужно изучить основы. И именно для этого вы здесь — давайте двигаться дальше!

- -

Что JavaScript делает на вашей странице?

- -

В этой главе мы рассмотрим код и увидим что же действительно происходит, когда на странице запускается JavaScript.

- -

Давайте составим краткий бриф, что же происхоит когда мы загружаем страничку в браузере (первое упоминание в статье Как работает CSS). Когда вы загружаете страничку в браузере, вы запускаете ваш код (HTML, CSS и JavaScript) внутри исполняемой среды (внутри вкладки браузера). Это как будто фабрика берет сырьё (некий код) и выдает продукцию (веб-страничку).

- -

- -

Код JavaScript выполняется JavaScript-движком браузера, после того как код HTML и CSS был обработан и сформирован в веб-страницу. Это гарантирует, что структура и стиль страницы уже сформированы к моменту запуска JavaScript.

- -

Это хорошо, так как часто использование JavaScript заключается в динамическом изменении HTML и CSS в целях обновления пользовательского интерфейса посредством Document Object Model API (как упоминалось выше). Если бы запуск JavaScript осуществлялся прежде загрузки HTML и CSS, то это привело бы к возникновению ошибок.  

- -

Безопасность браузера

- -

Каждая вкладка браузера представляет собой отдельную коробку для запуска кода (в техническом языке, эти коробки называются "средами исполнения") — это значит, что в большинстве случаев код на каждой вкладке запускается полностью отдельно, а код одной вкладки не может напрямую влиять на код другой вкладки или на другом веб-сайте. Это хорошая мера безопасности — если бы это было иначе, пираты могли написать код, который крал информацию с других сайтов или делал другие плохие вещи.

- -
-

Заметка: Есть способы отправлять код и данные между разными веб-сайтами/вкладками безопасным способом, но это продвинутые методы, которые мы не будем рассматривать в рамках этого курса.

-
- -

Последовательность выполнения JavaScript

- -

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

- -
const para = document.querySelector('p');
-
-para.addEventListener('click', updateName);
-
-function updateName() {
-  let name = prompt('Enter a new name');
-  para.textContent = 'Player 1: ' + name;
-}
- -

Здесь мы выбираем абзац текста (строка 1), а затем добавляем к нему обнаружение событий (строка 3), чтобы при нажатии на этот абзац выполнялся блок кода updateName() (строки 5–8). Блок кода updateName() (эти типы многократно используемых блоков кода называются "функции") запрашивает у пользователя новое имя, а затем вставляет это имя в абзац для обновления отображения.

- -

Если вы поменяете порядок первых двух строк кода, он перестанет работать — вместо этого вы получите ошибку возвращаемую в консоль браузераTypeError: para is undefined. Это значит, что объект para еще не существует и вы не можете добавить к нему обнаружение событий.

- -
-

Заметка: Это очень частая ошибка — вы должны быть осторожны, чтобы объекты, на которые ссылается ваш код, существовали до того, как вы попытаетесь что-то с ними сделать.

-
- -

Интерпретируемый против компилируемого кода

- -

В контексте программирования, вы можете услышать термины интерпретация и компиляция. JavaScript является интерпретируемым языком — код запускается сверху вниз и результат запуска немедленно возвращается. Вам не нужно преобразовывать код в другую форму, перед запуском в браузере.

- -

С другой стороны, компилируемые языки преобразуются (компилируются) в другую форму, прежде чем они будут запущены компьютером. Например, C / C ++ компилируются в язык ассемблера, который затем запускается компьютером.

- -

Оба подхода имеют разные преимущества, которые на данном этапе мы обсуждать не будем.

- -

Серверный против клиентского кода

- -

Вы так же можете услышать термины серверный и клиентский код, особенно в контексте веб-разработки. Клиентский код — это код, который запускается на компьютере пользователя. При просмотре веб-страницы, клиентский код загружается, а затем запускается и отображается браузером. В этом модуле JavaScript мы явно говорим о клиентском JavaScript.

- -

С другой стороны, серверный код запускается на сервере, затем его результаты загружаются и отображаются в браузере. Примеры популярных серверных веб-языков включают PHP, Python, Ruby и ASP.NET. И JavaScript! JavaScript так же может использоваться, как серверный язык, например в популярной среде Node.js — вы можете больше узнать о серверном JavaScript в нашем разделе Dynamic Websites – Server-side programming.

- -

Слово динамический используется для описания и клиентского JavaScript, и серверного языка — это относится к возможности обновления отображения веб-страницы/приложения, чтобы показывать разные вещи в разных обстоятельствах, генерируя новый контент по мере необходимости. Серверный код динамически генерирует новый контент на сервере, например достает данные из базы данных, тогда как клиентский JavaScript динамически генерирует новое содержание внутри браузера на клиенте, например создает новую HTML таблицу, вставляя в нее данные полученные с сервера, затем отображает таблицу на веб-странице, которую видит пользователь. В этих двух контекстах значение немного отличается, но связано, и обычно оба подхода (серверный и клиентский) работают вместе.

- -

Веб-страница без динамического обновления контента называется статической — она просто показывает один и тотже контент все время.

- -

Как добавить JavaScript на вашу страницу?

- -

JavaScript применяется к вашей HTML странице точно так же, как CSS. И если CSS использует элементы {{htmlelement("link")}} для внешних стилей и {{htmlelement("style")}} для встроеных в HTML, то для JavaScript нужен только один друг в HTML мире — элемент {{htmlelement("script")}}. Давайте узнаем, как это работает.

- -

Внутренний JavaScript

- -
    -
  1. Сначала, сделайте локальную копию нашего файла-примера apply-javascript.html. Сохраните его в удобное для вас место.
  2. -
  3. Откройте этот файл в вашем браузере и в вашем текстовом редакторе. Вы увидите, что HTML создает простую веб-страницу с активной кнопкой.
  4. -
  5. Затем, перейдите в текстовый редактор и добавьте следующие строки перед закрывающим тегом </head>: -
    <script>
    -
    -  // здесь будет JavaScript
    -
    -</script>
    -
  6. -
  7. Теперь добавим JavaScript внутрь элемента {{htmlelement("script")}}, чтобы сделать страницу более интересной — добавьте следующий код ниже строки "// здесь будет JavaScript": -
    document.addEventListener("DOMContentLoaded", function() {
    -  function createParagraph() {
    -    let para = document.createElement('p');
    -    para.textContent = 'You clicked the button!';
    -    document.body.appendChild(para);
    -  }
    -
    -  const buttons = document.querySelectorAll('button');
    -
    -  for(let i = 0; i < buttons.length ; i++) {
    -    buttons[i].addEventListener('click', createParagraph);
    -  }
    -});
    -
  8. -
  9. Сохраните файл и обновите страницу в браузере — теперь вы должны увидеть, что при нажатии на кнопку создается новый абзац и помещается ниже.
  10. -
- -
-

Заметка: Если ваш пример не работает, пройдите еще раз все шаги и проверьте, сделали ли вы все правильно. Сохранили ли вы вашу локальную копию начального кода, как .html файл? Добавили ли ваш {{htmlelement("script")}} элемент после тэга </body>? Ввели ли вы JavaScript именно так, как показано? JavaScript регистрозависимый, и очень привередливый. Поэтому вам нужно вводить синтаксис именно так, как показано, в противном случае оно может не работать.

-
- -
-

Заметка: Вы можете увидеть эту версию на GitHub-е как apply-javascript-internal.html (посмотреть вживую).

-
- -

Внешний JavaScript

- -

Это отлично работает, но что если мы хотим поместить наш JavaScript в отдельный файл? Давайте сейчас разберемся с этим.

- -
    -
  1. Сначала, создайте новый файл в той же папке, что и ваш файл-пример HTML. Назовите его script.js — убедитесь, что у имени файла расширение .js, так как оно распознается, как JavaScript.
  2. -
  3. Замените ваше текущий элемент {{htmlelement("script")}} на следующий: -
    <script src="script.js" defer></script>
    -
  4. -
  5. Внутри script.js добавьте следующий скрипт: -
    function createParagraph() {
    -  let para = document.createElement('p');
    -  para.textContent = 'You clicked the button!';
    -  document.body.appendChild(para);
    -}
    -
    -const buttons = document.querySelectorAll('button');
    -
    -for(let i = 0; i < buttons.length ; i++) {
    -  buttons[i].addEventListener('click', createParagraph);
    -}
    -
  6. -
  7. Сохраните и обновите страницу в браузере, и вы увидите то же самое! Все работает точно так же, но теперь у нас есть JavaScript во внешнем файле. Это, как правило, хорошо с точки зрения организации кода и его повторного использования в нескольких HTML файлах. Кроме того, HTML легче читать без огромных кусков кода, который скапливается в нем.
  8. -
- -
-

Заметка: Вы можете увидеть эту версию на GitHub-е как apply-javascript-external.html и script.js (посмотреть вживую).

-
- -

Инлайновые JavaScript обработчики

- -

Обратите внимание, что иногда можно столкнуться с частями JavaScript кода, который живет внутри HTML. Это может выглядеть примерно так:

- -
-
function createParagraph() {
-  var para = document.createElement('p');
-  para.textContent = 'You clicked the button!';
-  document.body.appendChild(para);
-}
- -
<button onclick="createParagraph()">Click me!</button>
-
- -

Вы можете попробовать эту версию в нашей демонстрации ниже:

- -

{{ EmbedLiveSample('Inline_JavaScript_handlers', '100%', 150) }}

- -

Эта демонстрация имеет те же функциональные возможности, что и в предыдущих двух разделах, за исключением того, что элемент {{htmlelement("button")}} содержит встроенный обработчик onclick, который запускает функцию при нажатии кнопки.

- -

Но пожалуйста, не делайте этого. Это плохая практика — загрязнять ваш HTML кодом JavaScript, и она не эффективна — вам нужно будет добавить атрибут onclick="createParagraph()" к каждой кнопке, к которой вы хотите подключить JavaScript.

- -

Использование чистой JavaScript конструкции, позволит вам выбрать все кнопки, используя одну команду. Код, который можно использовали для этой цели, выглядит следующим образом:

- -
const buttons = document.querySelectorAll('button');
-
-for(let i = 0; i < buttons.length ; i++) {
-  buttons[i].addEventListener('click', createParagraph);
-}
- -

Это может выглядеть немного длиннее, чем атрибут onclick, но это будет работать для всех кнопок, независимо от того, сколько их на странице, и сколько их удалят или добавят. JavaScript менять не нужно.

- -
-

Заметка: Попробуйте отредактировать вашу версию apply-javascript.html и добавить еще несколько кнопок в файл. После перезагрузки вы должны увидеть, что все кнопки создают параграф, если кликнуть на них. Классно, да?

-
- -

Стратегии загрузки скриптов

- -

Существует ряд проблем, связанных с загрузкой скриптов в нужное время. Всё не так просто, как кажется! Распространённой проблемой является то, что весь HTML-код на странице загружается в том порядке, в котором отображается. Если вы используете JavaScript для манипуляции элементами на странице (или, точнее, в DOM – Объектной Модели Документа), ваш код не будет работать, если JavaScript-код загрузится и распознается раньше HTML-кода, с которым вы пытаетесь взаимодействовать.

- -

Комментарии

- -

Так же, как и в HTML и CSS, возможно писать комментарии в вашем JavaScript коде, что будет проигнорировано браузером, и существует только для того, чтобы давать подсказки вашим друзьям-разработчикам о том, как работает код (и лично вам, если вы вернетесь к коду спустя 6 месяцев и не сможете вспомнить, что вы делали). Комментарии очень полезны, и вы должны часто их использовать, особенно для больших приложений. Вот два типа комментариев:

- - - -

Так, например, мы можем описать наш последний демо-пример JavaScript подобными комментариями:

- -
// Функция: создает новый параграф и добавляет его вниз тела HTML.
-
-function createParagraph() {
-  var para = document.createElement('p');
-  para.textContent = 'You clicked the button!';
-  document.body.appendChild(para);
-}
-
-/*
-  1. Получаем ссылки на все кнопки на странице в виде массива.
-  2. Перебераем все кнопки и добавляем к ним отслеживатель события нажатия.
-
-  При нажатии любой кнопки, будет выполняться функция createParagraph().
-*/
-
-var buttons = document.querySelectorAll('button');
-
-for (var i = 0; i < buttons.length ; i++) {
-  buttons[i].addEventListener('click', createParagraph);
-}
- -

Выводы

- -

Поздравляем, вы сделали ваш первый шаг в мир JavaScript. Мы начали всего-лишь с теории, чтобы вы привыкли к тому, что вы будете использовать JavaScript, и что именно вы можете делать с его помощью. На этом пути вы увидели несколько примеров кода и выучили, как JavaScript вписывается в остальной код на вашем сайте среди всего прочего.

- -

JavaScript может показаться немного пугающим в данным момент, но не переживайте - в этом курсе мы проведем вас сквозь него простыми шагами, которые имеют смысл, забегая наперед. В следующей главе мы погрузимся непосредственно в практику, подталкивая вас погрузиться в код и сделать ваши собственные примеры JavaScript.

- -

{{NextMenu("Learn/JavaScript/Первые_шаги/A_first_splash", "Learn/JavaScript/Первые_шаги")}}

diff --git "a/files/ru/learn/javascript/\320\277\320\265\321\200\320\262\321\213\320\265_\321\210\320\260\320\263\320\270/\321\201\320\276\320\267\320\264\320\260\321\202\320\265\320\273\321\214_\320\263\320\273\321\203\321\213\321\205_\320\270\321\201\321\202\320\276\321\200\320\270\320\271/index.html" "b/files/ru/learn/javascript/\320\277\320\265\321\200\320\262\321\213\320\265_\321\210\320\260\320\263\320\270/\321\201\320\276\320\267\320\264\320\260\321\202\320\265\320\273\321\214_\320\263\320\273\321\203\321\213\321\205_\320\270\321\201\321\202\320\276\321\200\320\270\320\271/index.html" deleted file mode 100644 index 139e478847..0000000000 --- "a/files/ru/learn/javascript/\320\277\320\265\321\200\320\262\321\213\320\265_\321\210\320\260\320\263\320\270/\321\201\320\276\320\267\320\264\320\260\321\202\320\265\320\273\321\214_\320\263\320\273\321\203\321\213\321\205_\320\270\321\201\321\202\320\276\321\200\320\270\320\271/index.html" +++ /dev/null @@ -1,148 +0,0 @@ ---- -title: Генератор глупых историй -slug: Learn/JavaScript/Первые_шаги/Создатель_глуых_историй -tags: - - JavaScript - - Задание - - Изучение - - Испытание - - Массивы - - НаписаниеКода - - НачальныйУровень - - Операторы - - Переменные - - Проверка - - Числа -translation_of: Learn/JavaScript/First_steps/Silly_story_generator ---- -
{{LearnSidebar}}
- -
{{PreviousMenu("Learn/JavaScript/Первые_шаги/Arrays", "Learn/JavaScript/Первые_шаги")}}
- -

В этом испытании вам будет нужно, используя знания, полученные в статьях этого модуля, применить их для создания забавного приложения, создающего случайные глупые истории. Удачно повеселиться!

- - - - - - - - - - - - -
Требования:Перед началом выполнения этого испытания вам следует проработать все статьи в этом модуле.
Задача:Протестировать понимание основ языка JavaScript, таких как переменные, числа, операторы, строки и массивы.
- -

Начальная точка

- -

Для начала испытания вам следует:

- - - -
-

Замечание:  Так же вы можете использовать такие сайты как  JSBin или Thimble для выполнения вашего испытания. Вы можете вставить HTML, CSS и JavaScript в один из этих онлайн редакторов. Если онлайн редактор, который вы используете, не имеет отдельного окна для JavaScript - не стесняйтесь вставить все скрипты в <script> элемент внутри  HTML страницы.

-
- -

Краткое описание проекта

- -

Вам предоставили некоторый необработанный HTML/CSS, несколько текстовых строк и функций JavaScript; вам необходимо написать необходимый JavaScript код, чтобы превратить это в рабочую программу, которая выполняет следующие действия:

- - - -

Следующий скриншот показывает пример того, что должна выводить законченная программа:

- -

- -

Чтобы вы больше поняли идею опробуйте готовый пример (не заглядывая в исходный код!)

- -

Шаги к цели

- -

Следующие разделы описывают, что вам нужно будет сделать.

- -

Начальная подготовка:

- -
    -
  1. Создайте новый файл под названием main.js в той же папке, что и index.html.
  2. -
  3. Подключите данный JavaScript документ в ваш HTML файл с помощью {{htmlelement("script")}} элемента привязки main.js. Разместите его прямо перед закрывающимся </body> тегом.
  4. -
- -

Задайте переменные и функции:

- -
    -
  1. В исходном текстовом документе скопируйте весь код под заголовком "1. COMPLETE VARIABLE AND FUNCTION DEFINITIONS" и вставьте в начало файла main.js. Это даст вам три переменные, ссылающиеся на текстовое поле "Enter custom name" (customName),  кнопку "Generate random story" (randomize), и элемент снизу HTML страницы, куда будет помещена сама история {{htmlelement("p")}} (story), соответственно. Также у вас должна быть функцияrandomValueFromArray(), котрая принимает массив и случайным образом возвращает оттуда один из элементов.
  2. -
  3. Теперь взгляните на второй параграф исходного документа — "2. RAW TEXT STRINGS". Он содержит строки текста, которые будут использоваться как входные данные вашей программы. Вам следует поместить их внутрь переменных в файле main.js: -
      -
    1. Сохраните первую большую строку текста в переменную storyText.
    2. -
    3. Сохраните первый блок из трех строк как массив, назвав его insertX.
    4. -
    5. Сохраните второй блок из трех строк как массив, назвав его insertY.
    6. -
    7. Сохраните третий блок из трех строк как массив, назвав его insertZ.
    8. -
    -
  4. -
- -

Создание обработчика событий и неполной функции:

- -
    -
  1. Теперь возвращаемся к исходному текстовому файлу.
  2. -
  3. Скопируйте код под заголовком "3. EVENT LISTENER AND PARTIAL FUNCTION DEFINITION" и вставте его в конец файла main.js. Это: -
      -
    • Добавит обработчик события кликанья в переменную randomize,  Так что, когда кнопка будет нажата -  функция result() запустится.
    • -
    • Добавляет в код частично завершенную функцию result(). В течении оставшейся части испытания вам предстоит, заполняя строчки внутри этой функции, завершить ее и заставить работать должным образом.
    • -
    -
  4. -
- -

Завершение функции result():

- -
    -
  1. Создайте новую переменную newStory и установите ее значение равным storyText. Это необходимо, чтобы мы могли создавать новую случайную историю каждый раз, когда нажимается кнопка, и функция запускается. Если бы мы внесли изменения непосредственно в storyText, мы могли бы генерировать новую историю только один раз.
  2. -
  3. Создайте три новые переменные, называемые xItem, yItem и zItem, и сделайте их равными результату вызова randomValueFromArray() на трех ваших массивах (результат в каждом случае будет случайным элементом из каждого массива, на который он вызывается). Например, вы можете вызвать функцию и получить ее, чтобы вернуть одну случайную строку из insertX, записав randomValueFromArray (insertX).
  4. -
  5. Затем мы хотим заменить три заполнителя строки newStory - :insertx:, :inserty :  и :insertz: - со строками, хранящимися в xItem, yItem и zItem. Здесь вам поможет определенный строковый метод - в каждом случае сделать вызов метода равным newStory, при этом каждый раз, когда он вызывается, newStory делается равным самому себе, но с выполненными заменами. Поэтому каждый раз, когда нажимается кнопка, эти заполнители заменяются случайной строкой. Подсказка: рассматриваемый метод заменяет только первый экземпляр найденной подстроки, поэтому вам, возможно, придется сделать один из вызовов дважды.
  6. -
  7. Внутри первого блока if добавьте другой метод замены строки, чтобы заменить имя «Боб», найденное в строке newStory, с помощью переменной name. В этом блоке мы говорим: «Если значение введено в текстовый ввод customName, замените Боба в истории этим пользовательским именем».
  8. -
  9. Внутри второго блока if мы проверяем, была ли выбрана радиокнопка uk. Если это так, мы хотим преобразовать значения веса и температуры в историю из фунтов и Фаренгейта в метры и по Цельсию. Что вам нужно сделать, так это: -
      -
    1. Посмотрите формулу преобразования фунтов в стоуны и Фаренгейта в по Цельсию.
    2. -
    3. Внутри линии, которая определяет weight переменную, замените 300 на расчет, который преобразует 300 фунтов в стоуны. Добавьте 'stone' в конце результата общего вызова Math.round().
    4. -
    5. Внутри линии, определяющей temperature переменную, замените 94 на расчет, который преобразует 94 градуса по Фаренгейту в по Цельсию. Добавьте 'centigrade' в конце результата общего вызова Math.round().
    6. -
    7. Просто под двумя определениями переменных добавьте еще две строки замены строк, которые заменяют «94 farenheit» на содержимое переменной temperature и«300  pounds» на содержимое weight переменной.
    8. -
    -
  10. -
  11. Наконец, в предпоследней строке функции сделайте свойство textContent переменной story (которая ссылается на абзац) равным newStory.
  12. -
- -

Советы и подсказки

- - - -

Оценка и помощь

- -

Если вы хотите, чтобы ваша работа была оценена, или застряли и хотите обратиться за помощью:

- -
    -
  1. Разместите свою работу в онлайн-редакторе, таком как CodePen, jsFiddle или Glitch.
  2. -
  3. Напишите сообщение с просьбой об оценке и / или помощи на форуме MDN Discourse. Добавьте тег «learning» к своему сообщению, чтобы мы могли легче его найти. Ваш пост должен включать: -
      -
    • Описательное название, такое как «Требуется оценка для генератора глупых историй».
    • -
    • Подробная информация о том, что вы хотели бы, чтобы мы делали, например, что вы уже пробовали, если вы застряли и нуждаетесь в помощи.
    • -
    • Ссылка на пример, который вы хотите оценить или нуждаетесь в помощи, в онлайн-редакторе. Это хорошая практика - очень сложно помочь кому-то с проблемой кодирования, если вы не видите его код.
    • -
    • Ссылка на актуальную задачу или страницу оценки, чтобы мы могли найти вопрос, с которым вы хотите помочь.
    • -
    -
  4. -
- -

{{PreviousMenu("Learn/JavaScript/Первые_шаги/Arrays", "Learn/JavaScript/Первые_шаги")}}

diff --git "a/files/ru/learn/javascript/\320\277\320\265\321\200\320\262\321\213\320\265_\321\210\320\260\320\263\320\270/\321\201\321\202\321\200\320\276\320\272\320\270/index.html" "b/files/ru/learn/javascript/\320\277\320\265\321\200\320\262\321\213\320\265_\321\210\320\260\320\263\320\270/\321\201\321\202\321\200\320\276\320\272\320\270/index.html" deleted file mode 100644 index 583e29182e..0000000000 --- "a/files/ru/learn/javascript/\320\277\320\265\321\200\320\262\321\213\320\265_\321\210\320\260\320\263\320\270/\321\201\321\202\321\200\320\276\320\272\320\270/index.html" +++ /dev/null @@ -1,284 +0,0 @@ ---- -title: Работа с текстом — строки в JavaScript -slug: Learn/JavaScript/Первые_шаги/Строки -translation_of: Learn/JavaScript/First_steps/Strings ---- -
{{LearnSidebar}}
- -
{{PreviousMenuNext("Learn/JavaScript/Первые_шаги/Math", "Learn/JavaScript/Первые_шаги/Useful_string_methods", "Learn/JavaScript/Первые_шаги")}}
- -

Теперь мы обратим внимание на строки — в программировании так называют части текста. В этой статье мы рассмотрим все распростанённые вещи, которые вы должны действительно знать о строках при изучении JavaScript, например, создание строк, экранирование кавычек в строках и объединение строк вместе.

- - - - - - - - - - - - -
Необходимые навыки:Базовая компьютерная грамотность, базовое понимание HTML и CSS, понимание что такое JavaScript.
Цель:Знакомство с основами строк в JavaScript.
- -

Сила слов

- -

Слова очень важны для людей это основа нашего общения. Интернет представляет собой преимущественно текстовую среду, предназначенную для того что бы люди общались и делились информацией, поэтому нам полезно иметь контроль над словами, которые появляются в нем. {{glossary ("HTML")}} предоставляет визуальную и смысловую структуру для нашего текста, {{glossary ("CSS")}} позволяет нам стилизовать его, а JavaScript содержит ряд функций для управления строками, создания пользовательских приветственных сообщений, при необходимости отображая нужные текстовые метки, сортируя элементы в желаемом порядке и многое другое.

- -

Практически во всех программах, которые мы показали вам на данный момент,  были задействованы некоторые манипуляции со строками.

- -

Строки — основы

- -

С первого взгляда строки обрабатываются аналогично числам, но если копнуть глубже, вы увидите некоторые заметные отличия. Давайте начнем с ввода некоторых основных строк в консоль, чтобы ознакомиться с ними. Мы предоставили одну ниже (вы также можете открыть эту консоль в отдельной вкладке или окне или использовать консоль разработчика браузера, если хотите).

- - - -

{{ EmbedLiveSample('Hidden_code', '100%', 300) }}

- -

Создание строки

- -
    -
  1. Для начала введите следующие строки: -
    var string = 'The revolution will not be televised.';
    -string;
    -
  2. -
  3. Как и в случае с числами, мы объявляем переменную, инициализируя ее строковым значением, а затем возвращаем значение. Единственное различие здесь в том, что при написании строки вам нужно окружить значение кавычками. 
  4. -
  5. Если вы не сделаете этого или пропустите одну из кавычек, вы получите сообщение об ошибке. Попробуйте ввести следующие строки: -
    var badString = This is a test;
    -var badString = 'This is a test;
    -var badString = This is a test';
    - Эти строки не работают, потому что любая текстовая строка без кавычек считается именем переменной, именем свойства, зарезервированным словом или чем-то подобным. Если браузер не может найти его, возникает ошибка (например, «missing, before statement»). Если браузер может видеть, где начинается строка, но не может найти конец строки, как указано во 2-й строке, она жалуется на ошибку (с «unterminated string literal»). Если ваша программа выявляет такие ошибки, вернитесь назад и проверьте все свои строки, чтобы убедиться, что у вас нет пропущенных кавычек.
  6. -
  7. Следующий код будет выполнен только в том случае, если ранее была объявлена переменная string — убедитесь сами: -
    var badString = string;
    -badString;
    - В настоящее время строка badString имеет то же значение, что и строка string.
  8. -
- -

Одиночные кавычки vs. Двойные кавычки

- -
    -
  1. В JavaScript вы можете выбрать одинарные кавычки или двойные кавычки, чтобы обернуть ваши строки. Оба варианта будут работать нормально: -
    var sgl = 'Single quotes.';
    -var dbl = "Double quotes";
    -sgl;
    -dbl;
    -
  2. -
  3. Существует очень мало различий между одиночными и двойными кавычками, и решение какие из них использовать в коде остается на ваше усмотрение. Однако вы должны выбрать один вариант и придерживаться его, иначе ваш код может выдать ошибку, особенно если вы используете разные кавычки в одной строке! Ниже приведен пример: -
    var badQuotes = 'What on earth?";
    -
  4. -
  5. Браузер будет считать, что строка не была закрыта, потому что в строке может появиться другой тип цитаты, который вы не используете, чтобы хранить ваши строки в переменных. Из примера можно понять, о чем идет речь (в коде ошибок нет): -
    var sglDbl = 'Would you eat a "fish supper"?';
    -var dblSgl = "I'm feeling blue.";
    -sglDbl;
    -dblSgl;
    -
  6. -
  7. Однако вы не можете включить один и тот же знак кавычки внутри строки, если он используется для их хранения. Ниже приведена ошибка, браузер ошибочно определяет место, где строка кончается: -
    var bigmouth = 'I've got no right to take my place...';
    - Что приводит нас к следующей теме.
  8. -
- -

Экранирование кавычек в строках

- -

Чтобы исправить нашу предыдущую строку кода, нам нужно дать понять браузеру, что кавычка в середине строки не является меткой ее конца. Экранирование символов означает, что мы делаем что-то с ними, чтобы убедиться, что они распознаются как текст, а не часть кода. В JavaScript мы делаем это, помещая обратную косую черту непосредственно перед символом. Введите эти строки:

- -
var bigmouth = 'I\'ve got no right to take my place...';
-bigmouth;
- -

Так лучше. Таким же образом можно экранировать и другие символы, например "\. Кроме того существуют специальные коды. Для дополнительной информации см. Escape notation.

- -

Конкатенация строк

- -
    -
  1. Конкатенация — это новомодное программистское слово, которое означает «объединить». Объединение строк в JavaScript использует оператор плюс (+), тот же, который мы используем для сложения чисел, но в этом контексте он делает кое-что другое. Попробуем пример в нашей консоли.
  2. -
  3. -
    var one = 'Hello, ';
    -var two = 'how are you?';
    -var joined = one + two;
    -joined;
    - Результат этой программы - это переменная joined, содержащая значение "Hello, how are you?".
  4. -
  5. В последнем случае мы просто объединим две строки вместе, но на самом деле, вы можете объединить столько строк, сколько хотите, до тех пор, пока вы ставите + между ними. Попробуйте это: -
    var multiple = one + one + one + one + two;
    -multiple;
    -
  6. -
  7. Вы также можете использовать сочетание переменных и фактических строк. Попробуйте это: -
    var response = one + 'I am fine — ' + two;
    -response;
    -
  8. -
- -
-

Примечание: Когда вы вводите фактическую строку в свой код, заключенную в одинарные или двойные кавычки, она называется строковым литералом.

-
- -

Конкатенация строк в контексте

- -

Давайте посмотрим на конкатенацию строк в действии — вот пример из предыдущего курса:

- -
<button>Press me</button>
- -
var button = document.querySelector('button');
-
-button.onclick = function() {
-  var name = prompt('What is your name?');
-  alert('Hello ' + name + ', nice to see you!');
-}
- -

{{ EmbedLiveSample('Concatenation_in_context', '100%', 50) }}

- -

Здесь мы используем функцию {{domxref ("Window.prompt ()", "Window.prompt ()")}} в строке 4, которая просит пользователя ответить на вопрос через всплывающее диалоговое окно, а затем сохраняет введенный текст внутри заданной переменной — в этом случае name. Затем мы используем функцию {{domxref ("Window.alert ()", "Window.alert ()")}} в строке 5 для отображения другого всплывающего окна, содержащего строку, которую мы собрали из двух строковых литералов и переменной name.

- -

Числа vs. строки

- -
    -
  1. Итак, что происходит, когда мы пытаемся добавить (или конкатенировать) строку и число? Попробуем это в нашей консоли: -
    'Front ' + 242;
    -
    - Вы можете ожидать, что это вызовет ошибку, но все работает отлично. Попытка представить строку как число на самом деле не имеет смысла, но число как строку — имеет, поэтому браузер довольно умно преобразует число в строку и объединяет две строки вместе.
  2. -
  3. Вы даже можете сделать это с двумя числами, вы можете заставить число стать строкой, обернув ее в кавычки. Попробуйте следующее (мы используем оператор typeof для того, чтобы установить является ли переменная числом или строкой): -
    var myDate = '19' + '67';
    -typeof myDate;
    -
  4. -
  5. Если у вас есть числовая переменная, которую вы хотите преобразовать в строчную без внесения каких-либо иных изменений или строковую переменную, которую вы хотите преобразовать в число, вы можете использовать следующие две конструкции: -
      -
    • Объект {{jsxref ("Number")}} преобразует всё переданное в него в число, если это возможно. Попробуйте следующее: -
      var myString = '123';
      -var myNum = Number(myString);
      -typeof myNum;
      -
    • -
    • С другой стороны, каждое число имеет метод, называемый toString(), который преобразует его в эквивалентную строку. Попробуй это: -
      var myNum = 123;
      -var myString = myNum.toString();
      -typeof myString;
      -
    • -
    - Эти конструкции могут быть действительно полезны в некоторых ситуациях. Например, если пользователь вводит число в текстовое поле формы, данные будут распознаны как строка. Однако, если вы хотите добавить это число к чему-то, вам понадобится его значение, поэтому вы можете передать его через Number(), чтобы справиться с этим. Именно это мы сделали в нашей Number Guessing Game,  в строке 61.
  6. -
- -

Заключение

- -

Итак, это основы строк, используемых в JavaScript. В следующей статье мы рассмотрим некоторые из встроенных методов, доступных для строк в JavaScript и то, как мы можем использовать их для управления нашими строками только в той форме, в которой мы хотим.

- -
{{PreviousMenuNext("Learn/JavaScript/Первые_шаги/Math", "Learn/JavaScript/Первые_шаги/Useful_string_methods", "Learn/JavaScript/Первые_шаги")}}
- -

В этом модуле

- - diff --git "a/files/ru/learn/javascript/\320\277\320\265\321\200\320\262\321\213\320\265_\321\210\320\260\320\263\320\270/\321\207\321\202\320\276_\320\277\320\276\321\210\320\273\320\276_\320\275\320\265_\321\202\320\260\320\272/index.html" "b/files/ru/learn/javascript/\320\277\320\265\321\200\320\262\321\213\320\265_\321\210\320\260\320\263\320\270/\321\207\321\202\320\276_\320\277\320\276\321\210\320\273\320\276_\320\275\320\265_\321\202\320\260\320\272/index.html" deleted file mode 100644 index dbb0a4577a..0000000000 --- "a/files/ru/learn/javascript/\320\277\320\265\321\200\320\262\321\213\320\265_\321\210\320\260\320\263\320\270/\321\207\321\202\320\276_\320\277\320\276\321\210\320\273\320\276_\320\275\320\265_\321\202\320\260\320\272/index.html" +++ /dev/null @@ -1,249 +0,0 @@ ---- -title: Что пошло не так? Устранение ошибок JavaScript -slug: Learn/JavaScript/Первые_шаги/Что_пошло_не_так -translation_of: Learn/JavaScript/First_steps/What_went_wrong ---- -
{{LearnSidebar}}
- -
{{PreviousMenuNext("Learn/JavaScript/Первые_шаги/A_first_splash", "Learn/JavaScript/Первые_шаги/Variables", "Learn/JavaScript/Первые_шаги")}}
- -

Когда вы создали игру «Угадай номер» в предыдущей статье, вы, возможно, обнаружили, что она не работает. Не бойтесь — эта статья призвана избавить вас от разрыва волос над такими проблемами, предоставив вам несколько простых советов о том, как найти и исправить ошибки в программах JavaScript.

- - - - - - - - - - - - -
-

Нужно:

-
базовая компьютерная грамотность, базовое понимание HTML и CSS, понимание того, что такое JavaScript.
Цельполучить способность и уверенность в том, чтобы приступить к исправлению простых проблем в вашем собственном коде.
- -

Типы ошибок

- -

Когда вы делаете что-то не так в коде, есть два основных типа ошибок, с которыми вы столкнетесь:

- - - -

Ладно, все не так просто — есть и другие отличия, которые вы поймете, пока будете изучать язык JavaScript глубже. Однако вышеуказанной классификации достаточно на раннем этапе вашей карьеры. Мы рассмотрим оба эти типа в дальнейшем.

- -

Ошибочный пример

- -

Чтобы начать работу, давайте вернемся к нашей игре с угадыванием чисел — за исключением того, что мы будем изучать версию с некоторыми преднамеренными ошибками. Перейдите в Github и сделайте себе локальную копию number-game-errors.html (см. здесь как это работает).

- -
    -
  1. Чтобы начать работу, откройте локальную копию внутри вашего любимого текстового редактора и вашего браузера.
  2. -
  3. Попробуйте сыграть в игру — вы заметите, что когда вы нажимаете кнопку «Submit guess», она не работает!
  4. -
- -
-

Примечание: Возможно, у вас может быть собственная версия игрового примера, которая не работает, которую вы можете исправить! Мы по-прежнему хотели бы, чтобы вы работали над статьей с нашей версией, чтобы вы могли изучать методы, которые мы здесь преподаем. Затем вы можете вернуться и попытаться исправить ваш пример.

-
- -

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

- -

Исправление синтаксических ошибок

- -

Раньше в курсе мы заставили вас набрать некоторые простые команды JavaScript в консоль разработчика JavaScript (если вы не можете вспомнить, как открыть это в своем браузере, следуйте предыдущей ссылке, чтобы узнать, как это сделать). Что еще более полезно, так это то, что консоль предоставляет вам сообщения об ошибках всякий раз, когда существует синтаксическая ошибка внутри JavaScript, которая подается в механизм JavaScript браузера. Теперь пойдем на охоту.

- -
    -
  1. Перейдите на вкладку, в которой у вас есть number-game-errors.html, и откройте консоль JavaScript. Вы должны увидеть сообщение об ошибке в следующих строках:
  2. -
  3. Это довольно простая ошибка для отслеживания, и браузер дает вам несколько полезных бит информации, которые помогут вам (скриншот выше от Firefox, но другие браузеры предоставляют аналогичную информацию). Слева направо, у нас есть: -
      -
    • Красный «x» означает, что это ошибка.
    • -
    • Сообщение об ошибке, указывающее, что пошло не так: «TypeError: guessSubmit.addeventListener не является функцией»
    • -
    • Ссылка «Узнать больше», которая ссылается на страницу MDN, которая объясняет, что эта ошибка означает в огромных количествах деталей.
    • -
    • Имя файла JavaScript, который ссылается на вкладку «Отладчик» консоли разработчика. Если вы перейдете по этой ссылке, вы увидите точную строку, где подсвечивается ошибка.
    • -
    • Номер строки, в которой находится ошибка, и номер символа в этой строке, где первая ошибка. В этом случае у нас есть строка 86, символ номер 3.
    • -
    -
  4. -
  5. Если мы посмотрим на строку 86 в нашем редакторе кода, мы найдем эту строку: -
    guessSubmit.addeventListener('click', checkGuess);
    -
  6. -
  7. В сообщении об ошибке говорится, что «guessSubmit.addeventListener не является функцией», поэтому мы, вероятно, где-то ошиблись. Если вы не уверены в правильности написания синтаксиса, часто бывает полезно найти функцию на MDN. Лучший способ сделать это в настоящее время — поиск «mdn имя-функции» в вашей любимой поисковой системе. Вот ссылка, которая поможет сократить вам некоторое время в данном случае: addEventListener().
  8. -
  9. Итак, глядя на эту страницу, кажется, что ошибка в том, что мы неправильно назвали имя функции! Помните, что JavaScript чувствителен к регистру, поэтому любые незначительные отличия в орфографии или регистре текста могут вызвать ошибку. Изменение этого параметра в addEventListener должно быть исправлено. Сделайте это сейчас.
  10. -
- -
-

Примечание: См. наш TypeError: «x» не является справочной страницей функций для получения дополнительной информации об этой ошибке.

-
- -

Синтаксические ошибки: второй раунд

- -
-

Примечание: console.log() это часто используемая функция отладки, которая выводит значение в консоль. Поэтому она будет выводить значение lowOrHi в консоли, как только мы попытаемся установить его в строке 48.

-
- -
    -
  1. Сохраните и обновите страницу, и вы увидите, что ошибка исчезла.
  2. -
  3. Теперь, если вы попробуете ввести значение и нажать кнопку "Submit guess", вы увидите ... другую ошибку! 
  4. -
  5. На этот раз сообщается об ошибке: "TypeError: lowOrHi is null", в строке 78. -
    Примечание: Null — это специальное значение, которое означает "ничего" или "не значение". Поэтому lowOrHi был объявлен и инициализирован без значения — у него нет типа или значения.
    - -
    Примечание: Эта ошибка не появилась, как только страница была загружена, потому что эта ошибка произошла внутри функции (внутри checkGuess() { ... } block). Об этом вы узнаете более подробно в нашей более поздней статье о функциях, код внутри функций выполняется в отдельной области для кода внешних функций. В этом случае код не был запущен, и ошибка не была брошена до тех пор, пока функция checkGuess() не была запущена строкой 86.
    -
  6. -
  7. Посмотрите на строку 78, и вы увидите следующий код: -
    lowOrHi.textContent = «Последнее предположение было слишком высоко!»;
    -
  8. -
  9. Эта строка пытается установить свойство textContent переменной lowOrHi как текстовую строку, но это не работает, поскольку lowOrHi не содержит того, что должна. Давайте посмотрим, почему так происходит — попробуйте найти другие экземпляры lowOrHi в коде. Самый ранний экземпляр, который вы найдете в JavaScript, находится в строке 48: -
    var lowOrHi = document.querySelector('lowOrHi');
    -
  10. -
  11. На этом этапе мы пытаемся заставить переменную содержать ссылку на элемент документа HTML. Давайте проверим, является ли значение  null после выполнения этой строки. Добавьте следующий код в строку 49: -
    console.log(lowOrHi);
    -
    -
  12. -
  13. Сохраните и обновите, и вы должны увидеть результат работы console.log() в консоли браузера. Разумеется, значение lowOrHi на данный момент равно null, поэтому определенно существует проблема в строке 48.
  14. -
  15. Давайте подумаем о том, что может быть проблемой. Строка 48 использует метод document.querySelector() для получения ссылки на элемент, выбирая его с помощью селектора CSS. Посмотрев далее наш файл, мы можем найти обсуждаемый элемент <p>: -
    <p class="lowOrHi"></p>
    -
    -
  16. -
  17. Поэтому нам нужен селектор классов, который начинается с точки (.), но селектор, передаваемый в метод querySelector() в строке 48, не имеет точки. Возможно, это и есть проблема! Попробуйте изменить lowOrHi на .lowOrHi в строке 48.
  18. -
  19. Повторите попытку сохранения и обновления, и ваш вызов console.log() должен вернуть элемент <p>, который мы хотим. Уф! Еще одна ошибка исправлена! Вы можете удалить строку с  console.log() сейчас, или оставить для дальнейшего применения — выбирайте сами.
  20. -
- -
-

Примечание: Загляните на справочную страницу TypeError: "x" is (not) "y", чтобы узнать больше об этой ошибке.

-
- -

Синтаксические ошибки: третий раунд

- -
    -
  1. Теперь, если вы снова попробуете сыграть в игру, вы должны добиться большего успеха — игра должна играть абсолютно нормально, пока вы не закончите игру, либо угадав нужное число, либо потеряв жизни.
  2. -
  3. На данном этапе игра снова слетает, и выводится такая же ошибка, как и в начале — "TypeError: resetButton.addeventListener is not a function"! Однако, теперь она происходит из-за строки 94.
  4. -
  5. Посмотрев на строку 94, легко видеть, что здесь сделана такая же ошибка. Нам просто нужно изменить addeventListener на addEventListener.
  6. -
- -

Логическая ошибка

- -

На этом этапе игра должна проходить отлично, однако, поиграв несколько раз, вы, несомненно заметите, что случайное число, которое вы должны угадать, всегда 0 или 1. Определенно не совсем так, как мы хотим, чтобы игра была разыграна!

- -

Безусловно, где-то в игре есть логическая ошибка — игра не возвращает ошибку, она просто работает неправильно.

- -
    -
  1. Найдем переменную randomNumber , и строку где в первый раз устанавливали случайное число. Пример, в котором мы храним случайное число, которое должны угадать, на строке 44: - -
    var randomNumber = Math.floor(Math.random()) + 1;
    -
    - И на строке 113, где мы генерируем случайное число, каждый раз после окончания игры: - -
    randomNumber = Math.floor(Math.random()) + 1;
    -
    -
  2. -
  3. Чтобы проверить, действительно ли проблема в этом, давайте обратимся к нашему другу console.log() снова — вставьте ее ниже строк с ошибками: -
    console.log(randomNumber);
    -
    -
  4. -
  5. Сохраните и обновите, а дальше попробуйте пару раз сыграть — в консоли вы увидите что randomNumber равна 1 в каждой точке, где вы ее записали после строк с ошибками.
  6. -
- -

Работаем через логику

- -

Чтобы исправить это, давайте рассмотрим как работает строка. Первое, мы вызываем Math.random(), котрый генерирует случайное десятичное число, между 0 и 1, например 0.5675493843.

- -
Math.random()
- -

Дальше, мы передаем результат вызова Math.random() через Math.floor(), который округляет число вниз, до ближайшего целого числа. Затем мы добавляем 1 к данному результату:

- -
Math.floor(Math.random()) + 1;
- -

Округление случайного десятичного числа к меньшему, всегда будет возвращать 0, так что добавление к нему единицы будет возвращать всегда 1.  Нам нужно умножить случайное число на 100, прежде чем мы округлим его к меньшему. Следующая строка вернет нам случайное число между 0 и 99:

- -
Math.floor(Math.random() * 100);
- -

поэтому нам нужно добавить 1, чтоб нам возвращалось случайное число между 1 и 100:

- -
Math.floor(Math.random() * 100) + 1;
- -

А теперь, исправьте обе строки с ошибками, затем сохраните и обновите, игра должна работать так, как мы и планировали!

- -

Другие распространенные ошибки

- -

Существуют и другие распространенные ошибки, которые вы обнаружите в своем коде. В этом разделе показано большинство из них.

- -

SyntaxError: отсутствует ; перед постановкой

- -

Эта ошибка обычно означает что вы упустили точку с запятой в конце одной из ваших строк кода, но иногда ошибка может быть более загадочной. Например, если мы изменим эту строку внутри функции checkGuess() :

- -
var userGuess = Number(guessField.value);
- -

на эту

- -
var userGuess === Number(guessField.value);
- -

Это вызовет данную ошибку, потому что браузер подумает, что вы пытались сделать что-то другое. Вы должны быть уверены, что вы не перепутали оператор присваивания (=), который присваивает значение переменной — с оператором сравнения (===), который строго сравнивает операнды, и возвращает true/false .

- -
-

Примечание: Загляните на справочную страницу Синтаксическая ошибка: пропущен символ ; до объявления инструкции для получения дополнительной информации об этой ошибке.

-
- -

В программе всегда говорится, что вы выиграли, независимо от того, что вы ввели

- -

Причиной этому является все то же перепутывание оператора присваивания (=) со строгим сравнением (===). Например, если мы изменим внутри checkGuess() эту строку кода:

- -
if (userGuess === randomNumber) {
- -

на эту

- -
if (userGuess = randomNumber) {
- -

мы всегда будем получать true, заставляя программу сообщать, что игра была выиграна. Будьте осторожны!

- -

SyntaxError: отсутствует ) после списка аргументов

- -

Эта ошибка проста — обычно она означает, что вы пропустили закрывающую скобку с конца вызова функции / метода.

- -
-

Примечание: Загляните на справочную страницу  SyntaxError: missing ) after argument list для получения дополнительной информации об этой ошибке.

-
- -

SyntaxError: missing : after property id

- -

Эта ошибка обычно связана с неправильно сформированным объектом JavaScript, но в этом случае нам удалось получить ее, изменив

- -
function checkGuess() {
- -

на

- -
function checkGuess( {
-
- -

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

- -

SyntaxError: missing } after function body

- -

Это легко — обычно это означает, что вы пропустили одну из ваших фигурных скобок из функции или условной структуры. Мы получили эту ошибку, удалив одну из закрывающих фигурных скобок возле нижней части функции  checkGuess().

- -

SyntaxError: expected expression, got 'string' or SyntaxError: unterminated string literal

- -

Эти ошибки обычно означает, что вы пропустили открывающую или закрывающую кавычку для строковых значений. В первой ошибки выше,  строка  будет заменена на неожиданный персонаж (ей) , что браузер нашел вместо кавычек в начале строки. Вторая ошибка означает , что строка не закончилась кавычки.

- -

При всех этих ошибках действуйте так, как в наших  примерах, которые мы рассмотрели в пошаговом руководстве. Когда возникает ошибка, посмотрите полученный номер строки, перейдите к этой строке и посмотрите, можете ли вы определить, что случилось. Имейте в виду, что ошибка не обязательно будет на этой строке, а также, что ошибка может быть вызвана не такой же проблемой, которую мы привели выше!

- -
-

Примечание : Смотрите наш SyntaxError: Неожиданный токен и SyntaxError: незавершенная строка эталонных страниц для получения более подробной информации об этих ошибках.

-
- -

Резюме

- -

Итак, мы научились основам  выяснения ошибок в простых программах JavaScript. Не всегда так просто разобраться, что не так в вашем коде, но, по крайней мере, это сэкономит вам несколько часов сна и позволит вам продвигаться немного быстрее, когда что-либо заработает не так, как ожидалось, в вашем учебном путешествии.

- -

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

- -
- -
- -

{{PreviousMenuNext("Learn/JavaScript/Первые_шаги/A_first_splash", "Learn/JavaScript/Первые_шаги/Variables", "Learn/JavaScript/Первые_шаги")}}

-- cgit v1.2.3-54-g00ecf From 786d51e5e35f25c06fc64083574a435e240b2a54 Mon Sep 17 00:00:00 2001 From: Florian Merz Date: Thu, 11 Feb 2021 14:51:06 +0100 Subject: unslug ru: modify --- files/ru/_redirects.txt | 870 +- files/ru/_wikihistory.json | 18886 +++++++++---------- files/ru/conflicting/glossary/chrome/index.html | 3 +- .../cascade_and_inheritance/index.html | 5 +- .../learn/css/building_blocks/selectors/index.html | 3 +- .../index.html | 4 +- .../css/building_blocks/styling_tables/index.html | 3 +- .../building_blocks/values_and_units/index.html | 3 +- .../first_steps/how_css_is_structured/index.html | 3 +- .../learn/css/first_steps/how_css_works/index.html | 3 +- .../index.html | 6 +- .../index.html | 6 +- .../conflicting/learn/css/first_steps/index.html | 5 +- files/ru/conflicting/learn/css/index.html | 3 +- .../learn/css/styling_text/fundamentals/index.html | 3 +- .../learn/javascript/objects/index.html | 3 +- files/ru/conflicting/mdn/contribute/index.html | 3 +- files/ru/conflicting/mdn/tools/index.html | 3 +- files/ru/conflicting/mozilla/add-ons/index.html | 3 +- .../mozilla/firefox/releases/index.html | 3 +- files/ru/conflicting/tools/performance/index.html | 3 +- files/ru/conflicting/web/accessibility/index.html | 3 +- .../api/canvas_api/a_basic_ray-caster/index.html | 3 +- .../web/api/crypto/getrandomvalues/index.html | 3 +- .../web/api/document_object_model/index.html | 3 +- .../index.html | 3 +- .../index.html | 3 +- files/ru/conflicting/web/api/element/index.html | 3 +- .../api/eventtarget/addeventlistener/index.html | 3 +- .../api/eventtarget/removeeventlistener/index.html | 3 +- .../ru/conflicting/web/api/geolocation/index.html | 3 +- .../api/htmlmediaelement/abort_event/index.html | 3 +- files/ru/conflicting/web/api/index.html | 3 +- files/ru/conflicting/web/api/node/index.html | 3 +- .../index.html | 3 +- files/ru/conflicting/web/api/push_api/index.html | 3 +- .../web/api/svgaelement/target/index.html | 3 +- .../conflicting/web/api/web_storage_api/index.html | 3 +- files/ru/conflicting/web/api/webrtc_api/index.html | 3 +- .../signaling_and_video_calling/index.html | 3 +- .../web/api/window/localstorage/index.html | 3 +- .../web/api/windoworworkerglobalscope/index.html | 3 +- .../index.html | 3 +- .../conflicting/web/api/xmlhttprequest/index.html | 3 +- files/ru/conflicting/web/css/@viewport/index.html | 3 +- files/ru/conflicting/web/css/_colon_is/index.html | 7 +- .../web/css/css_basic_user_interface/index.html | 3 +- .../basic_concepts_of_flexbox/index.html | 3 +- files/ru/conflicting/web/css/gap/index.html | 3 +- files/ru/conflicting/web/css/url()/index.html | 3 +- .../index.html | 3 +- files/ru/conflicting/web/guide/index.html | 3 +- files/ru/conflicting/web/guide/mobile/index.html | 3 +- files/ru/conflicting/web/http/cors/index.html | 3 +- files/ru/conflicting/web/http/csp/index.html | 3 +- .../ru/conflicting/web/javascript/guide/index.html | 3 +- .../web/javascript/guide/introduction/index.html | 3 +- .../index.html | 3 +- .../reference/global_objects/boolean/index.html | 3 +- .../reference/global_objects/date/index.html | 3 +- .../reference/global_objects/error/index.html | 3 +- .../reference/global_objects/evalerror/index.html | 3 +- .../reference/global_objects/function/index.html | 3 +- .../global_objects/generatorfunction/index.html | 3 +- .../global_objects/internalerror/index.html | 3 +- .../global_objects/intl/collator/index.html | 3 +- .../global_objects/intl/datetimeformat/index.html | 3 +- .../global_objects/intl/numberformat/index.html | 3 +- .../reference/global_objects/map/index.html | 3 +- .../reference/global_objects/number/index.html | 3 +- .../reference/global_objects/object/index.html | 3 +- .../reference/global_objects/promise/index.html | 3 +- .../global_objects/proxy/proxy/index.html | 3 +- .../reference/global_objects/rangeerror/index.html | 3 +- .../global_objects/referenceerror/index.html | 3 +- .../reference/global_objects/regexp/index.html | 3 +- .../reference/global_objects/set/index.html | 3 +- .../reference/global_objects/string/index.html | 3 +- .../reference/global_objects/symbol/index.html | 3 +- .../global_objects/syntaxerror/index.html | 3 +- .../reference/global_objects/typedarray/index.html | 3 +- .../reference/global_objects/typeerror/index.html | 3 +- .../reference/global_objects/urierror/index.html | 3 +- .../reference/global_objects/weakmap/index.html | 3 +- .../reference/global_objects/weakset/index.html | 3 +- .../web/javascript/reference/operators/index.html | 3 +- .../index.html | 4 +- .../index.html | 4 +- .../index.html | 4 +- .../index.html | 4 +- .../reference/statements/switch/index.html | 3 +- files/ru/conflicting/web/media/formats/index.html | 3 +- .../web/progressive_web_apps/index.html | 3 +- .../index.html | 3 +- files/ru/games/anatomy/index.html | 3 +- files/ru/games/introduction/index.html | 3 +- files/ru/games/tools/asm.js/index.html | 3 +- files/ru/games/tools/index.html | 3 +- .../bounce_off_the_walls/index.html | 3 +- .../build_the_brick_field/index.html | 3 +- .../collision_detection/index.html | 3 +- .../2d_breakout_game_phaser/extra_lives/index.html | 3 +- .../2d_breakout_game_phaser/game_over/index.html | 3 +- .../tutorials/2d_breakout_game_phaser/index.html | 3 +- .../initialize_the_framework/index.html | 3 +- .../index.html | 4 +- .../move_the_ball/index.html | 3 +- .../2d_breakout_game_phaser/physics/index.html | 3 +- .../player_paddle_and_controls/index.html | 3 +- .../2d_breakout_game_phaser/scaling/index.html | 3 +- .../2d_breakout_game_phaser/the_score/index.html | 3 +- .../win_the_game/index.html | 3 +- .../build_the_brick_field/index.html | 3 +- .../collision_detection/index.html | 3 +- .../create_the_canvas_and_draw_on_it/index.html | 4 +- .../finishing_up/index.html | 3 +- .../mouse_controls/index.html | 3 +- .../move_the_ball/index.html | 3 +- files/ru/glossary/404/index.html | 3 +- files/ru/glossary/502/index.html | 3 +- files/ru/glossary/abstraction/index.html | 3 +- files/ru/glossary/accessibility/index.html | 3 +- files/ru/glossary/adobe_flash/index.html | 3 +- files/ru/glossary/ajax/index.html | 3 +- files/ru/glossary/algorithm/index.html | 3 +- files/ru/glossary/api/index.html | 3 +- files/ru/glossary/apple_safari/index.html | 3 +- files/ru/glossary/application_context/index.html | 3 +- files/ru/glossary/argument/index.html | 3 +- files/ru/glossary/aria/index.html | 3 +- files/ru/glossary/arpa/index.html | 3 +- files/ru/glossary/arpanet/index.html | 3 +- files/ru/glossary/array/index.html | 5 +- files/ru/glossary/ascii/index.html | 3 +- files/ru/glossary/asynchronous/index.html | 3 +- files/ru/glossary/atag/index.html | 3 +- files/ru/glossary/attribute/index.html | 3 +- files/ru/glossary/bandwidth/index.html | 3 +- files/ru/glossary/base64/index.html | 3 +- files/ru/glossary/baseline/index.html | 3 +- files/ru/glossary/bidi/index.html | 3 +- files/ru/glossary/bigint/index.html | 3 +- files/ru/glossary/blink/index.html | 3 +- files/ru/glossary/block/scripting/index.html | 3 +- files/ru/glossary/boolean/index.html | 5 +- files/ru/glossary/bootstrap/index.html | 3 +- files/ru/glossary/browser/index.html | 3 +- files/ru/glossary/browsing_context/index.html | 3 +- files/ru/glossary/buffer/index.html | 3 +- "files/ru/glossary/b\303\251zier_curve/index.html" | 3 +- files/ru/glossary/cache/index.html | 3 +- files/ru/glossary/cacheable/index.html | 3 +- files/ru/glossary/call_stack/index.html | 3 +- files/ru/glossary/callback_function/index.html | 3 +- files/ru/glossary/canvas/index.html | 3 +- files/ru/glossary/card_sorting/index.html | 3 +- files/ru/glossary/cdn/index.html | 3 +- files/ru/glossary/certified/index.html | 3 +- files/ru/glossary/character/index.html | 3 +- files/ru/glossary/character_encoding/index.html | 3 +- files/ru/glossary/chrome/index.html | 3 +- files/ru/glossary/cia/index.html | 3 +- files/ru/glossary/class/index.html | 3 +- files/ru/glossary/cms/index.html | 3 +- files/ru/glossary/codec/index.html | 3 +- files/ru/glossary/compile/index.html | 3 +- files/ru/glossary/computer_programming/index.html | 3 +- files/ru/glossary/conditional/index.html | 3 +- files/ru/glossary/constant/index.html | 3 +- files/ru/glossary/constructor/index.html | 3 +- files/ru/glossary/cookie/index.html | 3 +- files/ru/glossary/copyleft/index.html | 3 +- files/ru/glossary/cors/index.html | 3 +- files/ru/glossary/crawler/index.html | 3 +- files/ru/glossary/crlf/index.html | 3 +- files/ru/glossary/csp/index.html | 3 +- files/ru/glossary/csrf/index.html | 3 +- files/ru/glossary/css/index.html | 3 +- files/ru/glossary/css_preprocessor/index.html | 3 +- files/ru/glossary/css_selector/index.html | 3 +- files/ru/glossary/data_structure/index.html | 3 +- files/ru/glossary/decryption/index.html | 3 +- files/ru/glossary/developer_tools/index.html | 3 +- files/ru/glossary/dns/index.html | 3 +- files/ru/glossary/doctype/index.html | 3 +- files/ru/glossary/dom/index.html | 3 +- files/ru/glossary/domain/index.html | 3 +- files/ru/glossary/domain_name/index.html | 3 +- files/ru/glossary/dos_attack/index.html | 3 +- .../dynamic_programming_language/index.html | 3 +- files/ru/glossary/ecma/index.html | 3 +- files/ru/glossary/ecmascript/index.html | 3 +- files/ru/glossary/element/index.html | 3 +- files/ru/glossary/empty_element/index.html | 3 +- files/ru/glossary/encapsulation/index.html | 3 +- files/ru/glossary/entity/index.html | 3 +- files/ru/glossary/entity_header/index.html | 3 +- files/ru/glossary/event/index.html | 3 +- files/ru/glossary/expando/index.html | 3 +- files/ru/glossary/falsy/index.html | 3 +- files/ru/glossary/first-class_function/index.html | 3 +- .../ru/glossary/first_contentful_paint/index.html | 3 +- files/ru/glossary/first_cpu_idle/index.html | 3 +- files/ru/glossary/first_input_delay/index.html | 3 +- files/ru/glossary/first_interactive/index.html | 3 +- .../ru/glossary/first_meaningful_paint/index.html | 3 +- files/ru/glossary/first_paint/index.html | 3 +- files/ru/glossary/flex_item/index.html | 3 +- files/ru/glossary/flexbox/index.html | 3 +- files/ru/glossary/forbidden_header_name/index.html | 3 +- .../forbidden_response_header_name/index.html | 3 +- files/ru/glossary/fps/index.html | 3 +- files/ru/glossary/ftp/index.html | 3 +- files/ru/glossary/function/index.html | 3 +- files/ru/glossary/gecko/index.html | 3 +- files/ru/glossary/general_header/index.html | 3 +- files/ru/glossary/git/index.html | 3 +- files/ru/glossary/global_object/index.html | 3 +- files/ru/glossary/global_variable/index.html | 3 +- files/ru/glossary/grid/index.html | 3 +- files/ru/glossary/grid_column/index.html | 3 +- files/ru/glossary/hash/index.html | 3 +- files/ru/glossary/head/index.html | 3 +- .../high-level_programming_language/index.html | 3 +- files/ru/glossary/hoisting/index.html | 3 +- files/ru/glossary/host/index.html | 3 +- files/ru/glossary/html/index.html | 3 +- files/ru/glossary/html5/index.html | 3 +- files/ru/glossary/http/index.html | 3 +- files/ru/glossary/http_2/index.html | 3 +- files/ru/glossary/https/index.html | 3 +- files/ru/glossary/hypertext/index.html | 3 +- files/ru/glossary/iana/index.html | 3 +- files/ru/glossary/icann/index.html | 3 +- files/ru/glossary/idempotent/index.html | 3 +- files/ru/glossary/identifier/index.html | 3 +- files/ru/glossary/ietf/index.html | 3 +- files/ru/glossary/iife/index.html | 3 +- files/ru/glossary/index.html | 3 +- files/ru/glossary/indexeddb/index.html | 3 +- .../glossary/information_architecture/index.html | 3 +- files/ru/glossary/internet/index.html | 3 +- files/ru/glossary/ip_address/index.html | 3 +- files/ru/glossary/iso/index.html | 3 +- files/ru/glossary/isp/index.html | 3 +- files/ru/glossary/java/index.html | 3 +- files/ru/glossary/javascript/index.html | 3 +- files/ru/glossary/jpeg/index.html | 3 +- files/ru/glossary/jquery/index.html | 3 +- files/ru/glossary/json/index.html | 3 +- files/ru/glossary/loop/index.html | 3 +- files/ru/glossary/main_axis/index.html | 3 +- files/ru/glossary/mathml/index.html | 3 +- files/ru/glossary/metadata/index.html | 3 +- files/ru/glossary/method/index.html | 3 +- .../microsoft_internet_explorer/index.html | 3 +- files/ru/glossary/mime_type/index.html | 3 +- files/ru/glossary/mixin/index.html | 3 +- files/ru/glossary/node.js/index.html | 3 +- files/ru/glossary/null/index.html | 3 +- files/ru/glossary/number/index.html | 3 +- files/ru/glossary/object/index.html | 3 +- files/ru/glossary/oop/index.html | 3 +- files/ru/glossary/opengl/index.html | 3 +- files/ru/glossary/origin/index.html | 3 +- files/ru/glossary/php/index.html | 3 +- files/ru/glossary/pixel/index.html | 3 +- files/ru/glossary/polymorphism/index.html | 3 +- files/ru/glossary/port/index.html | 3 +- files/ru/glossary/primitive/index.html | 3 +- files/ru/glossary/privileged_code/index.html | 3 +- files/ru/glossary/progressive_web_apps/index.html | 3 +- files/ru/glossary/promise/index.html | 3 +- files/ru/glossary/property/index.html | 3 +- files/ru/glossary/protocol/index.html | 3 +- .../prototype-based_programming/index.html | 3 +- files/ru/glossary/prototype/index.html | 3 +- files/ru/glossary/proxy_server/index.html | 3 +- files/ru/glossary/pseudo-element/index.html | 3 +- files/ru/glossary/pseudocode/index.html | 3 +- files/ru/glossary/reflow/index.html | 3 +- files/ru/glossary/regular_expression/index.html | 3 +- files/ru/glossary/request_header/index.html | 3 +- files/ru/glossary/responsive_web_design/index.html | 3 +- files/ru/glossary/round_trip_time_(rtt)/index.html | 3 +- files/ru/glossary/safe/index.html | 3 +- files/ru/glossary/scroll_container/index.html | 3 +- files/ru/glossary/sdp/index.html | 3 +- .../self-executing_anonymous_function/index.html | 3 +- files/ru/glossary/semantics/index.html | 3 +- files/ru/glossary/seo/index.html | 3 +- files/ru/glossary/server/index.html | 3 +- files/ru/glossary/sgml/index.html | 3 +- files/ru/glossary/simple_header/index.html | 3 +- .../ru/glossary/simple_response_header/index.html | 3 +- files/ru/glossary/sloppy_mode/index.html | 3 +- files/ru/glossary/specification/index.html | 3 +- files/ru/glossary/speculative_parsing/index.html | 3 +- files/ru/glossary/statement/index.html | 3 +- files/ru/glossary/static_typing/index.html | 3 +- files/ru/glossary/string/index.html | 3 +- files/ru/glossary/svg/index.html | 3 +- files/ru/glossary/symbol/index.html | 3 +- files/ru/glossary/synchronous/index.html | 3 +- files/ru/glossary/tag/index.html | 3 +- files/ru/glossary/tcp/index.html | 3 +- files/ru/glossary/time_to_first_byte/index.html | 3 +- files/ru/glossary/time_to_interactive/index.html | 3 +- files/ru/glossary/tls/index.html | 3 +- files/ru/glossary/truthy/index.html | 3 +- files/ru/glossary/type/index.html | 3 +- files/ru/glossary/type_coercion/index.html | 3 +- files/ru/glossary/type_conversion/index.html | 3 +- files/ru/glossary/ui/index.html | 3 +- files/ru/glossary/undefined/index.html | 3 +- files/ru/glossary/url/index.html | 3 +- files/ru/glossary/user_agent/index.html | 3 +- files/ru/glossary/variable/index.html | 3 +- files/ru/glossary/vendor_prefix/index.html | 3 +- files/ru/glossary/viewport/index.html | 3 +- files/ru/glossary/w3c/index.html | 3 +- files/ru/glossary/wai/index.html | 3 +- files/ru/glossary/webkit/index.html | 3 +- files/ru/glossary/websockets/index.html | 3 +- files/ru/glossary/whatwg/index.html | 3 +- files/ru/glossary/whitespace/index.html | 3 +- files/ru/glossary/world_wide_web/index.html | 3 +- files/ru/glossary/wrapper/index.html | 3 +- files/ru/glossary/xhr_(xmlhttprequest)/index.html | 3 +- files/ru/glossary/xhtml/index.html | 3 +- files/ru/glossary/xml/index.html | 3 +- .../accessibility_troubleshooting/index.html | 3 +- .../accessibility/css_and_javascript/index.html | 3 +- files/ru/learn/accessibility/html/index.html | 3 +- files/ru/learn/accessibility/index.html | 3 +- files/ru/learn/accessibility/mobile/index.html | 3 +- files/ru/learn/accessibility/multimedia/index.html | 3 +- .../learn/accessibility/wai-aria_basics/index.html | 3 +- .../accessibility/what_is_accessibility/index.html | 3 +- .../how_does_the_internet_work/index.html | 3 +- .../index.html | 5 +- .../what_are_browser_developer_tools/index.html | 3 +- .../what_are_hyperlinks/index.html | 3 +- .../what_is_a_domain_name/index.html | 3 +- .../common_questions/what_is_a_url/index.html | 3 +- .../what_is_a_web_server/index.html | 3 +- .../css/building_blocks/cascade_tasks/index.html | 3 +- .../fundamental_css_comprehension/index.html | 3 +- .../selectors/attribute_selectors/index.html | 3 +- .../selectors/combinators/index.html | 3 +- .../learn/css/building_blocks/selectors/index.html | 3 +- .../pseudo-classes_and_pseudo-elements/index.html | 5 +- .../selectors/selectors_tasks/index.html | 3 +- .../type_class_and_id_selectors/index.html | 5 +- .../css/css_layout/multicol_skills/index.html | 3 +- .../css_layout/multiple-column_layout/index.html | 3 +- .../ru/learn/css/css_layout/normal_flow/index.html | 3 +- .../css/css_layout/position_skills/index.html | 3 +- .../css/css_layout/responsive_design/index.html | 3 +- .../first_steps/how_css_is_structured/index.html | 3 +- .../learn/css/first_steps/what_is_css/index.html | 3 +- files/ru/learn/css/howto/css_faq/index.html | 3 +- files/ru/learn/css/howto/index.html | 3 +- .../css/styling_text/styling_lists/index.html | 3 +- .../styling_text/typesetting_a_homepage/index.html | 3 +- .../ru/learn/css/styling_text/web_fonts/index.html | 3 +- .../forms/basic_native_form_controls/index.html | 3 +- files/ru/learn/forms/form_validation/index.html | 3 +- .../how_to_build_custom_form_controls/index.html | 3 +- .../forms/how_to_structure_a_web_form/index.html | 3 +- files/ru/learn/forms/index.html | 3 +- .../sending_and_retrieving_form_data/index.html | 3 +- .../sending_forms_through_javascript/index.html | 3 +- files/ru/learn/forms/styling_web_forms/index.html | 3 +- files/ru/learn/forms/your_first_form/index.html | 3 +- files/ru/learn/front-end_web_developer/index.html | 3 +- .../installing_basic_software/index.html | 3 +- .../the_web_and_web_standards/index.html | 3 +- .../author_fast-loading_html_pages/index.html | 3 +- files/ru/learn/html/howto/index.html | 3 +- .../html/howto/use_data_attributes/index.html | 3 +- .../advanced_text_formatting/index.html | 3 +- .../creating_hyperlinks/index.html | 3 +- .../introduction_to_html/debugging_html/index.html | 3 +- .../document_and_website_structure/index.html | 3 +- .../getting_started/index.html | 3 +- .../html_text_fundamentals/index.html | 3 +- .../ru/learn/html/introduction_to_html/index.html | 3 +- .../marking_up_a_letter/index.html | 3 +- .../structuring_a_page_of_content/index.html | 3 +- .../the_head_metadata_in_html/index.html | 3 +- .../adding_vector_graphics_to_the_web/index.html | 3 +- .../images_in_html/index.html | 3 +- .../test_your_skills_colon__html_images/index.html | 4 +- .../mozilla_splash_page/index.html | 3 +- .../asynchronous/timeouts_and_intervals/index.html | 3 +- .../javascript/building_blocks/events/index.html | 3 +- .../first_steps/a_first_splash/index.html | 3 +- .../learn/javascript/first_steps/arrays/index.html | 3 +- files/ru/learn/javascript/first_steps/index.html | 3 +- .../learn/javascript/first_steps/math/index.html | 3 +- .../first_steps/silly_story_generator/index.html | 3 +- .../javascript/first_steps/strings/index.html | 3 +- .../first_steps/useful_string_methods/index.html | 3 +- .../javascript/first_steps/variables/index.html | 3 +- .../first_steps/what_is_javascript/index.html | 3 +- .../first_steps/what_went_wrong/index.html | 3 +- .../adding_bouncing_balls_features/index.html | 3 +- .../ru/learn/javascript/objects/basics/index.html | 3 +- files/ru/learn/javascript/objects/index.html | 3 +- .../javascript/objects/inheritance/index.html | 3 +- files/ru/learn/javascript/objects/json/index.html | 3 +- .../objects/object-oriented_js/index.html | 3 +- .../objects/object_building_practice/index.html | 3 +- .../objects/object_prototypes/index.html | 3 +- .../server-side/django/authentication/index.html | 3 +- .../learn/server-side/django/deployment/index.html | 3 +- .../server-side/django/introduction/index.html | 3 +- .../learn/server-side/django/sessions/index.html | 3 +- .../tutorial_local_library_website/index.html | 3 +- .../first_steps/website_security/index.html | 3 +- .../client-side_javascript_frameworks/index.html | 3 +- .../react_getting_started/index.html | 4 +- files/ru/learn/tools_and_testing/github/index.html | 3 +- files/ru/mdn/at_ten/index.html | 3 +- .../index.html | 3 +- .../index.html | 5 +- .../howto/create_and_edit_pages/index.html | 3 +- files/ru/mdn/contribute/processes/index.html | 3 +- .../tools/kumascript/troubleshooting/index.html | 3 +- files/ru/mdn/tools/search/index.html | 3 +- files/ru/mdn/tools/unsupported_get_api/index.html | 3 +- files/ru/mdn/yari/index.html | 3 +- .../webextensions/internationalization/index.html | 3 +- .../webextensions/modify_a_web_page/index.html | 3 +- .../developer_guide/introduction/index.html | 3 +- .../mozilla/developer_guide/source_code/index.html | 3 +- .../1.5/using_firefox_1.5_caching/index.html | 3 +- files/ru/mozilla/firefox/releases/3.5/index.html | 3 +- files/ru/mozilla/firefox/releases/3/index.html | 3 +- files/ru/orphaned/glossary/polifill/index.html | 3 +- .../ru/orphaned/learn/how_to_contribute/index.html | 3 +- .../learn/html/forms/html5_updates/index.html | 3 +- .../orphaned/mdn/about/linking_to_mdn/index.html | 3 +- .../mdn/community/conversations/index.html | 3 +- files/ru/orphaned/mdn/community/index.html | 3 +- .../mdn/community/whats_happening/index.html | 3 +- .../mdn/community/working_in_community/index.html | 3 +- .../howto/create_an_mdn_account/index.html | 3 +- .../howto/do_a_technical_review/index.html | 3 +- .../howto/do_an_editorial_review/index.html | 3 +- .../howto/set_the_summary_for_a_page/index.html | 3 +- .../howto/tag_javascript_pages/index.html | 3 +- files/ru/orphaned/mdn/editor/basics/index.html | 3 +- .../mdn/editor/basics/page_controls/index.html | 3 +- .../orphaned/mdn/editor/basics/toolbar/index.html | 3 +- files/ru/orphaned/mdn/editor/images/index.html | 3 +- files/ru/orphaned/mdn/editor/index.html | 3 +- .../mdn/editor/keyboard_shortcuts/index.html | 3 +- files/ru/orphaned/mdn/editor/links/index.html | 3 +- files/ru/orphaned/mdn/editor/redirects/index.html | 3 +- .../ru/orphaned/mdn/editor/source_mode/index.html | 3 +- .../mdn/editor/syntax_highlighting/index.html | 3 +- files/ru/orphaned/mdn/editor/tables/index.html | 3 +- .../simple_live_sample_demo/index.html | 3 +- files/ru/orphaned/mdn/tools/feeds/index.html | 3 +- .../ru/orphaned/mdn/tools/page_deletion/index.html | 3 +- .../ru/orphaned/mdn/tools/page_watching/index.html | 3 +- .../add-ons/webextensions/debugging/index.html | 3 +- files/ru/orphaned/toolkit_api/index.html | 3 +- .../tools/add-ons/dom_inspector/index.html | 3 +- files/ru/orphaned/tools/add-ons/index.html | 3 +- .../checking_authenticity_with_password/index.html | 3 +- .../index.html" | 3 +- .../orphaned/web/html/element/element/index.html | 3 +- .../web/html/global_attributes/dropzone/index.html | 3 +- .../index.html" | 3 +- .../global_objects/array/prototype/index.html | 3 +- .../asyncfunction/prototype/index.html | 3 +- .../index.html" | 3 +- .../orphaned/web/manifest/serviceworker/index.html | 3 +- .../information_security_basics/index.html | 3 +- .../orphaned/web/svg/attribute/onload/index.html | 3 +- files/ru/orphaned/xml_in_mozilla/index.html | 3 +- files/ru/orphaned/xpcnativewrapper/index.html | 3 +- files/ru/orphaned/xpcom/index.html | 3 +- .../index.html" | 3 +- .../index.html" | 3 +- .../index.html" | 3 +- .../index.html" | 3 +- .../index.html" | 3 +- .../index.html" | 3 +- .../index.html" | 3 +- .../index.html" | 3 +- .../index.html" | 3 +- .../index.html" | 3 +- .../index.html" | 3 +- .../index.html" | 3 +- .../index.html" | 3 +- .../index.html" | 3 +- .../index.html" | 3 +- .../index.html" | 3 +- .../index.html" | 3 +- .../index.html" | 3 +- .../\321\202\320\265\320\274\321\213/index.html" | 3 +- files/ru/plugins/roadmap/index.html | 3 +- files/ru/tools/accessibility_inspector/index.html | 3 +- files/ru/tools/browser_console/index.html | 5 +- .../debugger/how_to/debug_eval_sources/index.html | 3 +- .../how_to/pretty-print_a_minified_file/index.html | 3 +- .../page_inspector/how_to/edit_fonts/index.html | 3 +- .../how_to/examine_event_listeners/index.html | 3 +- .../how_to/open_the_inspector/index.html | 3 +- .../how_to/select_an_element/index.html | 3 +- .../page_inspector/keyboard_shortcuts/index.html | 3 +- files/ru/tools/performance/index.html | 3 +- files/ru/tools/performance/waterfall/index.html | 3 +- files/ru/tools/responsive_design_mode/index.html | 5 +- files/ru/tools/rulers/index.html | 3 +- files/ru/tools/web_console/ui_tour/index.html | 3 +- .../api/baseaudiocontext/createpanner/index.html | 3 +- .../api/baseaudiocontext/currenttime/index.html | 3 +- .../baseaudiocontext/decodeaudiodata/index.html | 3 +- .../tutorial/applying_styles_and_colors/index.html | 3 +- .../tutorial/basic_animations/index.html | 3 +- .../api/canvas_api/tutorial/compositing/index.html | 3 +- .../canvas_api/tutorial/drawing_shapes/index.html | 3 +- .../canvas_api/tutorial/drawing_text/index.html | 3 +- .../canvas_api/tutorial/using_images/index.html | 3 +- files/ru/web/api/crypto/getrandomvalues/index.html | 3 +- .../managing_screen_orientation/index.html | 3 +- files/ru/web/api/document/createelement/index.html | 3 +- files/ru/web/api/document/images/index.html | 3 +- .../api/document/readystatechange_event/index.html | 3 +- .../api/document_object_model/events/index.html | 3 +- .../api/document_object_model/examples/index.html | 3 +- files/ru/web/api/document_object_model/index.html | 3 +- .../document_object_model/introduction/index.html | 3 +- .../index.html | 3 +- .../documentorshadowroot/activeelement/index.html | 3 +- .../documentorshadowroot/getselection/index.html | 3 +- files/ru/web/api/element/blur_event/index.html | 3 +- files/ru/web/api/element/error_event/index.html | 3 +- files/ru/web/api/element/focusin_event/index.html | 3 +- files/ru/web/api/element/focusout_event/index.html | 3 +- .../web/api/elementcssinlinestyle/style/index.html | 3 +- .../introduction/index.html | 3 +- files/ru/web/api/fullscreen_api/index.html | 3 +- files/ru/web/api/geolocation_api/index.html | 3 +- .../using_the_geolocation_api/index.html | 3 +- .../drag_operations/index.html | 3 +- files/ru/web/api/html_drag_and_drop_api/index.html | 3 +- files/ru/web/api/htmlaudioelement/audio/index.html | 3 +- files/ru/web/api/htmlelement/accesskey/index.html | 3 +- files/ru/web/api/htmlelement/innertext/index.html | 3 +- .../api/htmlelement/transitionend_event/index.html | 3 +- .../api/htmlmediaelement/seeking_event/index.html | 3 +- .../api/htmlorforeignelement/dataset/index.html | 3 +- .../web/api/htmlorforeignelement/nonce/index.html | 3 +- .../api/htmlorforeignelement/tabindex/index.html | 3 +- .../echocancellation/index.html | 3 +- files/ru/web/api/navigator/connection/index.html | 3 +- files/ru/web/api/node/replacechild/index.html | 3 +- .../nextelementsibling/index.html | 3 +- files/ru/web/api/notation/index.html | 3 +- files/ru/web/api/page_visibility_api/index.html | 3 +- .../web_workers_api/using_web_workers/index.html | 3 +- .../creating_3d_objects_using_webgl/index.html | 3 +- .../ru/web/api/webrtc_api/connectivity/index.html | 3 +- files/ru/web/api/webrtc_api/protocols/index.html | 3 +- files/ru/web/api/websockets_api/index.html | 3 +- .../index.html | 3 +- .../api/window/domcontentloaded_event/index.html | 3 +- files/ru/web/api/window/load_event/index.html | 3 +- .../api/window/requestanimationframe/index.html | 3 +- .../api/window/unhandledrejection_event/index.html | 3 +- .../api/windoworworkerglobalscope/btoa/index.html | 3 +- .../settimeout/index.html | 3 +- files/ru/web/api/xmldocument/async/index.html | 3 +- .../api/xmlhttprequest/loadstart_event/index.html | 3 +- files/ru/web/css/actual_value/index.html | 3 +- files/ru/web/css/comments/index.html | 3 +- .../css_animations/using_css_animations/index.html | 3 +- .../border-radius_generator/index.html | 3 +- .../box-shadow_generator/index.html | 3 +- .../web/css/css_backgrounds_and_borders/index.html | 3 +- .../using_multiple_backgrounds/index.html | 3 +- .../index.html | 5 +- .../introduction_to_the_css_box_model/index.html | 5 +- files/ru/web/css/css_color/index.html | 3 +- .../using_multi-column_layouts/index.html | 3 +- .../aligning_items_in_a_flex_container/index.html | 3 +- .../index.html | 4 +- .../index.html | 3 +- .../intro_to_formatting_contexts/index.html | 3 +- .../index.html | 7 +- .../css_grid_layout/grid_template_areas/index.html | 3 +- .../line-based_placement_with_css_grid/index.html | 5 +- .../adding_z-index/index.html | 3 +- .../understanding_z_index/index.html | 3 +- .../stacking_without_z-index/index.html | 3 +- files/ru/web/css/css_selectors/index.html | 3 +- .../index.html | 7 +- files/ru/web/css/layout_mode/index.html | 3 +- files/ru/web/css/length/index.html | 3 +- .../media_queries/testing_media_queries/index.html | 3 +- files/ru/web/css/pseudo-classes/index.html | 3 +- files/ru/web/css/replaced_element/index.html | 3 +- files/ru/web/css/specified_value/index.html | 3 +- files/ru/web/css/syntax/index.html | 3 +- .../ru/web/css/visual_formatting_model/index.html | 3 +- files/ru/web/guide/ajax/getting_started/index.html | 3 +- .../creating_and_triggering_events/index.html | 3 +- files/ru/web/guide/graphics/index.html | 3 +- .../html/html5/constraint_validation/index.html | 3 +- files/ru/web/guide/html/html5/index.html | 3 +- .../html/html5/introduction_to_html5/index.html | 3 +- .../using_html_sections_and_outlines/index.html | 3 +- files/ru/web/guide/performance/index.html | 3 +- .../ru/web/html/attributes/crossorigin/index.html | 3 +- files/ru/web/html/element/button/index.html | 3 +- files/ru/web/html/element/link/index.html | 3 +- files/ru/web/html/inline_elements/index.html | 3 +- files/ru/web/html/link_types/index.html | 3 +- files/ru/web/html/reference/index.html | 3 +- .../html/using_the_application_cache/index.html | 3 +- files/ru/web/http/authentication/index.html | 3 +- .../identifying_resources_on_the_web/index.html | 3 +- files/ru/web/http/caching/index.html | 3 +- files/ru/web/http/cookies/index.html | 3 +- .../ru/web/http/headers/accept-charset/index.html | 3 +- .../ru/web/http/headers/accept-language/index.html | 3 +- files/ru/web/http/headers/accept-patch/index.html | 3 +- files/ru/web/http/headers/accept-ranges/index.html | 3 +- files/ru/web/http/headers/accept/index.html | 3 +- .../access-control-allow-headers/index.html | 3 +- .../access-control-allow-methods/index.html | 3 +- .../headers/access-control-allow-origin/index.html | 3 +- .../http/headers/access-control-max-age/index.html | 3 +- files/ru/web/http/headers/authorization/index.html | 3 +- files/ru/web/http/headers/cache-control/index.html | 3 +- files/ru/web/http/headers/connection/index.html | 3 +- .../http/headers/content-disposition/index.html | 3 +- .../web/http/headers/content-encoding/index.html | 3 +- .../web/http/headers/content-language/index.html | 3 +- .../ru/web/http/headers/content-length/index.html | 3 +- files/ru/web/http/headers/content-type/index.html | 3 +- files/ru/web/http/headers/date/index.html | 3 +- files/ru/web/http/headers/dnt/index.html | 3 +- files/ru/web/http/headers/etag/index.html | 3 +- files/ru/web/http/headers/expect/index.html | 3 +- files/ru/web/http/headers/expires/index.html | 3 +- files/ru/web/http/headers/host/index.html | 3 +- files/ru/web/http/headers/if-match/index.html | 3 +- .../web/http/headers/if-modified-since/index.html | 3 +- .../http/headers/if-unmodified-since/index.html | 3 +- files/ru/web/http/headers/index.html | 3 +- files/ru/web/http/headers/last-modified/index.html | 3 +- files/ru/web/http/headers/origin/index.html | 3 +- files/ru/web/http/headers/pragma/index.html | 3 +- files/ru/web/http/headers/range/index.html | 3 +- files/ru/web/http/headers/referer/index.html | 3 +- files/ru/web/http/headers/retry-after/index.html | 3 +- files/ru/web/http/headers/set-cookie/index.html | 3 +- .../headers/strict-transport-security/index.html | 3 +- files/ru/web/http/headers/vary/index.html | 3 +- .../http/headers/x-content-type-options/index.html | 3 +- .../ru/web/http/headers/x-forwarded-for/index.html | 3 +- .../web/http/headers/x-xss-protection/index.html | 3 +- .../ru/web/javascript/about_javascript/index.html | 3 +- .../web/javascript/guide/introduction/index.html | 3 +- .../guide/loops_and_iteration/index.html | 3 +- .../web/javascript/guide/using_promises/index.html | 3 +- files/ru/web/javascript/reference/about/index.html | 3 +- .../classes/private_class_fields/index.html | 3 +- .../classes/public_class_fields/index.html | 3 +- .../reference/errors/var_hides_argument/index.html | 3 +- .../functions/method_definitions/index.html | 3 +- .../proxy/proxy/deleteproperty/index.html | 3 +- .../global_objects/proxy/proxy/set/index.html | 3 +- .../global_objects/string/trimend/index.html | 3 +- .../global_objects/string/trimstart/index.html | 3 +- .../reference/operators/assignment/index.html | 3 +- .../reference/operators/comma_operator/index.html | 3 +- .../operators/conditional_operator/index.html | 3 +- .../reference/operators/grouping/index.html | 3 +- .../operators/pipeline_operator/index.html | 3 +- .../reference/statements/block/index.html | 3 +- .../reference/template_literals/index.html | 3 +- files/ru/web/javascript/shells/index.html | 3 +- files/ru/web/mathml/attribute/index.html | 3 +- .../deriving_the_quadratic_formula/index.html | 3 +- files/ru/web/mathml/examples/index.html | 3 +- .../examples/mathml_pythagorean_theorem/index.html | 3 +- .../ru/web/media/formats/webrtc_codecs/index.html | 5 +- .../index.html | 3 +- files/ru/web/performance/fundamentals/index.html | 3 +- files/ru/web/svg/element/a/index.html | 3 +- files/ru/web/svg/element/animate/index.html | 3 +- files/ru/web/svg/element/animatemotion/index.html | 3 +- files/ru/web/svg/element/circle/index.html | 3 +- files/ru/web/svg/element/defs/index.html | 3 +- files/ru/web/svg/element/ellipse/index.html | 3 +- files/ru/web/svg/element/feblend/index.html | 3 +- files/ru/web/svg/element/foreignobject/index.html | 3 +- files/ru/web/svg/element/g/index.html | 3 +- files/ru/web/svg/element/image/index.html | 3 +- files/ru/web/svg/element/index.html | 3 +- files/ru/web/svg/element/line/index.html | 3 +- files/ru/web/svg/element/lineargradient/index.html | 3 +- files/ru/web/svg/element/path/index.html | 3 +- files/ru/web/svg/element/pattern/index.html | 3 +- files/ru/web/svg/element/polygon/index.html | 3 +- files/ru/web/svg/element/radialgradient/index.html | 3 +- files/ru/web/svg/element/rect/index.html | 3 +- files/ru/web/svg/element/svg/index.html | 3 +- files/ru/web/svg/element/text/index.html | 3 +- files/ru/web/svg/element/use/index.html | 3 +- files/ru/web/svg/tutorial/basic_shapes/index.html | 5 +- .../svg/tutorial/basic_transformations/index.html | 3 +- files/ru/web/svg/tutorial/introduction/index.html | 3 +- files/ru/web/svg/tutorial/positions/index.html | 5 +- files/ru/web/svg/tutorial/svg_and_css/index.html | 3 +- .../using_custom_elements/index.html | 3 +- files/ru/web/xpath/functions/floor/index.html | 3 +- files/ru/web/xpath/functions/index.html | 3 +- 726 files changed, 11720 insertions(+), 10268 deletions(-) (limited to 'files/ru/learn/javascript') diff --git a/files/ru/_redirects.txt b/files/ru/_redirects.txt index b1507c4489..eb2ee1dbbb 100644 --- a/files/ru/_redirects.txt +++ b/files/ru/_redirects.txt @@ -1,13 +1,15 @@ # FROM-URL TO-URL /ru/docs/AJAX /ru/docs/Web/Guide/AJAX -/ru/docs/AJAX/С_чего_начать /ru/docs/Web/Guide/AJAX/С_чего_начать -/ru/docs/AJAX/С_чего_начать? /ru/docs/Web/Guide/AJAX/С_чего_начать? -/ru/docs/AJAX:С_чего_начать /ru/docs/Web/Guide/AJAX/С_чего_начать -/ru/docs/AJAX:С_чего_начать? /ru/docs/Web/Guide/AJAX/С_чего_начать? +/ru/docs/AJAX/С_чего_начать /ru/docs/Web/Guide/AJAX/Getting_Started +/ru/docs/AJAX/С_чего_начать? /ru/docs/orphaned/Web/Guide/AJAX/С_чего_начать? +/ru/docs/AJAX:С_чего_начать /ru/docs/Web/Guide/AJAX/Getting_Started +/ru/docs/AJAX:С_чего_начать? /ru/docs/orphaned/Web/Guide/AJAX/С_чего_начать? +/ru/docs/A_Basic_RayCaster /ru/docs/conflicting/Web/API/Canvas_API/A_basic_ray-caster /ru/docs/Accessibility /ru/docs/Web/Accessibility /ru/docs/Accessibility/Keyboard-navigable_JavaScript_widgets /ru/docs/Web/Accessibility/Keyboard-navigable_JavaScript_widgets /ru/docs/Apps/Progressive /ru/docs/Web/Progressive_web_apps -/ru/docs/Apps/Progressive/Заметный /ru/docs/Web/Progressive_web_apps/Заметный +/ru/docs/Apps/Progressive/Заметный /ru/docs/conflicting/Web/Progressive_web_apps_628955cdadd77b10ec99de034fc76374 +/ru/docs/Building_an_Extension /ru/docs/conflicting/Mozilla/Add-ons /ru/docs/CSS /ru/docs/Web/CSS /ru/docs/CSS/:active /ru/docs/Web/CSS/:active /ru/docs/CSS/@namespace /ru/docs/Web/CSS/@namespace @@ -17,7 +19,8 @@ /ru/docs/CSS/background-repeat /ru/docs/Web/CSS/background-repeat /ru/docs/CSS/display /ru/docs/Web/CSS/display /ru/docs/CSS/float /ru/docs/Web/CSS/float -/ru/docs/CSS/Синтаксис /ru/docs/Web/CSS/Синтаксис +/ru/docs/CSS/Синтаксис /ru/docs/Web/CSS/Syntax +/ru/docs/Chrome /ru/docs/conflicting/Glossary/Chrome /ru/docs/Core_JavaScript_1.5_Reference /ru/docs/Web/JavaScript/Reference /ru/docs/Core_JavaScript_1.5_Reference/Functions /ru/docs/Web/JavaScript/Guide/Functions /ru/docs/Core_JavaScript_1.5_Reference/Global_Functions /ru/docs/Web/JavaScript/Reference/Global_Objects @@ -36,33 +39,65 @@ /ru/docs/Core_JavaScript_1.5_Reference:Global_Objects /ru/docs/Web/JavaScript/Reference/Global_Objects /ru/docs/Core_JavaScript_1.5_Reference:Global_Objects:Array /ru/docs/Web/JavaScript/Reference/Global_Objects/Array /ru/docs/Core_JavaScript_1.5_Reference:Global_Objects:Boolean /ru/docs/Web/JavaScript/Reference/Global_Objects/Boolean -/ru/docs/Creating_Custom_Firefox_Extensions_with_the_Mozilla_Build_System /ru/docs/Создание_расширения_для_Firefox_с_использованием_Mozilla_Build_System +/ru/docs/Creating_Custom_Firefox_Extensions_with_the_Mozilla_Build_System /ru/docs/orphaned/Создание_расширения_для_Firefox_с_использованием_Mozilla_Build_System +/ru/docs/DOM /ru/docs/conflicting/Web/API/Document_Object_Model +/ru/docs/DOM/DOM_Reference /ru/docs/Web/API/Document_Object_Model +/ru/docs/DOM/DOM_Reference/Events /ru/docs/Web/API/Document_Object_Model/Events +/ru/docs/DOM/DOM_Reference/Examples /ru/docs/Web/API/Document_Object_Model/Examples +/ru/docs/DOM/DOM_Reference/Locating_DOM_elements_using_selectors /ru/docs/Web/API/Document_object_model/Locating_DOM_elements_using_selectors +/ru/docs/DOM/DOM_Reference/Введение /ru/docs/Web/API/Document_Object_Model/Introduction /ru/docs/DOM/HTMLTableElement /ru/docs/Web/API/HTMLTableElement /ru/docs/DOM/Node.compareDocumentPosition /ru/docs/Web/API/Node/compareDocumentPosition /ru/docs/DOM/Node.lastChild /ru/docs/Web/API/Node/lastChild +/ru/docs/DOM/Using_fullscreen_mode /ru/docs/Web/API/Fullscreen_API +/ru/docs/DOM/Using_web_workers /ru/docs/Web/API/Web_Workers_API/Using_web_workers +/ru/docs/DOM/document.createElement /ru/docs/Web/API/Document/createElement +/ru/docs/DOM/document.images /ru/docs/Web/API/Document/images /ru/docs/DOM/element /ru/docs/Web/API/Element /ru/docs/DOM/element.dispatchEvent /ru/docs/Web/API/EventTarget/dispatchEvent /ru/docs/DOM/element.getAttribute /ru/docs/Web/API/Element/getAttribute /ru/docs/DOM/element.onkeypress /ru/docs/Web/API/GlobalEventHandlers/onkeypress /ru/docs/DOM/table /ru/docs/Web/API/HTMLTableElement -/ru/docs/DOM:document.createElement /ru/docs/DOM/document.createElement +/ru/docs/DOM/window.requestAnimationFrame /ru/docs/Web/API/window/requestAnimationFrame +/ru/docs/DOM:document.createElement /ru/docs/Web/API/Document/createElement /ru/docs/DOM:table /ru/docs/Web/API/HTMLTableElement /ru/docs/Developer_Guide /ru/docs/Mozilla/Developer_guide /ru/docs/Developer_Guide/So_you_just_built_Firefox /ru/docs/Mozilla/Developer_guide/So_you_just_built_Firefox /ru/docs/Developer_Guide/mozilla-central /ru/docs/Mozilla/Developer_guide/mozilla-central -/ru/docs/Developer_Guide/Исходный_код /ru/docs/Mozilla/Developer_guide/Исходный_код -/ru/docs/Firefox_3_для_разработчика /ru/docs/Firefox_3_for_developers +/ru/docs/Developer_Guide/Исходный_код /ru/docs/Mozilla/Developer_guide/Source_Code +/ru/docs/Firefox_3.5_для_разработчика /ru/docs/Mozilla/Firefox/Releases/3.5 +/ru/docs/Firefox_3_for_developers /ru/docs/Mozilla/Firefox/Releases/3 +/ru/docs/Firefox_3_для_разработчика /ru/docs/Mozilla/Firefox/Releases/3 /ru/docs/Firefox_addons_developer_guide/Introduction_to_XUL—How_to_build_a_more_intuitive_UI-redirect-1 /ru/docs/Firefox_addons_developer_guide/Introduction_to_XUL—How_to_build_a_more_intuitive_UI /ru/docs/Firefox_addons_developer_guide/Знакомство_с_дополнениями /ru/docs/Firefox_addons_developer_guide/Introduction_to_Extensions /ru/docs/Firefox_addons_developer_guide/Технологии_используемые_при_разработке_расширений /ru/docs/Firefox_addons_developer_guide/Technologies_used_in_developing_extensions -/ru/docs/Glossary /ru/docs/Словарь -/ru/docs/Glossary/Boolean /ru/docs/Словарь/Boolean -/ru/docs/Glossary/Empty_element /ru/docs/Словарь/Empty_element -/ru/docs/Glossary/JavaScript /ru/docs/Словарь/JavaScript -/ru/docs/Glossary/Number /ru/docs/Словарь/Number -/ru/docs/Glossary/WebSockets /ru/docs/Словарь/WebSockets -/ru/docs/Glossary/undefined /ru/docs/Словарь/undefined -/ru/docs/Glossary/пустой_элемент /ru/docs/Словарь/Empty_element +/ru/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript/Заключение /ru/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript/Finishing_up +/ru/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript/Обнаружение_столкновений /ru/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript/Collision_detection +/ru/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript/Переместить_мяч /ru/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript/Move_the_ball +/ru/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript/Создаем_зону_кирпичей /ru/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript/Build_the_brick_field +/ru/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript/Создание_Canvas_и_рисование_на_нём /ru/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript/Create_the_Canvas_and_draw_on_it +/ru/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript/Управление_мышью /ru/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript/Mouse_controls +/ru/docs/Games/Tutorials/Создание_2D_Breakout_игры_на_Phaser /ru/docs/Games/Tutorials/2D_breakout_game_Phaser +/ru/docs/Games/Tutorials/Создание_2D_Breakout_игры_на_Phaser/Bounce_off_the_walls /ru/docs/Games/Tutorials/2D_breakout_game_Phaser/Bounce_off_the_walls +/ru/docs/Games/Tutorials/Создание_2D_Breakout_игры_на_Phaser/Game_over /ru/docs/Games/Tutorials/2D_breakout_game_Phaser/Game_over +/ru/docs/Games/Tutorials/Создание_2D_Breakout_игры_на_Phaser/Initialize_the_framework /ru/docs/Games/Tutorials/2D_breakout_game_Phaser/Initialize_the_framework +/ru/docs/Games/Tutorials/Создание_2D_Breakout_игры_на_Phaser/Load_the_assets_and_print_them_on_screen /ru/docs/Games/Tutorials/2D_breakout_game_Phaser/Load_the_assets_and_print_them_on_screen +/ru/docs/Games/Tutorials/Создание_2D_Breakout_игры_на_Phaser/Move_the_ball /ru/docs/Games/Tutorials/2D_breakout_game_Phaser/Move_the_ball +/ru/docs/Games/Tutorials/Создание_2D_Breakout_игры_на_Phaser/Physics /ru/docs/Games/Tutorials/2D_breakout_game_Phaser/Physics +/ru/docs/Games/Tutorials/Создание_2D_Breakout_игры_на_Phaser/Scaling /ru/docs/Games/Tutorials/2D_breakout_game_Phaser/Scaling +/ru/docs/Games/Tutorials/Создание_2D_Breakout_игры_на_Phaser/Жизни /ru/docs/Games/Tutorials/2D_breakout_game_Phaser/Extra_lives +/ru/docs/Games/Tutorials/Создание_2D_Breakout_игры_на_Phaser/Обработка_коллизий /ru/docs/Games/Tutorials/2D_breakout_game_Phaser/Collision_detection +/ru/docs/Games/Tutorials/Создание_2D_Breakout_игры_на_Phaser/Очки /ru/docs/Games/Tutorials/2D_breakout_game_Phaser/The_score +/ru/docs/Games/Tutorials/Создание_2D_Breakout_игры_на_Phaser/Платформа_и_управление /ru/docs/Games/Tutorials/2D_breakout_game_Phaser/Player_paddle_and_controls +/ru/docs/Games/Tutorials/Создание_2D_Breakout_игры_на_Phaser/Победа /ru/docs/Games/Tutorials/2D_breakout_game_Phaser/Win_the_game +/ru/docs/Games/Tutorials/Создание_2D_Breakout_игры_на_Phaser/Создание_кирпичей /ru/docs/Games/Tutorials/2D_breakout_game_Phaser/Build_the_brick_field +/ru/docs/Games/Анатомия /ru/docs/Games/Anatomy +/ru/docs/Games/Ввод /ru/docs/Games/Introduction +/ru/docs/Games/Инструменты /ru/docs/Games/Tools +/ru/docs/Games/Инструменты/asm.js /ru/docs/Games/Tools/asm.js +/ru/docs/Glossary/Block/Скриптинг /ru/docs/Glossary/Block/Scripting +/ru/docs/Glossary/Polifill /ru/docs/orphaned/Glossary/Polifill +/ru/docs/Glossary/пустой_элемент /ru/docs/Glossary/Empty_element /ru/docs/HTML /ru/docs/Web/HTML /ru/docs/HTML/Canvas /ru/docs/Web/API/Canvas_API /ru/docs/HTML/Canvas/Рисование_графики_с_помощью_Canvas /ru/docs/Web/API/Canvas_API/Tutorial @@ -72,19 +107,23 @@ /ru/docs/HTML/Element/acronym /ru/docs/Web/HTML/Element/acronym /ru/docs/HTML/Element/form /ru/docs/Web/HTML/Element/form /ru/docs/HTML/Element/стиль /ru/docs/Web/HTML/Element/style -/ru/docs/HTML/Optimizing_Your_Pages_for_Speculative_Parsing /ru/docs/Web/HTML/Optimizing_Your_Pages_for_Speculative_Parsing -/ru/docs/HTML/Использование_кэширования_приложений /ru/docs/Web/HTML/Использование_кэширования_приложений +/ru/docs/HTML/HTML5 /ru/docs/Web/Guide/HTML/HTML5 +/ru/docs/HTML/HTML5/Constraint_validation /ru/docs/Web/Guide/HTML/HTML5/Constraint_validation +/ru/docs/HTML/HTML5/Введение_в_HTML5 /ru/docs/Web/Guide/HTML/HTML5/Introduction_to_HTML5 +/ru/docs/HTML/Optimizing_Your_Pages_for_Speculative_Parsing /ru/docs/Glossary/speculative_parsing +/ru/docs/HTML/Использование_кэширования_приложений /ru/docs/Web/HTML/Using_the_application_cache /ru/docs/IndexedDB /ru/docs/Web/API/IndexedDB_API /ru/docs/IndexedDB/Basic_Concepts_Behind_IndexedDB /ru/docs/Web/API/IndexedDB_API/Basic_Concepts_Behind_IndexedDB /ru/docs/IndexedDB/Using_IndexedDB /ru/docs/Web/API/IndexedDB_API/Using_IndexedDB +/ru/docs/Introduction_(alternate) /ru/docs/Mozilla/Developer_guide/Introduction /ru/docs/JavaScript /ru/docs/Web/JavaScript /ru/docs/JavaScript/A_re-introduction_to_JavaScript /ru/docs/Web/JavaScript/A_re-introduction_to_JavaScript /ru/docs/JavaScript/Data_structures /ru/docs/Web/JavaScript/Data_structures /ru/docs/JavaScript/ECMAScript_5_support_in_Mozilla /ru/docs/Web/JavaScript/New_in_JavaScript/ECMAScript_5_support_in_Mozilla /ru/docs/JavaScript/Guide /ru/docs/Web/JavaScript/Guide -/ru/docs/JavaScript/Guide/About /ru/docs/Web/JavaScript/Guide/About -/ru/docs/JavaScript/Guide/About_ru /ru/docs/Web/JavaScript/Guide/About -/ru/docs/JavaScript/Guide/About_ru-redirect-1 /ru/docs/Web/JavaScript/Guide/About +/ru/docs/JavaScript/Guide/About /ru/docs/conflicting/Web/JavaScript/Guide/Introduction +/ru/docs/JavaScript/Guide/About_ru /ru/docs/conflicting/Web/JavaScript/Guide/Introduction +/ru/docs/JavaScript/Guide/About_ru-redirect-1 /ru/docs/conflicting/Web/JavaScript/Guide/Introduction /ru/docs/JavaScript/Guide/Functions /ru/docs/Web/JavaScript/Guide/Functions /ru/docs/JavaScript/Guide/Functions-redirect-1 /ru/docs/Web/JavaScript/Guide/Functions /ru/docs/JavaScript/Guide/LiveConnect_Overview /ru/docs/Web/JavaScript/Guide/LiveConnect_Overview @@ -96,8 +135,8 @@ /ru/docs/JavaScript/Guide/Values,_variables,_and_literals-redirect-1 /ru/docs/Web/JavaScript/Guide/Grammar_and_types /ru/docs/JavaScript/Guide/Working_with_Objects /ru/docs/Web/JavaScript/Guide/Working_with_Objects /ru/docs/JavaScript/Guide/Working_with_Objects-redirect-1 /ru/docs/Web/JavaScript/Guide/Working_with_Objects -/ru/docs/JavaScript/Guide/ru_JavaScript_Overview /ru/docs/Web/JavaScript/Guide/JavaScript_Overview -/ru/docs/JavaScript/Guide/Об_этом_руководстве /ru/docs/Web/JavaScript/Guide/Об_этом_руководстве +/ru/docs/JavaScript/Guide/ru_JavaScript_Overview /ru/docs/conflicting/Web/JavaScript/Guide/Introduction_6f341ba6db4b060ccbd8dce4a0d5214b +/ru/docs/JavaScript/Guide/Об_этом_руководстве /ru/docs/orphaned/Web/JavaScript/Guide/Об_этом_руководстве /ru/docs/JavaScript/Guide/Регулярные выражения /ru/docs/Web/JavaScript/Guide/Regular_Expressions /ru/docs/JavaScript/Guide_ru /ru/docs/Web/JavaScript/Guide /ru/docs/JavaScript/Guide_ru/Inheritance_and_the_prototype_chain_ru /ru/docs/Web/JavaScript/Inheritance_and_the_prototype_chain @@ -114,7 +153,7 @@ /ru/docs/JavaScript/Reference/Global_Objects/Array/every /ru/docs/Web/JavaScript/Reference/Global_Objects/Array/every /ru/docs/JavaScript/Reference/Global_Objects/Array/forEach /ru/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach /ru/docs/JavaScript/Reference/Global_Objects/Array/map /ru/docs/Web/JavaScript/Reference/Global_Objects/Array/map -/ru/docs/JavaScript/Reference/Global_Objects/Array/prototype /ru/docs/Web/JavaScript/Reference/Global_Objects/Array/prototype +/ru/docs/JavaScript/Reference/Global_Objects/Array/prototype /ru/docs/orphaned/Web/JavaScript/Reference/Global_Objects/Array/prototype /ru/docs/JavaScript/Reference/Global_Objects/Array/some /ru/docs/Web/JavaScript/Reference/Global_Objects/Array/some /ru/docs/JavaScript/Reference/Global_Objects/Date /ru/docs/Web/JavaScript/Reference/Global_Objects/Date /ru/docs/JavaScript/Reference/Global_Objects/Date/toLocaleDateString /ru/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString @@ -138,25 +177,41 @@ /ru/docs/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptor /ru/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptor /ru/docs/JavaScript/Reference/Global_Objects/Object/hasOwnProperty /ru/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty /ru/docs/JavaScript/Reference/Global_Objects/Object/is /ru/docs/Web/JavaScript/Reference/Global_Objects/Object/is -/ru/docs/JavaScript/Reference/Global_Objects/Object/prototype /ru/docs/Web/JavaScript/Reference/Global_Objects/Object/prototype +/ru/docs/JavaScript/Reference/Global_Objects/Object/prototype /ru/docs/conflicting/Web/JavaScript/Reference/Global_Objects/Object /ru/docs/JavaScript/Reference/Global_Objects/Object/valueOf /ru/docs/Web/JavaScript/Reference/Global_Objects/Object/valueOf /ru/docs/JavaScript/Reference/Global_Objects/String /ru/docs/Web/JavaScript/Reference/Global_Objects/String /ru/docs/JavaScript/Reference/Global_Objects/String/replace /ru/docs/Web/JavaScript/Reference/Global_Objects/String/replace /ru/docs/JavaScript/Reference/Operators /ru/docs/Web/JavaScript/Reference/Operators /ru/docs/JavaScript/Reference/Operators/Operator_Precedence /ru/docs/Web/JavaScript/Reference/Operators/Operator_Precedence /ru/docs/JavaScript/Reference/Operators/delete /ru/docs/Web/JavaScript/Reference/Operators/delete -/ru/docs/JavaScript/Reference/Operators/Оператор_Запятая /ru/docs/Web/JavaScript/Reference/Operators/Оператор_Запятая +/ru/docs/JavaScript/Reference/Operators/Оператор_Запятая /ru/docs/Web/JavaScript/Reference/Operators/Comma_Operator /ru/docs/JavaScript/Reference/Statements /ru/docs/Web/JavaScript/Reference/Statements /ru/docs/JavaScript/Reference/Statements/let /ru/docs/Web/JavaScript/Reference/Statements/let -/ru/docs/JavaScript_Shells /ru/docs/Web/JavaScript/JavaScript_шеллы +/ru/docs/JavaScript_Shells /ru/docs/Web/JavaScript/Shells /ru/docs/JavaScript_technologies_overview /ru/docs/Web/JavaScript/JavaScript_technologies_overview -/ru/docs/JavaScript_шеллы /ru/docs/Web/JavaScript/JavaScript_шеллы +/ru/docs/JavaScript_шеллы /ru/docs/Web/JavaScript/Shells +/ru/docs/Learn/CSS/Building_blocks/Каскад_задачи /ru/docs/Learn/CSS/Building_blocks/Cascade_tasks +/ru/docs/Learn/CSS/Building_blocks/Селекторы /ru/docs/Learn/CSS/Building_blocks/Selectors +/ru/docs/Learn/CSS/Building_blocks/Селекторы/Attribute_selectors /ru/docs/Learn/CSS/Building_blocks/Selectors/Attribute_selectors +/ru/docs/Learn/CSS/Building_blocks/Селекторы/Combinators /ru/docs/Learn/CSS/Building_blocks/Selectors/Combinators +/ru/docs/Learn/CSS/Building_blocks/Селекторы/Pseudo-classes_and_pseudo-elements /ru/docs/Learn/CSS/Building_blocks/Selectors/Pseudo-classes_and_pseudo-elements +/ru/docs/Learn/CSS/Building_blocks/Селекторы/Type_Class_and_ID_Selectors /ru/docs/Learn/CSS/Building_blocks/Selectors/Type_Class_and_ID_Selectors +/ru/docs/Learn/CSS/Building_blocks/Селекторы/Селекторы_Задачи /ru/docs/Learn/CSS/Building_blocks/Selectors/Selectors_Tasks +/ru/docs/Learn/CSS/CSS_layout/Макет_с_несколькими_столбцами /ru/docs/Learn/CSS/CSS_layout/Multiple-column_Layout +/ru/docs/Learn/CSS/CSS_layout/Навыки_Multicol /ru/docs/Learn/CSS/CSS_layout/Multicol_skills +/ru/docs/Learn/CSS/CSS_layout/Навыки_позиционирования /ru/docs/Learn/CSS/CSS_layout/Position_skills +/ru/docs/Learn/CSS/CSS_layout/Нормальный_поток /ru/docs/Learn/CSS/CSS_layout/Normal_Flow +/ru/docs/Learn/CSS/CSS_layout/Отзывчивый_дизайн /ru/docs/Learn/CSS/CSS_layout/Responsive_Design +/ru/docs/Learn/CSS/CSS_properties /ru/docs/conflicting/Learn/CSS/Building_blocks/Selectors +/ru/docs/Learn/CSS/First_steps/Как_структурирован_CSS /ru/docs/Learn/CSS/First_steps/How_CSS_is_structured +/ru/docs/Learn/CSS/First_steps/Что_такое_CSS /ru/docs/Learn/CSS/First_steps/What_is_CSS /ru/docs/Learn/CSS/Introduction_to_CSS /en-US/docs/Learn/CSS/First_steps /ru/docs/Learn/CSS/Introduction_to_CSS/Attribute_selectors /en-US/docs/Learn/CSS/Building_blocks/Selectors/Attribute_selectors /ru/docs/Learn/CSS/Introduction_to_CSS/Box_model /en-US/docs/Learn/CSS/Building_blocks/The_box_model /ru/docs/Learn/CSS/Introduction_to_CSS/Cascade_and_inheritance /en-US/docs/Learn/CSS/Building_blocks/Cascade_and_inheritance /ru/docs/Learn/CSS/Introduction_to_CSS/Combinators_and_multiple_selectors /en-US/docs/Learn/CSS/Building_blocks/Selectors/Combinators /ru/docs/Learn/CSS/Introduction_to_CSS/How_CSS_works /en-US/docs/Learn/CSS/First_steps/How_CSS_works +/ru/docs/Learn/CSS/Introduction_to_CSS/Ponimanie_osnov_CSS /ru/docs/Learn/CSS/Building_blocks/Fundamental_CSS_comprehension /ru/docs/Learn/CSS/Introduction_to_CSS/Pseudo-classes_and_pseudo-elements /en-US/docs/Learn/CSS/Building_blocks/Selectors/Pseudo-classes_and_pseudo-elements /ru/docs/Learn/CSS/Introduction_to_CSS/Selectors /en-US/docs/Learn/CSS/Building_blocks/Selectors /ru/docs/Learn/CSS/Introduction_to_CSS/Simple_selectors /en-US/docs/Learn/CSS/Building_blocks/Selectors/Type_Class_and_ID_Selectors @@ -166,57 +221,241 @@ /ru/docs/Learn/CSS/Styling_boxes /en-US/docs/Learn/CSS/Building_blocks /ru/docs/Learn/CSS/Styling_boxes/Box_model_recap /en-US/docs/Learn/CSS/Building_blocks/The_box_model /ru/docs/Learn/CSS/Styling_boxes/Styling_tables /ru/docs/Learn/CSS/Building_blocks/Styling_tables -/ru/docs/Learn/Getting_started_with_the_web/Installing_basic_software /ru/docs/Learn/Getting_started_with_the_web/Установка_базового_программного_обеспечения +/ru/docs/Learn/CSS/Styling_text/Веб_шрифты /ru/docs/Learn/CSS/Styling_text/Web_fonts +/ru/docs/Learn/CSS/Styling_text/Задание:_Стилизирование_школьного_сайта /ru/docs/Learn/CSS/Styling_text/Typesetting_a_homepage +/ru/docs/Learn/CSS/Styling_text/Стилизация_списков /ru/docs/Learn/CSS/Styling_text/Styling_lists +/ru/docs/Learn/CSS/Как /ru/docs/Learn/CSS/Howto +/ru/docs/Learn/Discover_browser_developer_tools /ru/docs/Learn/Common_questions/What_are_browser_developer_tools +/ru/docs/Learn/Getting_started_with_the_web/Веб_и_веб_стандарты /ru/docs/Learn/Getting_started_with_the_web/The_web_and_web_standards +/ru/docs/Learn/Getting_started_with_the_web/Установка_базового_программного_обеспечения /ru/docs/Learn/Getting_started_with_the_web/Installing_basic_software +/ru/docs/Learn/HTML/Forms /ru/docs/Learn/Forms +/ru/docs/Learn/HTML/Forms/How_to_build_custom_form_widgets /ru/docs/Learn/Forms/How_to_build_custom_form_controls +/ru/docs/Learn/HTML/Forms/How_to_structure_an_HTML_form /ru/docs/Learn/Forms/How_to_structure_a_web_form +/ru/docs/Learn/HTML/Forms/Sending_forms_through_JavaScript /ru/docs/Learn/Forms/Sending_forms_through_JavaScript +/ru/docs/Learn/HTML/Forms/Styling_HTML_forms /ru/docs/Learn/Forms/Styling_web_forms +/ru/docs/Learn/HTML/Forms/Валидация_формы /ru/docs/Learn/Forms/Form_validation +/ru/docs/Learn/HTML/Forms/Ваша_первая_HTML_форма /ru/docs/Learn/Forms/Your_first_form +/ru/docs/Learn/HTML/Forms/Отправка_и_Получение_данных_формы /ru/docs/Learn/Forms/Sending_and_retrieving_form_data +/ru/docs/Learn/HTML/Forms/Стандартные_виджеты_форм /ru/docs/Learn/Forms/Basic_native_form_controls +/ru/docs/Learn/HTML/Multimedia_and_embedding/Добавление_r_graphics_to_the_Web /ru/docs/Learn/HTML/Multimedia_and_embedding/Adding_vector_graphics_to_the_Web +/ru/docs/Learn/HTML/Multimedia_and_embedding/Изображения_в_HTML /ru/docs/Learn/HTML/Multimedia_and_embedding/Images_in_HTML +/ru/docs/Learn/HTML/Multimedia_and_embedding/Изображения_в_HTML/Проверьте_свои_знания:_Изображения_в_HTML /ru/docs/Learn/HTML/Multimedia_and_embedding/Images_in_HTML/Test_your_skills:_HTML_images +/ru/docs/Learn/HTML/Multimedia_and_embedding/заставка_Mozilla /ru/docs/Learn/HTML/Multimedia_and_embedding/Mozilla_splash_page +/ru/docs/Learn/HTML/Введение_в_HTML /ru/docs/Learn/HTML/Introduction_to_HTML +/ru/docs/Learn/HTML/Введение_в_HTML/Advanced_text_formatting /ru/docs/Learn/HTML/Introduction_to_HTML/Advanced_text_formatting +/ru/docs/Learn/HTML/Введение_в_HTML/Debugging_HTML /ru/docs/Learn/HTML/Introduction_to_HTML/Debugging_HTML +/ru/docs/Learn/HTML/Введение_в_HTML/HTML_text_fundamentals /ru/docs/Learn/HTML/Introduction_to_HTML/HTML_text_fundamentals +/ru/docs/Learn/HTML/Введение_в_HTML/Marking_up_a_letter /ru/docs/Learn/HTML/Introduction_to_HTML/Marking_up_a_letter +/ru/docs/Learn/HTML/Введение_в_HTML/Structuring_a_page_of_content /ru/docs/Learn/HTML/Introduction_to_HTML/Structuring_a_page_of_content +/ru/docs/Learn/HTML/Введение_в_HTML/The_head_metadata_in_HTML /ru/docs/Learn/HTML/Introduction_to_HTML/The_head_metadata_in_HTML +/ru/docs/Learn/HTML/Введение_в_HTML/Начало_работы /ru/docs/Learn/HTML/Introduction_to_HTML/Getting_started +/ru/docs/Learn/HTML/Введение_в_HTML/Создание_гиперссылок /ru/docs/Learn/HTML/Introduction_to_HTML/Creating_hyperlinks +/ru/docs/Learn/HTML/Введение_в_HTML/Структура_документа_и_веб-сайта /ru/docs/Learn/HTML/Introduction_to_HTML/Document_and_website_structure +/ru/docs/Learn/HTML/Рецепты /ru/docs/Learn/HTML/Howto +/ru/docs/Learn/How_the_Internet_works /ru/docs/Learn/Common_questions/How_does_the_Internet_work +/ru/docs/Learn/JavaScript/Asynchronous/Таймауты_и_интервалы /ru/docs/Learn/JavaScript/Asynchronous/Timeouts_and_intervals +/ru/docs/Learn/JavaScript/Building_blocks/События /ru/docs/Learn/JavaScript/Building_blocks/Events +/ru/docs/Learn/JavaScript/Объекты /ru/docs/Learn/JavaScript/Objects +/ru/docs/Learn/JavaScript/Объекты/Adding_bouncing_balls_features /ru/docs/Learn/JavaScript/Objects/Adding_bouncing_balls_features +/ru/docs/Learn/JavaScript/Объекты/Inheritance /ru/docs/Learn/JavaScript/Objects/Inheritance +/ru/docs/Learn/JavaScript/Объекты/JSON /ru/docs/Learn/JavaScript/Objects/JSON +/ru/docs/Learn/JavaScript/Объекты/Object-oriented_JS /ru/docs/Learn/JavaScript/Objects/Object-oriented_JS +/ru/docs/Learn/JavaScript/Объекты/Object_building_practice /ru/docs/Learn/JavaScript/Objects/Object_building_practice +/ru/docs/Learn/JavaScript/Объекты/Object_prototypes /ru/docs/Learn/JavaScript/Objects/Object_prototypes +/ru/docs/Learn/JavaScript/Объекты/Основы /ru/docs/Learn/JavaScript/Objects/Basics +/ru/docs/Learn/JavaScript/Первые_шаги /ru/docs/Learn/JavaScript/First_steps +/ru/docs/Learn/JavaScript/Первые_шаги/A_first_splash /ru/docs/Learn/JavaScript/First_steps/A_first_splash +/ru/docs/Learn/JavaScript/Первые_шаги/Arrays /ru/docs/Learn/JavaScript/First_steps/Arrays +/ru/docs/Learn/JavaScript/Первые_шаги/Math /ru/docs/Learn/JavaScript/First_steps/Math +/ru/docs/Learn/JavaScript/Первые_шаги/Useful_string_methods /ru/docs/Learn/JavaScript/First_steps/Useful_string_methods +/ru/docs/Learn/JavaScript/Первые_шаги/Variables /ru/docs/Learn/JavaScript/First_steps/Variables +/ru/docs/Learn/JavaScript/Первые_шаги/What_is_JavaScript /ru/docs/Learn/JavaScript/First_steps/What_is_JavaScript +/ru/docs/Learn/JavaScript/Первые_шаги/Создатель_глуых_историй /ru/docs/Learn/JavaScript/First_steps/Silly_story_generator +/ru/docs/Learn/JavaScript/Первые_шаги/Строки /ru/docs/Learn/JavaScript/First_steps/Strings +/ru/docs/Learn/JavaScript/Первые_шаги/Что_пошло_не_так /ru/docs/Learn/JavaScript/First_steps/What_went_wrong +/ru/docs/Learn/Pages_sites_servers_and_search_engines /ru/docs/Learn/Common_questions/Pages_sites_servers_and_search_engines +/ru/docs/Learn/Server-side/Django/Аутентификация /ru/docs/Learn/Server-side/Django/Authentication +/ru/docs/Learn/Server-side/Django/Введение /ru/docs/Learn/Server-side/Django/Introduction +/ru/docs/Learn/Server-side/Django/Разворачивание /ru/docs/Learn/Server-side/Django/Deployment +/ru/docs/Learn/Server-side/Django/Сессии /ru/docs/Learn/Server-side/Django/Sessions +/ru/docs/Learn/Server-side/Express_Nodejs/Учебник_сайт_local_library /ru/docs/Learn/Server-side/Express_Nodejs/Tutorial_local_library_website +/ru/docs/Learn/Server-side/First_steps/Веб_Безопасность /ru/docs/Learn/Server-side/First_steps/Website_security +/ru/docs/Learn/Tools_and_testing/ГитХаб /ru/docs/Learn/Tools_and_testing/GitHub +/ru/docs/Learn/Tools_and_testing/Фронтенд_JavaScript_фреймворки /ru/docs/Learn/Tools_and_testing/Client-side_JavaScript_frameworks +/ru/docs/Learn/Tools_and_testing/Фронтенд_JavaScript_фреймворки/React_getting_started /ru/docs/Learn/Tools_and_testing/Client-side_JavaScript_frameworks/React_getting_started +/ru/docs/Learn/Understanding_URLs /ru/docs/Learn/Common_questions/What_is_a_URL +/ru/docs/Learn/Understanding_domain_names /ru/docs/Learn/Common_questions/What_is_a_domain_name +/ru/docs/Learn/Understanding_links_on_the_web /ru/docs/Learn/Common_questions/What_are_hyperlinks /ru/docs/Learn/Джаваскрипт /ru/docs/Learn/JavaScript -/ru/docs/MDN/Contribute/Editor /ru/docs/MDN/Editor -/ru/docs/MDN/Contribute/Editor/Basics /ru/docs/MDN/Editor/Basics -/ru/docs/MDN/Contribute/Editor/Basics/Page_controls /ru/docs/MDN/Editor/Basics/Page_controls -/ru/docs/MDN/Contribute/Editor/Basics/Toolbar /ru/docs/MDN/Editor/Basics/Toolbar -/ru/docs/MDN/Contribute/Editor/Source_mode /ru/docs/MDN/Editor/Source_mode -/ru/docs/MDN/Contribute/Editor/Tables /ru/docs/MDN/Editor/Tables -/ru/docs/MDN/Contribute/Editor/Горячие_клавиши /ru/docs/MDN/Editor/Горячие_клавиши -/ru/docs/MDN/Contribute/Editor/Картинки /ru/docs/MDN/Editor/Картинки -/ru/docs/MDN/Contribute/Editor/Перенаправление /ru/docs/MDN/Editor/Перенаправление -/ru/docs/MDN/Contribute/Editor/Синтаксические_выделения /ru/docs/MDN/Editor/Синтаксические_выделения -/ru/docs/MDN/Contribute/Editor/Ссылки /ru/docs/MDN/Editor/Ссылки +/ru/docs/Learn/Доступность /ru/docs/Learn/Accessibility +/ru/docs/Learn/Доступность/Accessibility_troubleshooting /ru/docs/Learn/Accessibility/Accessibility_troubleshooting +/ru/docs/Learn/Доступность/CSS_and_JavaScript /ru/docs/Learn/Accessibility/CSS_and_JavaScript +/ru/docs/Learn/Доступность/HTML /ru/docs/Learn/Accessibility/HTML +/ru/docs/Learn/Доступность/Mobile /ru/docs/Learn/Accessibility/Mobile +/ru/docs/Learn/Доступность/Multimedia /ru/docs/Learn/Accessibility/Multimedia +/ru/docs/Learn/Доступность/WAI-ARIA_basics /ru/docs/Learn/Accessibility/WAI-ARIA_basics +/ru/docs/Learn/Доступность/What_is_accessibility /ru/docs/Learn/Accessibility/What_is_accessibility +/ru/docs/Learn/Как_сделать_вклад /ru/docs/orphaned/Learn/How_to_contribute +/ru/docs/Learn/Фронтенд_разработчик /ru/docs/Learn/Front-end_web_developer +/ru/docs/Learn/Что_такое_веб_сервер /ru/docs/Learn/Common_questions/What_is_a_web_server +/ru/docs/MDN/Contribute/Creating_and_editing_pages /ru/docs/MDN/Contribute/Howto/Create_and_edit_pages +/ru/docs/MDN/Contribute/Editor /ru/docs/orphaned/MDN/Editor +/ru/docs/MDN/Contribute/Editor/Basics /ru/docs/orphaned/MDN/Editor/Basics +/ru/docs/MDN/Contribute/Editor/Basics/Page_controls /ru/docs/orphaned/MDN/Editor/Basics/Page_controls +/ru/docs/MDN/Contribute/Editor/Basics/Toolbar /ru/docs/orphaned/MDN/Editor/Basics/Toolbar +/ru/docs/MDN/Contribute/Editor/Source_mode /ru/docs/orphaned/MDN/Editor/Source_mode +/ru/docs/MDN/Contribute/Editor/Tables /ru/docs/orphaned/MDN/Editor/Tables +/ru/docs/MDN/Contribute/Editor/Горячие_клавиши /ru/docs/orphaned/MDN/Editor/Keyboard_shortcuts +/ru/docs/MDN/Contribute/Editor/Картинки /ru/docs/orphaned/MDN/Editor/Images +/ru/docs/MDN/Contribute/Editor/Перенаправление /ru/docs/orphaned/MDN/Editor/Redirects +/ru/docs/MDN/Contribute/Editor/Синтаксические_выделения /ru/docs/orphaned/MDN/Editor/Syntax_highlighting +/ru/docs/MDN/Contribute/Editor/Ссылки /ru/docs/orphaned/MDN/Editor/Links +/ru/docs/MDN/Contribute/Howto/Create_an_MDN_account /ru/docs/orphaned/MDN/Contribute/Howto/Create_an_MDN_account +/ru/docs/MDN/Contribute/Howto/Do_a_technical_review /ru/docs/orphaned/MDN/Contribute/Howto/Do_a_technical_review +/ru/docs/MDN/Contribute/Howto/Do_an_editorial_review /ru/docs/orphaned/MDN/Contribute/Howto/Do_an_editorial_review +/ru/docs/MDN/Contribute/Howto/Добавить_или_обновить_данные_о_браузерной_совместимости /ru/docs/MDN/Contribute/Howto/Add_or_update_browser_compatibility_data +/ru/docs/MDN/Contribute/Howto/Как_оптимизировать_страницы /ru/docs/orphaned/MDN/Contribute/Howto/Set_the_summary_for_a_page +/ru/docs/MDN/Contribute/Howto/Метки_JavaScript_страниц /ru/docs/orphaned/MDN/Contribute/Howto/Tag_JavaScript_pages +/ru/docs/MDN/Contribute/Howto/Создай_интерактивное_упражнение_для_помощи_в_изучении_веба /ru/docs/MDN/Contribute/Howto/Create_an_interactive_exercise_to_help_learning_the_web /ru/docs/MDN/Contribute/Structures /ru/docs/MDN/Structures /ru/docs/MDN/Contribute/Structures/Live_samples /ru/docs/MDN/Structures/Live_samples -/ru/docs/MDN/Contribute/Structures/Live_samples/Simple_live_sample_demo /ru/docs/MDN/Structures/Live_samples/Simple_live_sample_demo +/ru/docs/MDN/Contribute/Structures/Live_samples/Simple_live_sample_demo /ru/docs/orphaned/MDN/Structures/Live_samples/Simple_live_sample_demo /ru/docs/MDN/Contribute/Tools /ru/docs/MDN/Tools -/ru/docs/MDN/Contribute/Tools/Page_watching /ru/docs/MDN/Tools/Page_watching +/ru/docs/MDN/Contribute/Tools/Page_watching /ru/docs/orphaned/MDN/Tools/Page_watching +/ru/docs/MDN/Contribute/Процессы /ru/docs/MDN/Contribute/Processes +/ru/docs/MDN/Editor /ru/docs/orphaned/MDN/Editor +/ru/docs/MDN/Editor/Basics /ru/docs/orphaned/MDN/Editor/Basics +/ru/docs/MDN/Editor/Basics/Page_controls /ru/docs/orphaned/MDN/Editor/Basics/Page_controls +/ru/docs/MDN/Editor/Basics/Toolbar /ru/docs/orphaned/MDN/Editor/Basics/Toolbar +/ru/docs/MDN/Editor/Source_mode /ru/docs/orphaned/MDN/Editor/Source_mode +/ru/docs/MDN/Editor/Tables /ru/docs/orphaned/MDN/Editor/Tables +/ru/docs/MDN/Editor/Горячие_клавиши /ru/docs/orphaned/MDN/Editor/Keyboard_shortcuts +/ru/docs/MDN/Editor/Картинки /ru/docs/orphaned/MDN/Editor/Images +/ru/docs/MDN/Editor/Перенаправление /ru/docs/orphaned/MDN/Editor/Redirects +/ru/docs/MDN/Editor/Синтаксические_выделения /ru/docs/orphaned/MDN/Editor/Syntax_highlighting +/ru/docs/MDN/Editor/Ссылки /ru/docs/orphaned/MDN/Editor/Links /ru/docs/MDN/Feedback /ru/docs/MDN/Contribute/Feedback /ru/docs/MDN/Getting_started /ru/docs/MDN/Contribute/Getting_started +/ru/docs/MDN/Kuma /ru/docs/MDN/Yari +/ru/docs/MDN/Kuma/Troubleshooting_KumaScript_errors /ru/docs/MDN/Tools/KumaScript/Troubleshooting +/ru/docs/MDN/Structures/Live_samples/Simple_live_sample_demo /ru/docs/orphaned/MDN/Structures/Live_samples/Simple_live_sample_demo +/ru/docs/MDN/Tools/Page_watching /ru/docs/orphaned/MDN/Tools/Page_watching +/ru/docs/MDN/Tools/URL-suffix /ru/docs/MDN/Tools/Unsupported_GET_API +/ru/docs/MDN/User_guide /ru/docs/conflicting/MDN/Tools +/ru/docs/MDN/User_guide/Advanced_search /ru/docs/MDN/Tools/Search +/ru/docs/MDN/User_guide/Deleting_pages /ru/docs/orphaned/MDN/Tools/Page_deletion +/ru/docs/MDN/User_guide/Feeds /ru/docs/orphaned/MDN/Tools/Feeds +/ru/docs/MDN/User_guide/Linking_to_MDN /ru/docs/orphaned/MDN/About/Linking_to_MDN +/ru/docs/MDN/Сообщество /ru/docs/orphaned/MDN/Community +/ru/docs/MDN/Сообщество/Conversations /ru/docs/orphaned/MDN/Community/Conversations +/ru/docs/MDN/Сообщество/Whats_happening /ru/docs/orphaned/MDN/Community/Whats_happening +/ru/docs/MDN/Сообщество/Working_in_community /ru/docs/orphaned/MDN/Community/Working_in_community +/ru/docs/MDN_at_ten /ru/docs/MDN/At_ten +/ru/docs/MDN_at_ten/Contributing_to_MDN /ru/docs/conflicting/MDN/Contribute +/ru/docs/Mozilla/Add-ons/WebExtensions/Интернационализация /ru/docs/Mozilla/Add-ons/WebExtensions/Internationalization +/ru/docs/Mozilla/Add-ons/WebExtensions/Перевод /ru/docs/orphaned/Mozilla/Add-ons/WebExtensions/Debugging +/ru/docs/Mozilla/Add-ons/WebExtensions/модификация_веб_страницы /ru/docs/Mozilla/Add-ons/WebExtensions/Modify_a_web_page +/ru/docs/Mozilla/Developer_guide/Исходный_код /ru/docs/Mozilla/Developer_guide/Source_Code +/ru/docs/Plugins/План /ru/docs/Plugins/Roadmap /ru/docs/QA/Kak_pomoch_testirovat /ru/docs/QA/Как_помочь_тестировать /ru/docs/Quirks_Mode_and_Standards_Mode /ru/docs/Web/HTML/Quirks_Mode_and_Standards_Mode /ru/docs/SVG_In_HTML_Introduction /ru/docs/Web/SVG/Tutorial/SVG_In_HTML_Introduction /ru/docs/Sample_.htaccess_file /ru/docs/Learn/Server-side/Apache_Configuration_htaccess +/ru/docs/Toolkit_API /ru/docs/orphaned/Toolkit_API +/ru/docs/Tools/Add-ons /ru/docs/orphaned/Tools/Add-ons +/ru/docs/Tools/Add-ons/DOM_Inspector /ru/docs/orphaned/Tools/Add-ons/DOM_Inspector +/ru/docs/Tools/Debugger/How_to/Отладка_кода_внутри_eval /ru/docs/Tools/Debugger/How_to/Debug_eval_sources +/ru/docs/Tools/Debugger/How_to/Работа_с_минифицированным_кодом /ru/docs/Tools/Debugger/How_to/Pretty-print_a_minified_file +/ru/docs/Tools/Page_Inspector/How_to/Otkrytie_Inspektora /ru/docs/Tools/Page_Inspector/How_to/Open_the_Inspector +/ru/docs/Tools/Page_Inspector/How_to/Vybor_elementa /ru/docs/Tools/Page_Inspector/How_to/Select_an_element +/ru/docs/Tools/Page_Inspector/How_to/Исследовать_event_listeners /ru/docs/Tools/Page_Inspector/How_to/Examine_event_listeners +/ru/docs/Tools/Page_Inspector/How_to/Просмотр_шрифтов /ru/docs/Tools/Page_Inspector/How_to/Edit_fonts +/ru/docs/Tools/Page_Inspector/Сочетания_клавиш /ru/docs/Tools/Page_Inspector/Keyboard_shortcuts +/ru/docs/Tools/Profiler /ru/docs/conflicting/Tools/Performance +/ru/docs/Tools/Release_notes /ru/docs/conflicting/Mozilla/Firefox/Releases +/ru/docs/Tools/Responsive_Design_View /ru/docs/Tools/Responsive_Design_Mode +/ru/docs/Tools/Web_Console/Opening_the_Web_Console /ru/docs/Tools/Web_Console/UI_Tour +/ru/docs/Tools/Инспектор_доступности /ru/docs/Tools/Accessibility_inspector +/ru/docs/Tools/Консоль_браузера /ru/docs/Tools/Browser_Console +/ru/docs/Tools/Линейки /ru/docs/Tools/Rulers +/ru/docs/Tools/Производительность /ru/docs/Tools/Performance +/ru/docs/Tools/Производительность/Waterfall /ru/docs/Tools/Performance/Waterfall +/ru/docs/Using_Firefox_1.5_caching /ru/docs/Mozilla/Firefox/Releases/1.5/Using_Firefox_1.5_caching /ru/docs/Using_files_from_web_applications /ru/docs/Web/API/File/Using_files_from_web_applications -/ru/docs/Web/API/AudioContext.currentTime /ru/docs/Web/API/AudioContext/currentTime +/ru/docs/Web/API/AudioContext.currentTime /ru/docs/Web/API/BaseAudioContext/currentTime +/ru/docs/Web/API/AudioContext/createPanner /ru/docs/Web/API/BaseAudioContext/createPanner +/ru/docs/Web/API/AudioContext/currentTime /ru/docs/Web/API/BaseAudioContext/currentTime +/ru/docs/Web/API/AudioContext/decodeAudioData /ru/docs/Web/API/BaseAudioContext/decodeAudioData +/ru/docs/Web/API/CSS_Object_Model/ориентация_экрана /ru/docs/Web/API/CSS_Object_Model/Managing_screen_orientation +/ru/docs/Web/API/Canvas_API/Tutorial/Использование_изображений /ru/docs/Web/API/Canvas_API/Tutorial/Using_images +/ru/docs/Web/API/Canvas_API/Tutorial/Композиции /ru/docs/Web/API/Canvas_API/Tutorial/Compositing +/ru/docs/Web/API/Canvas_API/Tutorial/Основы_анимации /ru/docs/Web/API/Canvas_API/Tutorial/Basic_animations +/ru/docs/Web/API/Canvas_API/Tutorial/Применение_стилей_и_цветов /ru/docs/Web/API/Canvas_API/Tutorial/Applying_styles_and_colors +/ru/docs/Web/API/Canvas_API/Tutorial/Рисование_текста /ru/docs/Web/API/Canvas_API/Tutorial/Drawing_text +/ru/docs/Web/API/Canvas_API/Tutorial/Рисование_фигур /ru/docs/Web/API/Canvas_API/Tutorial/Drawing_shapes /ru/docs/Web/API/Canvas_API/Рисование_графики_с_помощью_Canvas /ru/docs/Web/API/Canvas_API/Tutorial /ru/docs/Web/API/Coordinates /ru/docs/Web/API/GeolocationCoordinates /ru/docs/Web/API/Document.querySelectorAll /ru/docs/Web/API/Document/querySelectorAll +/ru/docs/Web/API/Document/activeElement /ru/docs/Web/API/DocumentOrShadowRoot/activeElement +/ru/docs/Web/API/Document/async /ru/docs/Web/API/XMLDocument/async /ru/docs/Web/API/Document/defaultView/popstate_event /ru/docs/Web/API/Window/popstate_event /ru/docs/Web/API/Document/defaultView/resize_event /ru/docs/Web/API/Window/resize_event /ru/docs/Web/API/Document/defaultView/storage_event /ru/docs/Web/API/Window/storage_event /ru/docs/Web/API/Document/domConfig /ru/docs/Web/API/Document +/ru/docs/Web/API/Document/getSelection /ru/docs/Web/API/DocumentOrShadowRoot/getSelection /ru/docs/Web/API/Element.getBoundingClientRect /ru/docs/Web/API/Element/getBoundingClientRect /ru/docs/Web/API/Element.insertAdjacentHTML /ru/docs/Web/API/Element/insertAdjacentHTML +/ru/docs/Web/API/Element/accessKey /ru/docs/Web/API/HTMLElement/accessKey /ru/docs/Web/API/EventTarget.addEventListener /ru/docs/Web/API/EventTarget/addEventListener +/ru/docs/Web/API/EventTarget/attachEvent /ru/docs/conflicting/Web/API/EventTarget/addEventListener +/ru/docs/Web/API/EventTarget/detachEvent /ru/docs/conflicting/Web/API/EventTarget/removeEventListener +/ru/docs/Web/API/File_and_Directory_Entries_API/Введение /ru/docs/Web/API/File_and_Directory_Entries_API/Introduction +/ru/docs/Web/API/Geolocation/Using_geolocation /ru/docs/Web/API/Geolocation_API +/ru/docs/Web/API/Geolocation/Using_geolocation/Using_the_Geolocation_API /ru/docs/Web/API/Geolocation_API/Using_the_Geolocation_API +/ru/docs/Web/API/HTMLAudioElement/Audio() /ru/docs/Web/API/HTMLAudioElement/Audio +/ru/docs/Web/API/HTMLElement/dataset /ru/docs/Web/API/HTMLOrForeignElement/dataset /ru/docs/Web/API/HTMLElement/invalid /ru/docs/Web/API/HTMLInputElement/invalid_event +/ru/docs/Web/API/HTMLElement/nonce /ru/docs/Web/API/HTMLOrForeignElement/nonce +/ru/docs/Web/API/HTMLElement/style /ru/docs/Web/API/ElementCSSInlineStyle/style +/ru/docs/Web/API/HTMLElement/tabIndex /ru/docs/Web/API/HTMLOrForeignElement/tabIndex /ru/docs/Web/API/HTMLImageElement.Image /ru/docs/Web/API/HTMLImageElement/Image +/ru/docs/Web/API/MediaTrackConstraints/Эхоподавление /ru/docs/Web/API/MediaTrackConstraints/echoCancellation +/ru/docs/Web/API/NavigatorGeolocation /ru/docs/conflicting/Web/API/Geolocation +/ru/docs/Web/API/NetworkInformation/connection /ru/docs/Web/API/Navigator/connection /ru/docs/Web/API/Node.appendChild /ru/docs/Web/API/Node/appendChild /ru/docs/Web/API/Node.contains /ru/docs/Web/API/Node/contains /ru/docs/Web/API/Node.parentNode /ru/docs/Web/API/Node/parentNode /ru/docs/Web/API/Node.removeChild /ru/docs/Web/API/Node/removeChild +/ru/docs/Web/API/Node.replaceChild /ru/docs/Web/API/Node/replaceChild /ru/docs/Web/API/Node.textContent /ru/docs/Web/API/Node/textContent +/ru/docs/Web/API/Node/baseURIObject /ru/docs/conflicting/Web/API/Node +/ru/docs/Web/API/Node/innerText /ru/docs/Web/API/HTMLElement/innerText +/ru/docs/Web/API/Node/nodePrincipal /ru/docs/conflicting/Web/API/Node_378aed5ed6869e50853edbc988cf9556 +/ru/docs/Web/API/NonDocumentTypeChildNode/NonDocumentTypeChildNode.nextElementSibling /ru/docs/Web/API/NonDocumentTypeChildNode/nextElementSibling /ru/docs/Web/API/PositionError /ru/docs/Web/API/GeolocationPositionError +/ru/docs/Web/API/Push_API/Using_the_Push_API /ru/docs/conflicting/Web/API/Push_API +/ru/docs/Web/API/RandomSource /ru/docs/conflicting/Web/API/Crypto/getRandomValues +/ru/docs/Web/API/RandomSource/getRandomValues /ru/docs/Web/API/Crypto/getRandomValues +/ru/docs/Web/API/SVGAElement/SVGAlement.target /ru/docs/conflicting/Web/API/SVGAElement/target +/ru/docs/Web/API/Slotable /ru/docs/conflicting/Web/API/Element +/ru/docs/Web/API/Storage/LocalStorage /ru/docs/conflicting/Web/API/Window/localStorage /ru/docs/Web/API/WebGL_API/Adding_2D_content_to_a_WebGL_context /ru/docs/Web/API/WebGL_API/Tutorial/Adding_2D_content_to_a_WebGL_context /ru/docs/Web/API/WebGL_API/Animating_objects_with_WebGL /ru/docs/Web/API/WebGL_API/Tutorial/Animating_objects_with_WebGL /ru/docs/Web/API/WebGL_API/Getting_started_with_WebGL /ru/docs/Web/API/WebGL_API/Tutorial/Getting_started_with_WebGL +/ru/docs/Web/API/WebGL_API/Tutorial/Создание_3D_объектов_с_помощью_WebGL /ru/docs/Web/API/WebGL_API/Tutorial/Creating_3D_objects_using_WebGL /ru/docs/Web/API/WebGL_API/Using_shaders_to_apply_color_in_WebGL /ru/docs/Web/API/WebGL_API/Tutorial/Using_shaders_to_apply_color_in_WebGL -/ru/docs/Web/API/WindowTimers.setTimeout /ru/docs/Web/API/WindowTimers/setTimeout +/ru/docs/Web/API/WebRTC_API/WebRTC_basics /ru/docs/conflicting/Web/API/WebRTC_API/Signaling_and_video_calling +/ru/docs/Web/API/WebRTC_API/протоколы /ru/docs/Web/API/WebRTC_API/Protocols +/ru/docs/Web/API/WebRTC_API/связь /ru/docs/Web/API/WebRTC_API/Connectivity +/ru/docs/Web/API/Web_Crypto_API/Checking_authenticity_with_password /ru/docs/orphaned/Web/API/Web_Crypto_API/Checking_authenticity_with_password +/ru/docs/Web/API/WindowBase64 /ru/docs/conflicting/Web/API/WindowOrWorkerGlobalScope +/ru/docs/Web/API/WindowBase64/Base64_encoding_and_decoding /ru/docs/Glossary/Base64 +/ru/docs/Web/API/WindowBase64/btoa /ru/docs/Web/API/WindowOrWorkerGlobalScope/btoa +/ru/docs/Web/API/WindowTimers /ru/docs/conflicting/Web/API/WindowOrWorkerGlobalScope_e2691f7ad05781a30c5fc5bb3b3f633a +/ru/docs/Web/API/WindowTimers.setTimeout /ru/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout +/ru/docs/Web/API/WindowTimers/setTimeout /ru/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout /ru/docs/Web/API/console.timeEnd /ru/docs/Web/API/Console/timeEnd -/ru/docs/Web/API/document.activeElement /ru/docs/Web/API/Document/activeElement +/ru/docs/Web/API/document.activeElement /ru/docs/Web/API/DocumentOrShadowRoot/activeElement /ru/docs/Web/API/document.createComment /ru/docs/Web/API/Document/createComment /ru/docs/Web/API/document.designMode /ru/docs/Web/API/Document/designMode /ru/docs/Web/API/document.execCommand /ru/docs/Web/API/Document/execCommand @@ -224,22 +463,50 @@ /ru/docs/Web/API/navigator.id /ru/docs/Web/API/Navigator/id /ru/docs/Web/API/navigator.id.request /ru/docs/Web/API/IdentityManager/request /ru/docs/Web/API/range.getBoundingClientRect /ru/docs/Web/API/Range/getBoundingClientRect +/ru/docs/Web/API/Видимость_страницы_API /ru/docs/Web/API/Page_Visibility_API +/ru/docs/Web/API/Нотация /ru/docs/Web/API/Notation +/ru/docs/Web/Accessibility/Веб-разработка /ru/docs/conflicting/Web/Accessibility /ru/docs/Web/Apps/Fundamentals/Audio_and_video_delivery /ru/docs/Web/Guide/Audio_and_video_delivery /ru/docs/Web/Apps/Fundamentals/Audio_and_video_delivery/Adding_captions_and_subtitles_to_HTML5_video /ru/docs/Web/Guide/Audio_and_video_delivery/Adding_captions_and_subtitles_to_HTML5_video /ru/docs/Web/Apps/Fundamentals/Audio_and_video_delivery/buffering_seeking_time_ranges /ru/docs/Web/Guide/Audio_and_video_delivery/buffering_seeking_time_ranges +/ru/docs/Web/CSS/:any /ru/docs/conflicting/Web/CSS/:is /ru/docs/Web/CSS/:blank /ru/docs/Web/CSS/:-moz-only-whitespace +/ru/docs/Web/CSS/@viewport/user-zoom /ru/docs/conflicting/Web/CSS/@viewport /ru/docs/Web/CSS/Adjacent_sibling_selectors /ru/docs/Web/CSS/Adjacent_sibling_combinator -/ru/docs/Web/CSS/CSS_User_Interface/Использование_URL_значений_для_свойства_cursor /ru/docs/Web/CSS/CSS_Basic_User_Interface/Использование_URL_значений_для_свойства_cursor +/ru/docs/Web/CSS/CSS_Animations/Ispolzovanie_CSS_animatciy /ru/docs/Web/CSS/CSS_Animations/Using_CSS_animations +/ru/docs/Web/CSS/CSS_Background_and_Borders /ru/docs/Web/CSS/CSS_Backgrounds_and_Borders +/ru/docs/Web/CSS/CSS_Background_and_Borders/Border-radius_генератор /ru/docs/Web/CSS/CSS_Background_and_Borders/Border-radius_generator +/ru/docs/Web/CSS/CSS_Background_and_Borders/Множественные_фоны /ru/docs/Web/CSS/CSS_Backgrounds_and_Borders/Using_multiple_backgrounds +/ru/docs/Web/CSS/CSS_Basic_User_Interface/Использование_URL_значений_для_свойства_cursor /ru/docs/Web/CSS/CSS_Basic_User_Interface/Using_URL_values_for_the_cursor_property +/ru/docs/Web/CSS/CSS_Box_Model/Box-shadow_generator /ru/docs/Web/CSS/CSS_Background_and_Borders/Box-shadow_generator +/ru/docs/Web/CSS/CSS_Colors /ru/docs/Web/CSS/CSS_Color +/ru/docs/Web/CSS/CSS_Flexible_Box_Layout/Using_CSS_flexible_boxes /ru/docs/conflicting/Web/CSS/CSS_Flexible_Box_Layout/Basic_Concepts_of_Flexbox +/ru/docs/Web/CSS/CSS_Flexible_Box_Layout/Выравнивание_элементов_в_Flex_контейнере /ru/docs/Web/CSS/CSS_Flexible_Box_Layout/Aligning_Items_in_a_Flex_Container +/ru/docs/Web/CSS/CSS_Flexible_Box_Layout/Контролирование_соотношения_элементов_вдоль_главной_оси /ru/docs/Web/CSS/CSS_Flexible_Box_Layout/Controlling_Ratios_of_Flex_Items_Along_the_Main_Ax +/ru/docs/Web/CSS/CSS_Flow_Layout/Блочное_и_строчное_размещение_в_нормальном_потоке /ru/docs/Web/CSS/CSS_Flow_Layout/Block_and_Inline_Layout_in_Normal_Flow +/ru/docs/Web/CSS/CSS_Flow_Layout/Введение_в_контексты_форматирования /ru/docs/Web/CSS/CSS_Flow_Layout/Intro_to_formatting_contexts +/ru/docs/Web/CSS/CSS_Grid_Layout/CSS_Grid,_Logical_Values_and_Writing_Modes /ru/docs/Web/CSS/CSS_Grid_Layout/CSS_Grid_Logical_Values_and_Writing_Modes +/ru/docs/Web/CSS/CSS_Grid_Layout/Грид-области /ru/docs/Web/CSS/CSS_Grid_Layout/Grid_Template_Areas +/ru/docs/Web/CSS/CSS_Grid_Layout/Расположение_элементов_по_грид-линиям_с_помощью_CSS_Grid /ru/docs/Web/CSS/CSS_Grid_Layout/Line-based_Placement_with_CSS_Grid +/ru/docs/Web/CSS/CSS_User_Interface /ru/docs/conflicting/Web/CSS/CSS_Basic_User_Interface +/ru/docs/Web/CSS/CSS_User_Interface/Использование_URL_значений_для_свойства_cursor /ru/docs/Web/CSS/CSS_Basic_User_Interface/Using_URL_values_for_the_cursor_property /ru/docs/Web/CSS/CSS_animated_properties /ru/docs/Web/CSS +/ru/docs/Web/CSS/CSS_Селекторы /ru/docs/Web/CSS/CSS_Selectors +/ru/docs/Web/CSS/CSS_Селекторы/Using_the_:target_pseudo-class_in_selectors /ru/docs/Web/CSS/CSS_Selectors/Using_the_:target_pseudo-class_in_selectors /ru/docs/Web/CSS/Child_selectors /ru/docs/Web/CSS/Child_combinator +/ru/docs/Web/CSS/Common_CSS_Questions /ru/docs/Learn/CSS/Howto/CSS_FAQ /ru/docs/Web/CSS/Descendant_selectors /ru/docs/Web/CSS/Descendant_combinator /ru/docs/Web/CSS/General_sibling_selectors /ru/docs/Web/CSS/General_sibling_combinator +/ru/docs/Web/CSS/Media_Queries/Тестирование_медиа_запросы /ru/docs/Web/CSS/Media_Queries/Testing_media_queries /ru/docs/Web/CSS/Reference/background-blend-mode /ru/docs/Web/CSS/background-blend-mode /ru/docs/Web/CSS/Using_CSS_variables /ru/docs/Web/CSS/Using_CSS_custom_properties /ru/docs/Web/CSS/attr /ru/docs/Web/CSS/attr() +/ru/docs/Web/CSS/box_model /ru/docs/Web/CSS/CSS_Box_Model/Introduction_to_the_CSS_box_model /ru/docs/Web/CSS/calc /ru/docs/Web/CSS/calc() /ru/docs/Web/CSS/clamp /ru/docs/Web/CSS/clamp() /ru/docs/Web/CSS/filter-function/blur /ru/docs/Web/CSS/filter-function/blur() +/ru/docs/Web/CSS/filter-function/url /ru/docs/conflicting/Web/CSS/url() +/ru/docs/Web/CSS/grid-gap /ru/docs/conflicting/Web/CSS/gap /ru/docs/Web/CSS/image-set /ru/docs/Web/CSS/image-set() /ru/docs/Web/CSS/linear-gradient /ru/docs/Web/CSS/linear-gradient() /ru/docs/Web/CSS/minmax /ru/docs/Web/CSS/minmax() @@ -249,39 +516,98 @@ /ru/docs/Web/CSS/transform-function/rotate3d /ru/docs/Web/CSS/transform-function/rotate3d() /ru/docs/Web/CSS/transform-function/scale3d /ru/docs/Web/CSS/transform-function/scale3d() /ru/docs/Web/CSS/transform-function/skew /ru/docs/Web/CSS/transform-function/skew() +/ru/docs/Web/CSS/url /ru/docs/conflicting/Web/CSS/url()_168028c4e5edd9e19c061adb4b604d4f +/ru/docs/Web/CSS/Действительное_значение /ru/docs/Web/CSS/actual_value +/ru/docs/Web/CSS/Замещаемый_элемент /ru/docs/Web/CSS/Replaced_element +/ru/docs/Web/CSS/Псевдо-классы /ru/docs/Web/CSS/Pseudo-classes +/ru/docs/Web/CSS/Синтаксис /ru/docs/Web/CSS/Syntax +/ru/docs/Web/CSS/Способ_расположения /ru/docs/Web/CSS/Layout_mode +/ru/docs/Web/CSS/Тихий /ru/docs/Web/CSS/Comments +/ru/docs/Web/CSS/Указанное_значение /ru/docs/Web/CSS/specified_value +/ru/docs/Web/CSS/размер /ru/docs/Web/CSS/length +/ru/docs/Web/Events/DOMContentLoaded /ru/docs/Web/API/Window/DOMContentLoaded_event +/ru/docs/Web/Events/abort /ru/docs/conflicting/Web/API/HTMLMediaElement/abort_event /ru/docs/Web/Events/abort_(dom_abort_api) /ru/docs/Web/API/AbortSignal/abort_event +/ru/docs/Web/Events/blur /ru/docs/Web/API/Element/blur_event /ru/docs/Web/Events/deviceorientation /ru/docs/Web/API/Window/deviceorientation_event +/ru/docs/Web/Events/error /ru/docs/Web/API/Element/error_event +/ru/docs/Web/Events/focusin /ru/docs/Web/API/Element/focusin_event +/ru/docs/Web/Events/focusout /ru/docs/Web/API/Element/focusout_event /ru/docs/Web/Events/gamepadconnected /ru/docs/Web/API/Window/gamepadconnected_event /ru/docs/Web/Events/gamepaddisconnected /ru/docs/Web/API/Window/gamepaddisconnected_event /ru/docs/Web/Events/hashchange /ru/docs/Web/API/Window/hashchange_event /ru/docs/Web/Events/invalid /ru/docs/Web/API/HTMLInputElement/invalid_event /ru/docs/Web/Events/keypress /ru/docs/Web/API/Document/keypress_event +/ru/docs/Web/Events/load /ru/docs/Web/API/Window/load_event +/ru/docs/Web/Events/loadstart /ru/docs/Web/API/XMLHttpRequest/loadstart_event /ru/docs/Web/Events/mousedown /ru/docs/Web/API/Element/mousedown_event /ru/docs/Web/Events/mouseleave /ru/docs/Web/API/Element/mouseleave_event /ru/docs/Web/Events/popstate /ru/docs/Web/API/Window/popstate_event +/ru/docs/Web/Events/readystatechange /ru/docs/Web/API/Document/readystatechange_event /ru/docs/Web/Events/resize /ru/docs/Web/API/Window/resize_event /ru/docs/Web/Events/scroll /ru/docs/Web/API/Document/scroll_event /ru/docs/Web/Events/storage /ru/docs/Web/API/Window/storage_event -/ru/docs/Web/Events/стримится /ru/docs/Web/HTML/Element/video/seeking_event -/ru/docs/Web/Guide/CSS/ispolzovanie_css_animatciy /ru/docs/Web/CSS/CSS_Animations/Ispolzovanie_CSS_animatciy +/ru/docs/Web/Events/transitionend /ru/docs/Web/API/HTMLElement/transitionend_event +/ru/docs/Web/Events/unhandledrejection /ru/docs/Web/API/Window/unhandledrejection_event +/ru/docs/Web/Events/стримится /ru/docs/Web/API/HTMLMediaElement/seeking_event +/ru/docs/Web/Guide/AJAX/С_чего_начать /ru/docs/Web/Guide/AJAX/Getting_Started +/ru/docs/Web/Guide/AJAX/С_чего_начать? /ru/docs/orphaned/Web/Guide/AJAX/С_чего_начать? +/ru/docs/Web/Guide/API/DOM /ru/docs/conflicting/Web/API/Document_Object_Model_dd00a71ceceac547ab464128db6bd8ef +/ru/docs/Web/Guide/API/DOM/Storage /ru/docs/conflicting/Web/API/Web_Storage_API +/ru/docs/Web/Guide/API/WebRTC /ru/docs/conflicting/Web/API/WebRTC_API +/ru/docs/Web/Guide/CSS /ru/docs/conflicting/Learn/CSS +/ru/docs/Web/Guide/CSS/Getting_started /ru/docs/conflicting/Learn/CSS/First_steps +/ru/docs/Web/Guide/CSS/Getting_started/Cascading_and_inheritance /ru/docs/conflicting/Learn/CSS/Building_blocks/Cascade_and_inheritance +/ru/docs/Web/Guide/CSS/Getting_started/Color /ru/docs/conflicting/Learn/CSS/Building_blocks/Values_and_units +/ru/docs/Web/Guide/CSS/Getting_started/How_CSS_works /ru/docs/conflicting/Learn/CSS/First_steps/How_CSS_works +/ru/docs/Web/Guide/CSS/Getting_started/Readable_CSS /ru/docs/conflicting/Learn/CSS/First_steps/How_CSS_is_structured +/ru/docs/Web/Guide/CSS/Getting_started/SVG_и_CSS /ru/docs/Web/SVG/Tutorial/SVG_and_CSS +/ru/docs/Web/Guide/CSS/Getting_started/Selectors /ru/docs/conflicting/Learn/CSS/Building_blocks/Selectors_918fb6c37a4d06789bc062c48d591992 +/ru/docs/Web/Guide/CSS/Getting_started/Text_styles /ru/docs/conflicting/Learn/CSS/Styling_text/Fundamentals +/ru/docs/Web/Guide/CSS/Getting_started/What_is_CSS /ru/docs/conflicting/Learn/CSS/First_steps/How_CSS_works_b66915031fb62b5fee1201086144e209 +/ru/docs/Web/Guide/CSS/Getting_started/Why_use_CSS /ru/docs/conflicting/Learn/CSS/First_steps/How_CSS_works_64ba4331a7a5f4319c6e06b06ccdd521 +/ru/docs/Web/Guide/CSS/Getting_started/Таблицы /ru/docs/conflicting/Learn/CSS/Building_blocks/Styling_tables +/ru/docs/Web/Guide/CSS/Understanding_z_index /ru/docs/Web/CSS/CSS_Positioning/Understanding_z_index +/ru/docs/Web/Guide/CSS/Understanding_z_index/Adding_z-index /ru/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Adding_z-index +/ru/docs/Web/Guide/CSS/Understanding_z_index/Stacking_without_z-index /ru/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_without_z-index +/ru/docs/Web/Guide/CSS/Using_multi-column_layouts /ru/docs/Web/CSS/CSS_Columns/Using_multi-column_layouts +/ru/docs/Web/Guide/CSS/Visual_formatting_model /ru/docs/Web/CSS/Visual_formatting_model +/ru/docs/Web/Guide/CSS/ispolzovanie_css_animatciy /ru/docs/Web/CSS/CSS_Animations/Using_CSS_animations +/ru/docs/Web/Guide/Events/Создание_и_вызов_событий /ru/docs/Web/Guide/Events/Creating_and_triggering_events /ru/docs/Web/Guide/HTML /ru/docs/Learn/HTML /ru/docs/Web/Guide/HTML/Canvas_tutorial /ru/docs/Web/API/Canvas_API/Tutorial /ru/docs/Web/Guide/HTML/Canvas_tutorial/Basic_usage /ru/docs/Web/API/Canvas_API/Tutorial/Basic_usage -/ru/docs/Web/Guide/HTML/Canvas_tutorial/Основы_анимации /ru/docs/Web/API/Canvas_API/Tutorial/Основы_анимации -/ru/docs/Web/Guide/HTML/Canvas_tutorial/Применение_стилей_и_цветов /ru/docs/Web/API/Canvas_API/Tutorial/Применение_стилей_и_цветов -/ru/docs/Web/Guide/HTML/Canvas_tutorial/Рисование_фигур /ru/docs/Web/API/Canvas_API/Tutorial/Рисование_фигур -/ru/docs/Web/Guide/HTML/Forms /ru/docs/Learn/HTML/Forms -/ru/docs/Web/Guide/HTML/Introduction /ru/docs/Learn/HTML/Введение_в_HTML +/ru/docs/Web/Guide/HTML/Canvas_tutorial/Основы_анимации /ru/docs/Web/API/Canvas_API/Tutorial/Basic_animations +/ru/docs/Web/Guide/HTML/Canvas_tutorial/Применение_стилей_и_цветов /ru/docs/Web/API/Canvas_API/Tutorial/Applying_styles_and_colors +/ru/docs/Web/Guide/HTML/Canvas_tutorial/Рисование_фигур /ru/docs/Web/API/Canvas_API/Tutorial/Drawing_shapes +/ru/docs/Web/Guide/HTML/Drag_and_drop /ru/docs/Web/API/HTML_Drag_and_Drop_API +/ru/docs/Web/Guide/HTML/Drag_and_drop/Drag_operations /ru/docs/Web/API/HTML_Drag_and_Drop_API/Drag_operations +/ru/docs/Web/Guide/HTML/Forms /ru/docs/Learn/Forms +/ru/docs/Web/Guide/HTML/Introduction /ru/docs/Learn/HTML/Introduction_to_HTML +/ru/docs/Web/Guide/HTML/Sections_and_Outlines_of_an_HTML5_document /ru/docs/Web/Guide/HTML/Using_HTML_sections_and_outlines +/ru/docs/Web/Guide/HTML/Tips_for_authoring_fast-loading_HTML_pages /ru/docs/Learn/HTML/Howto/Author_fast-loading_HTML_pages +/ru/docs/Web/Guide/HTML/Using_data_attributes /ru/docs/Learn/HTML/Howto/Use_data_attributes +/ru/docs/Web/Guide/HTML/Формы_в_HTML /ru/docs/orphaned/Learn/HTML/Forms/HTML5_updates +/ru/docs/Web/Guide/Графика /ru/docs/Web/Guide/Graphics +/ru/docs/Web/Guide/Производительность /ru/docs/Web/Guide/Performance +/ru/docs/Web/HTML/CORS_settings_attributes /ru/docs/Web/HTML/Attributes/crossorigin /ru/docs/Web/HTML/Canvas /ru/docs/Web/API/Canvas_API /ru/docs/Web/HTML/Canvas/Рисование_графики_с_помощью_Canvas /ru/docs/Web/API/Canvas_API/Tutorial +/ru/docs/Web/HTML/Element/element /ru/docs/orphaned/Web/HTML/Element/element +/ru/docs/Web/HTML/Element/video/seeking_event /ru/docs/Web/API/HTMLMediaElement/seeking_event +/ru/docs/Web/HTML/Element/кнопка /ru/docs/Web/HTML/Element/button +/ru/docs/Web/HTML/Element/ссылка /ru/docs/Web/HTML/Element/link /ru/docs/Web/HTML/Element/стиль /ru/docs/Web/HTML/Element/style +/ru/docs/Web/HTML/Global_attributes/dropzone /ru/docs/orphaned/Web/HTML/Global_attributes/dropzone +/ru/docs/Web/HTML/Optimizing_Your_Pages_for_Speculative_Parsing /ru/docs/Glossary/speculative_parsing /ru/docs/Web/HTML/Использование_HTML5_audio_и_video /ru/docs/Learn/HTML/Multimedia_and_embedding/Video_and_audio_content +/ru/docs/Web/HTML/Использование_кэширования_приложений /ru/docs/Web/HTML/Using_the_application_cache /ru/docs/Web/HTML/Общие_атрибуты /ru/docs/Web/HTML/Global_attributes /ru/docs/Web/HTML/Общие_атрибуты/accesskey /ru/docs/Web/HTML/Global_attributes/accesskey /ru/docs/Web/HTML/Общие_атрибуты/class /ru/docs/Web/HTML/Global_attributes/class /ru/docs/Web/HTML/Общие_атрибуты/contenteditable /ru/docs/Web/HTML/Global_attributes/contenteditable /ru/docs/Web/HTML/Общие_атрибуты/data-* /ru/docs/Web/HTML/Global_attributes/data-* -/ru/docs/Web/HTML/Общие_атрибуты/dropzone /ru/docs/Web/HTML/Global_attributes/dropzone +/ru/docs/Web/HTML/Общие_атрибуты/dropzone /ru/docs/orphaned/Web/HTML/Global_attributes/dropzone /ru/docs/Web/HTML/Общие_атрибуты/id /ru/docs/Web/HTML/Global_attributes/id /ru/docs/Web/HTML/Общие_атрибуты/inputmode /ru/docs/Web/HTML/Global_attributes/inputmode /ru/docs/Web/HTML/Общие_атрибуты/is /ru/docs/Web/HTML/Global_attributes/is @@ -289,17 +615,72 @@ /ru/docs/Web/HTML/Общие_атрибуты/lang /ru/docs/Web/HTML/Global_attributes/lang /ru/docs/Web/HTML/Общие_атрибуты/style /ru/docs/Web/HTML/Global_attributes/style /ru/docs/Web/HTML/Общие_атрибуты/tabindex /ru/docs/Web/HTML/Global_attributes/tabindex +/ru/docs/Web/HTML/Поддерживаемые_медиа_форматы /ru/docs/conflicting/Web/Media/Formats +/ru/docs/Web/HTML/Ссылки /ru/docs/Web/HTML/Reference +/ru/docs/Web/HTML/Строчные_Элементы /ru/docs/Web/HTML/Inline_elements +/ru/docs/Web/HTML/Типы_ссылок /ru/docs/Web/HTML/Link_types +/ru/docs/Web/HTTP/Basics_of_HTTP/Identifying_resources_on_the_Web_RU /ru/docs/Web/HTTP/Basics_of_HTTP/Identifying_resources_on_the_Web /ru/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Полный_список_типов_MIME /ru/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types /ru/docs/Web/HTTP/Response_codes /ru/docs/Web/HTTP/Status +/ru/docs/Web/HTTP/Server-Side_Access_Control /ru/docs/conflicting/Web/HTTP/CORS +/ru/docs/Web/HTTP/Авторизация /ru/docs/Web/HTTP/Authentication +/ru/docs/Web/HTTP/Заголовки /ru/docs/Web/HTTP/Headers +/ru/docs/Web/HTTP/Заголовки/Accept /ru/docs/Web/HTTP/Headers/Accept +/ru/docs/Web/HTTP/Заголовки/Accept-Charset /ru/docs/Web/HTTP/Headers/Accept-Charset +/ru/docs/Web/HTTP/Заголовки/Accept-Language /ru/docs/Web/HTTP/Headers/Accept-Language +/ru/docs/Web/HTTP/Заголовки/Accept-Patch /ru/docs/Web/HTTP/Headers/Accept-Patch +/ru/docs/Web/HTTP/Заголовки/Accept-Ranges /ru/docs/Web/HTTP/Headers/Accept-Ranges +/ru/docs/Web/HTTP/Заголовки/Access-Control-Allow-Headers /ru/docs/Web/HTTP/Headers/Access-Control-Allow-Headers +/ru/docs/Web/HTTP/Заголовки/Access-Control-Allow-Methods /ru/docs/Web/HTTP/Headers/Access-Control-Allow-Methods +/ru/docs/Web/HTTP/Заголовки/Access-Control-Allow-Origin /ru/docs/Web/HTTP/Headers/Access-Control-Allow-Origin +/ru/docs/Web/HTTP/Заголовки/Access-Control-Max-Age /ru/docs/Web/HTTP/Headers/Access-Control-Max-Age +/ru/docs/Web/HTTP/Заголовки/Authorization /ru/docs/Web/HTTP/Headers/Authorization +/ru/docs/Web/HTTP/Заголовки/Cache-Control /ru/docs/Web/HTTP/Headers/Cache-Control +/ru/docs/Web/HTTP/Заголовки/Connection /ru/docs/Web/HTTP/Headers/Connection +/ru/docs/Web/HTTP/Заголовки/Content-Disposition /ru/docs/Web/HTTP/Headers/Content-Disposition +/ru/docs/Web/HTTP/Заголовки/Content-Encoding /ru/docs/Web/HTTP/Headers/Content-Encoding +/ru/docs/Web/HTTP/Заголовки/Content-Language /ru/docs/Web/HTTP/Headers/Content-Language +/ru/docs/Web/HTTP/Заголовки/Content-Length /ru/docs/Web/HTTP/Headers/Content-Length +/ru/docs/Web/HTTP/Заголовки/Content-Type /ru/docs/Web/HTTP/Headers/Content-Type +/ru/docs/Web/HTTP/Заголовки/DNT /ru/docs/Web/HTTP/Headers/DNT +/ru/docs/Web/HTTP/Заголовки/Date /ru/docs/Web/HTTP/Headers/Date +/ru/docs/Web/HTTP/Заголовки/ETag /ru/docs/Web/HTTP/Headers/ETag +/ru/docs/Web/HTTP/Заголовки/Expect /ru/docs/Web/HTTP/Headers/Expect +/ru/docs/Web/HTTP/Заголовки/Expires /ru/docs/Web/HTTP/Headers/Expires +/ru/docs/Web/HTTP/Заголовки/Host /ru/docs/Web/HTTP/Headers/Host +/ru/docs/Web/HTTP/Заголовки/If-Match /ru/docs/Web/HTTP/Headers/If-Match +/ru/docs/Web/HTTP/Заголовки/If-Modified-Since /ru/docs/Web/HTTP/Headers/If-Modified-Since +/ru/docs/Web/HTTP/Заголовки/If-Unmodified-Since /ru/docs/Web/HTTP/Headers/If-Unmodified-Since +/ru/docs/Web/HTTP/Заголовки/Last-Modified /ru/docs/Web/HTTP/Headers/Last-Modified +/ru/docs/Web/HTTP/Заголовки/Origin /ru/docs/Web/HTTP/Headers/Origin +/ru/docs/Web/HTTP/Заголовки/Pragma /ru/docs/Web/HTTP/Headers/Pragma +/ru/docs/Web/HTTP/Заголовки/Range /ru/docs/Web/HTTP/Headers/Range +/ru/docs/Web/HTTP/Заголовки/Referer /ru/docs/Web/HTTP/Headers/Referer +/ru/docs/Web/HTTP/Заголовки/Retry-After /ru/docs/Web/HTTP/Headers/Retry-After +/ru/docs/Web/HTTP/Заголовки/Set-Cookie /ru/docs/Web/HTTP/Headers/Set-Cookie +/ru/docs/Web/HTTP/Заголовки/Strict-Transport-Security /ru/docs/Web/HTTP/Headers/Strict-Transport-Security +/ru/docs/Web/HTTP/Заголовки/Vary /ru/docs/Web/HTTP/Headers/Vary +/ru/docs/Web/HTTP/Заголовки/X-Content-Type-Options /ru/docs/Web/HTTP/Headers/X-Content-Type-Options +/ru/docs/Web/HTTP/Заголовки/X-Forwarded-For /ru/docs/Web/HTTP/Headers/X-Forwarded-For +/ru/docs/Web/HTTP/Заголовки/X-XSS-Protection /ru/docs/Web/HTTP/Headers/X-XSS-Protection +/ru/docs/Web/HTTP/Куки /ru/docs/Web/HTTP/Cookies +/ru/docs/Web/HTTP/Кэширование /ru/docs/Web/HTTP/Caching /ru/docs/Web/JavaScript/ECMAScript_5_support_in_Mozilla /ru/docs/Web/JavaScript/New_in_JavaScript/ECMAScript_5_support_in_Mozilla +/ru/docs/Web/JavaScript/Guide/About /ru/docs/conflicting/Web/JavaScript/Guide/Introduction /ru/docs/Web/JavaScript/Guide/Closures /ru/docs/Web/JavaScript/Closures /ru/docs/Web/JavaScript/Guide/EventLoop /ru/docs/Web/JavaScript/EventLoop /ru/docs/Web/JavaScript/Guide/Inheritance_and_the_prototype_chain /ru/docs/Web/JavaScript/Inheritance_and_the_prototype_chain +/ru/docs/Web/JavaScript/Guide/Ispolzovanie_promisov /ru/docs/Web/JavaScript/Guide/Using_promises +/ru/docs/Web/JavaScript/Guide/JavaScript_Overview /ru/docs/conflicting/Web/JavaScript/Guide/Introduction_6f341ba6db4b060ccbd8dce4a0d5214b +/ru/docs/Web/JavaScript/Guide/Predefined_Core_Objects /ru/docs/conflicting/Web/JavaScript/Guide /ru/docs/Web/JavaScript/Guide/Statements /ru/docs/Web/JavaScript/Guide/Control_flow_and_error_handling /ru/docs/Web/JavaScript/Guide/The_Iterator_protocol /ru/docs/Web/JavaScript/Reference/Iteration_protocols /ru/docs/Web/JavaScript/Guide/Values,_variables,_and_literals /ru/docs/Web/JavaScript/Guide/Grammar_and_types +/ru/docs/Web/JavaScript/Guide/Введение_в_JavaScript /ru/docs/Web/JavaScript/Guide/Introduction +/ru/docs/Web/JavaScript/Guide/Об_этом_руководстве /ru/docs/orphaned/Web/JavaScript/Guide/Об_этом_руководстве +/ru/docs/Web/JavaScript/Guide/Циклы_и_итерации /ru/docs/Web/JavaScript/Guide/Loops_and_iteration /ru/docs/Web/JavaScript/Guide_ru /ru/docs/Web/JavaScript/Guide -/ru/docs/Web/JavaScript/Guide_ru/About /ru/docs/Web/JavaScript/Guide/About +/ru/docs/Web/JavaScript/Guide_ru/About /ru/docs/conflicting/Web/JavaScript/Guide/Introduction /ru/docs/Web/JavaScript/Guide_ru/Expressions_and_Operators /ru/docs/Web/JavaScript/Guide/Expressions_and_Operators /ru/docs/Web/JavaScript/Guide_ru/Functions /ru/docs/Web/JavaScript/Guide/Functions /ru/docs/Web/JavaScript/Guide_ru/Inheritance_and_the_prototype_chain_ru /ru/docs/Web/JavaScript/Inheritance_and_the_prototype_chain @@ -309,30 +690,85 @@ /ru/docs/Web/JavaScript/Guide_ru/Values,_variables,_and_literals /ru/docs/Web/JavaScript/Guide/Grammar_and_types /ru/docs/Web/JavaScript/Guide_ru/Working_with_Objects /ru/docs/Web/JavaScript/Guide/Working_with_Objects /ru/docs/Web/JavaScript/Guide_ru/Замыкания /ru/docs/Web/JavaScript/Closures +/ru/docs/Web/JavaScript/Introduction_to_Object-Oriented_JavaScript /ru/docs/conflicting/Learn/JavaScript/Objects +/ru/docs/Web/JavaScript/JavaScript_шеллы /ru/docs/Web/JavaScript/Shells /ru/docs/Web/JavaScript/New_in_JavaScript/Новое_в_JavaScript_1.6 /ru/docs/Web/JavaScript/New_in_JavaScript/1.6 +/ru/docs/Web/JavaScript/Reference/Classes/Class_fields /ru/docs/Web/JavaScript/Reference/Classes/Public_class_fields +/ru/docs/Web/JavaScript/Reference/Classes/Приватные_поля_класса /ru/docs/Web/JavaScript/Reference/Classes/Private_class_fields +/ru/docs/Web/JavaScript/Reference/Errors/Переменные_скрывают_аргумент /ru/docs/Web/JavaScript/Reference/Errors/Var_hides_argument +/ru/docs/Web/JavaScript/Reference/Functions/Определиние_методов /ru/docs/Web/JavaScript/Reference/Functions/Method_definitions /ru/docs/Web/JavaScript/Reference/Global_Objects/Array/contains /ru/docs/Web/JavaScript/Reference/Global_Objects/Array/includes +/ru/docs/Web/JavaScript/Reference/Global_Objects/Array/prototype /ru/docs/orphaned/Web/JavaScript/Reference/Global_Objects/Array/prototype +/ru/docs/Web/JavaScript/Reference/Global_Objects/AsyncFunction/prototype /ru/docs/orphaned/Web/JavaScript/Reference/Global_Objects/AsyncFunction/prototype +/ru/docs/Web/JavaScript/Reference/Global_Objects/Boolean/prototype /ru/docs/conflicting/Web/JavaScript/Reference/Global_Objects/Boolean /ru/docs/Web/JavaScript/Reference/Global_Objects/Collator /ru/docs/Web/JavaScript/Reference/Global_Objects/Intl/Collator /ru/docs/Web/JavaScript/Reference/Global_Objects/Collator/compare /ru/docs/Web/JavaScript/Reference/Global_Objects/Intl/Collator/compare -/ru/docs/Web/JavaScript/Reference/Global_Objects/Collator/prototype /ru/docs/Web/JavaScript/Reference/Global_Objects/Intl/Collator/prototype +/ru/docs/Web/JavaScript/Reference/Global_Objects/Collator/prototype /ru/docs/conflicting/Web/JavaScript/Reference/Global_Objects/Intl/Collator /ru/docs/Web/JavaScript/Reference/Global_Objects/Collator/resolvedOptions /ru/docs/Web/JavaScript/Reference/Global_Objects/Intl/Collator/resolvedOptions /ru/docs/Web/JavaScript/Reference/Global_Objects/Collator/supportedLocalesOf /ru/docs/Web/JavaScript/Reference/Global_Objects/Intl/Collator/supportedLocalesOf +/ru/docs/Web/JavaScript/Reference/Global_Objects/Date/prototype /ru/docs/conflicting/Web/JavaScript/Reference/Global_Objects/Date /ru/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat /ru/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat /ru/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat/format /ru/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/format /ru/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat/formatToParts /ru/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/formatToParts -/ru/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat/prototype /ru/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/prototype +/ru/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat/prototype /ru/docs/conflicting/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat /ru/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat/resolvedOptions /ru/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/resolvedOptions /ru/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat/supportedLocalesOf /ru/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/supportedLocalesOf +/ru/docs/Web/JavaScript/Reference/Global_Objects/Error/prototype /ru/docs/conflicting/Web/JavaScript/Reference/Global_Objects/Error +/ru/docs/Web/JavaScript/Reference/Global_Objects/EvalError/prototype /ru/docs/conflicting/Web/JavaScript/Reference/Global_Objects/EvalError +/ru/docs/Web/JavaScript/Reference/Global_Objects/Function/prototype /ru/docs/conflicting/Web/JavaScript/Reference/Global_Objects/Function +/ru/docs/Web/JavaScript/Reference/Global_Objects/GeneratorFunction/prototype /ru/docs/conflicting/Web/JavaScript/Reference/Global_Objects/GeneratorFunction +/ru/docs/Web/JavaScript/Reference/Global_Objects/InternalError/prototype /ru/docs/conflicting/Web/JavaScript/Reference/Global_Objects/InternalError +/ru/docs/Web/JavaScript/Reference/Global_Objects/Intl/Collator/prototype /ru/docs/conflicting/Web/JavaScript/Reference/Global_Objects/Intl/Collator +/ru/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/prototype /ru/docs/conflicting/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat +/ru/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/prototype /ru/docs/conflicting/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat /ru/docs/Web/JavaScript/Reference/Global_Objects/ListFormat /ru/docs/Web/JavaScript/Reference/Global_Objects/Intl/ListFormat +/ru/docs/Web/JavaScript/Reference/Global_Objects/Map/prototype /ru/docs/conflicting/Web/JavaScript/Reference/Global_Objects/Map +/ru/docs/Web/JavaScript/Reference/Global_Objects/Math/Метод_Math.max()_ /ru/docs/orphaned/Web/JavaScript/Reference/Global_Objects/Math/Метод_Math.max()_ +/ru/docs/Web/JavaScript/Reference/Global_Objects/Number/prototype /ru/docs/conflicting/Web/JavaScript/Reference/Global_Objects/Number /ru/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat /ru/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat /ru/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat/format /ru/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/format -/ru/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat/prototype /ru/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/prototype +/ru/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat/prototype /ru/docs/conflicting/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat /ru/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat/resolvedOptions /ru/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/resolvedOptions /ru/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat/supportedLocalesOf /ru/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/supportedLocalesOf +/ru/docs/Web/JavaScript/Reference/Global_Objects/Object/prototype /ru/docs/conflicting/Web/JavaScript/Reference/Global_Objects/Object +/ru/docs/Web/JavaScript/Reference/Global_Objects/Promise/prototype /ru/docs/conflicting/Web/JavaScript/Reference/Global_Objects/Promise +/ru/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler /ru/docs/conflicting/Web/JavaScript/Reference/Global_Objects/Proxy/Proxy +/ru/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler/deleteProperty /ru/docs/Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/deleteProperty +/ru/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler/set /ru/docs/Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/set +/ru/docs/Web/JavaScript/Reference/Global_Objects/RangeError/prototype /ru/docs/conflicting/Web/JavaScript/Reference/Global_Objects/RangeError +/ru/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError/prototype /ru/docs/conflicting/Web/JavaScript/Reference/Global_Objects/ReferenceError +/ru/docs/Web/JavaScript/Reference/Global_Objects/RegExp/prototype /ru/docs/conflicting/Web/JavaScript/Reference/Global_Objects/RegExp +/ru/docs/Web/JavaScript/Reference/Global_Objects/Set/prototype /ru/docs/conflicting/Web/JavaScript/Reference/Global_Objects/Set +/ru/docs/Web/JavaScript/Reference/Global_Objects/String/TrimLeft /ru/docs/Web/JavaScript/Reference/Global_Objects/String/trimStart +/ru/docs/Web/JavaScript/Reference/Global_Objects/String/TrimRight /ru/docs/Web/JavaScript/Reference/Global_Objects/String/trimEnd /ru/docs/Web/JavaScript/Reference/Global_Objects/String/contains /ru/docs/Web/JavaScript/Reference/Global_Objects/String/includes +/ru/docs/Web/JavaScript/Reference/Global_Objects/String/prototype /ru/docs/conflicting/Web/JavaScript/Reference/Global_Objects/String +/ru/docs/Web/JavaScript/Reference/Global_Objects/Symbol/prototype /ru/docs/conflicting/Web/JavaScript/Reference/Global_Objects/Symbol +/ru/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError/prototype /ru/docs/conflicting/Web/JavaScript/Reference/Global_Objects/SyntaxError +/ru/docs/Web/JavaScript/Reference/Global_Objects/TypeError/prototype /ru/docs/conflicting/Web/JavaScript/Reference/Global_Objects/TypeError +/ru/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/prototype /ru/docs/conflicting/Web/JavaScript/Reference/Global_Objects/TypedArray +/ru/docs/Web/JavaScript/Reference/Global_Objects/URIError/prototype /ru/docs/conflicting/Web/JavaScript/Reference/Global_Objects/URIError +/ru/docs/Web/JavaScript/Reference/Global_Objects/WeakMap/prototype /ru/docs/conflicting/Web/JavaScript/Reference/Global_Objects/WeakMap +/ru/docs/Web/JavaScript/Reference/Global_Objects/WeakSet/prototype /ru/docs/conflicting/Web/JavaScript/Reference/Global_Objects/WeakSet /ru/docs/Web/JavaScript/Reference/Methods_Index /ru/docs/Web/JavaScript/Reference +/ru/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators /ru/docs/conflicting/Web/JavaScript/Reference/Operators +/ru/docs/Web/JavaScript/Reference/Operators/Assignment_Operators /ru/docs/conflicting/Web/JavaScript/Reference/Operators_8d54701de06af40a7c984517cbe87b3e +/ru/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators /ru/docs/conflicting/Web/JavaScript/Reference/Operators_7c8eb9475d97a4a734c5991857698560 /ru/docs/Web/JavaScript/Reference/Operators/Spread_operator /ru/docs/Web/JavaScript/Reference/Operators/Spread_syntax +/ru/docs/Web/JavaScript/Reference/Operators/Группировка /ru/docs/Web/JavaScript/Reference/Operators/Grouping +/ru/docs/Web/JavaScript/Reference/Operators/Конвейерный_оператор /ru/docs/Web/JavaScript/Reference/Operators/Pipeline_operator +/ru/docs/Web/JavaScript/Reference/Operators/Логические_операторы /ru/docs/conflicting/Web/JavaScript/Reference/Operators_843c998343f0cdaa5699874c806d4cea +/ru/docs/Web/JavaScript/Reference/Operators/Оператор_Запятая /ru/docs/Web/JavaScript/Reference/Operators/Comma_Operator +/ru/docs/Web/JavaScript/Reference/Operators/Операторы_сравнения /ru/docs/conflicting/Web/JavaScript/Reference/Operators_69135a8d5772f8b6e45265523df05d89 +/ru/docs/Web/JavaScript/Reference/Operators/Присваивание /ru/docs/Web/JavaScript/Reference/Operators/Assignment +/ru/docs/Web/JavaScript/Reference/Operators/Условный_оператор /ru/docs/Web/JavaScript/Reference/Operators/Conditional_Operator /ru/docs/Web/JavaScript/Reference/Properties_Index /ru/docs/Web/JavaScript/Reference -/ru/docs/Web/JavaScript/ru_JavaScript_Overview /ru/docs/Web/JavaScript/Guide/JavaScript_Overview +/ru/docs/Web/JavaScript/Reference/Statements/default /ru/docs/conflicting/Web/JavaScript/Reference/Statements/switch +/ru/docs/Web/JavaScript/Reference/Statements/Блок /ru/docs/Web/JavaScript/Reference/Statements/block +/ru/docs/Web/JavaScript/Reference/template_strings /ru/docs/Web/JavaScript/Reference/Template_literals +/ru/docs/Web/JavaScript/Reference/Об /ru/docs/Web/JavaScript/Reference/About +/ru/docs/Web/JavaScript/ru_JavaScript_Overview /ru/docs/conflicting/Web/JavaScript/Guide/Introduction_6f341ba6db4b060ccbd8dce4a0d5214b +/ru/docs/Web/JavaScript/О_JavaScript /ru/docs/Web/JavaScript/About_JavaScript /ru/docs/Web/JavaScript/Справочник_по_JavaScript_1.5 /ru/docs/Web/JavaScript/Reference /ru/docs/Web/JavaScript/Справочник_по_JavaScript_1.5/Methods_Index /ru/docs/Web/JavaScript/Reference /ru/docs/Web/JavaScript/Справочник_по_JavaScript_1.5/Operators /ru/docs/Web/JavaScript/Reference/Operators @@ -340,7 +776,7 @@ /ru/docs/Web/JavaScript/Справочник_по_JavaScript_1.5/Operators/delete /ru/docs/Web/JavaScript/Reference/Operators/delete /ru/docs/Web/JavaScript/Справочник_по_JavaScript_1.5/Operators/function /ru/docs/Web/JavaScript/Reference/Operators/function /ru/docs/Web/JavaScript/Справочник_по_JavaScript_1.5/Operators/typeof /ru/docs/Web/JavaScript/Reference/Operators/typeof -/ru/docs/Web/JavaScript/Справочник_по_JavaScript_1.5/Operators/Оператор_Запятая /ru/docs/Web/JavaScript/Reference/Operators/Оператор_Запятая +/ru/docs/Web/JavaScript/Справочник_по_JavaScript_1.5/Operators/Оператор_Запятая /ru/docs/Web/JavaScript/Reference/Operators/Comma_Operator /ru/docs/Web/JavaScript/Справочник_по_JavaScript_1.5/Properties_Index /ru/docs/Web/JavaScript/Reference /ru/docs/Web/JavaScript/Справочник_по_JavaScript_1.5/Statements /ru/docs/Web/JavaScript/Reference/Statements /ru/docs/Web/JavaScript/Справочник_по_JavaScript_1.5/Statements/let /ru/docs/Web/JavaScript/Reference/Statements/let @@ -355,7 +791,7 @@ /ru/docs/Web/JavaScript/Справочник_по_JavaScript_1.5/Глобальные_объекты/Function/call /ru/docs/Web/JavaScript/Reference/Global_Objects/Function/call /ru/docs/Web/JavaScript/Справочник_по_JavaScript_1.5/Глобальные_объекты/Function/length /ru/docs/Web/JavaScript/Reference/Global_Objects/Function/length /ru/docs/Web/JavaScript/Справочник_по_JavaScript_1.5/Глобальные_объекты/Function/name /ru/docs/Web/JavaScript/Reference/Global_Objects/Function/name -/ru/docs/Web/JavaScript/Справочник_по_JavaScript_1.5/Глобальные_объекты/Function/prototype /ru/docs/Web/JavaScript/Reference/Global_Objects/Function/prototype +/ru/docs/Web/JavaScript/Справочник_по_JavaScript_1.5/Глобальные_объекты/Function/prototype /ru/docs/conflicting/Web/JavaScript/Reference/Global_Objects/Function /ru/docs/Web/JavaScript/Справочник_по_JavaScript_1.5/Глобальные_объекты/Math /ru/docs/Web/JavaScript/Reference/Global_Objects/Math /ru/docs/Web/JavaScript/Справочник_по_JavaScript_1.5/Глобальные_объекты/Object /ru/docs/Web/JavaScript/Reference/Global_Objects/Object /ru/docs/Web/JavaScript/Справочник_по_JavaScript_1.5/Глобальные_объекты/RegExp /ru/docs/Web/JavaScript/Reference/Global_Objects/RegExp @@ -365,14 +801,55 @@ /ru/docs/Web/JavaScript/Справочник_по_JavaScript_1.5/Операторы /ru/docs/Web/JavaScript/Reference/Operators /ru/docs/Web/JavaScript/Справочник_по_JavaScript_1.5/Операции /ru/docs/Web/JavaScript/Reference/Operators /ru/docs/Web/JavaScript/Справочник_по_JavaScript_1.5/Операции/Assignment_Operators /ru/docs/Web/JavaScript/Reference/Operators -/ru/docs/Web/JavaScript/Справочник_по_JavaScript_1.5/Операции/Арифметические_Операции /ru/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators -/ru/docs/Web/JavaScript/Справочник_по_JavaScript_1.5/Операции/Битовые_Операции /ru/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators -/ru/docs/Web/JavaScript/Справочник_по_JavaScript_1.5/Операции/Операции_Присваивания /ru/docs/Web/JavaScript/Reference/Operators/Assignment_Operators +/ru/docs/Web/JavaScript/Справочник_по_JavaScript_1.5/Операции/Арифметические_Операции /ru/docs/conflicting/Web/JavaScript/Reference/Operators +/ru/docs/Web/JavaScript/Справочник_по_JavaScript_1.5/Операции/Битовые_Операции /ru/docs/conflicting/Web/JavaScript/Reference/Operators_7c8eb9475d97a4a734c5991857698560 +/ru/docs/Web/JavaScript/Справочник_по_JavaScript_1.5/Операции/Операции_Присваивания /ru/docs/conflicting/Web/JavaScript/Reference/Operators_8d54701de06af40a7c984517cbe87b3e +/ru/docs/Web/Manifest/serviceworker /ru/docs/orphaned/Web/Manifest/serviceworker +/ru/docs/Web/MathML/Атрибут /ru/docs/Web/MathML/Attribute +/ru/docs/Web/MathML/Примеры /ru/docs/Web/MathML/Examples +/ru/docs/Web/MathML/Примеры/Deriving_the_Quadratic_Formula /ru/docs/Web/MathML/Examples/Deriving_the_Quadratic_Formula +/ru/docs/Web/MathML/Примеры/MathML_Pythagorean_Theorem /ru/docs/Web/MathML/Examples/MathML_Pythagorean_Theorem +/ru/docs/Web/Media/Formats/WebRTC_кодеки /ru/docs/Web/Media/Formats/WebRTC_codecs +/ru/docs/Web/Performance/Основы /ru/docs/Web/Performance/Fundamentals +/ru/docs/Web/Performance/Производительность_анимации /ru/docs/Web/Performance/Animation_performance_and_frame_rate +/ru/docs/Web/Progressive_web_apps/Заметный /ru/docs/conflicting/Web/Progressive_web_apps_628955cdadd77b10ec99de034fc76374 +/ru/docs/Web/SVG/Attribute/onload /ru/docs/orphaned/Web/SVG/Attribute/onload +/ru/docs/Web/SVG/Tutorial/Базовые_Преобразования /ru/docs/Web/SVG/Tutorial/Basic_Transformations +/ru/docs/Web/SVG/Tutorial/Введение /ru/docs/Web/SVG/Tutorial/Introduction +/ru/docs/Web/SVG/Tutorial/Основные_Фигуры /ru/docs/Web/SVG/Tutorial/Basic_Shapes +/ru/docs/Web/SVG/Tutorial/Позиции /ru/docs/Web/SVG/Tutorial/Positions +/ru/docs/Web/SVG/Элемент /ru/docs/Web/SVG/Element +/ru/docs/Web/SVG/Элемент/ /ru/docs/Web/SVG/Element/text +/ru/docs/Web/SVG/Элемент/a /ru/docs/Web/SVG/Element/a +/ru/docs/Web/SVG/Элемент/animate /ru/docs/Web/SVG/Element/animate +/ru/docs/Web/SVG/Элемент/animateMotion /ru/docs/Web/SVG/Element/animateMotion +/ru/docs/Web/SVG/Элемент/circle /ru/docs/Web/SVG/Element/circle +/ru/docs/Web/SVG/Элемент/defs /ru/docs/Web/SVG/Element/defs +/ru/docs/Web/SVG/Элемент/ellipse /ru/docs/Web/SVG/Element/ellipse +/ru/docs/Web/SVG/Элемент/feBlend /ru/docs/Web/SVG/Element/feBlend +/ru/docs/Web/SVG/Элемент/foreignObject /ru/docs/Web/SVG/Element/foreignObject +/ru/docs/Web/SVG/Элемент/g /ru/docs/Web/SVG/Element/g +/ru/docs/Web/SVG/Элемент/image /ru/docs/Web/SVG/Element/image +/ru/docs/Web/SVG/Элемент/line /ru/docs/Web/SVG/Element/line +/ru/docs/Web/SVG/Элемент/linearGradient /ru/docs/Web/SVG/Element/linearGradient +/ru/docs/Web/SVG/Элемент/path /ru/docs/Web/SVG/Element/path +/ru/docs/Web/SVG/Элемент/pattern /ru/docs/Web/SVG/Element/pattern +/ru/docs/Web/SVG/Элемент/polygon /ru/docs/Web/SVG/Element/polygon +/ru/docs/Web/SVG/Элемент/radialGradient /ru/docs/Web/SVG/Element/radialGradient +/ru/docs/Web/SVG/Элемент/rect /ru/docs/Web/SVG/Element/rect +/ru/docs/Web/SVG/Элемент/svg /ru/docs/Web/SVG/Element/svg +/ru/docs/Web/SVG/Элемент/use /ru/docs/Web/SVG/Element/use +/ru/docs/Web/Security/CSP /ru/docs/conflicting/Web/HTTP/CSP +/ru/docs/Web/Security/Information_Security_Basics /ru/docs/orphaned/Web/Security/Information_Security_Basics +/ru/docs/Web/WebAPI /ru/docs/conflicting/Web/API /ru/docs/Web/WebGL /ru/docs/Web/API/WebGL_API /ru/docs/Web/WebGL/Adding_2D_content_to_a_WebGL_context /ru/docs/Web/API/WebGL_API/Tutorial/Adding_2D_content_to_a_WebGL_context /ru/docs/Web/WebGL/Animating_objects_with_WebGL /ru/docs/Web/API/WebGL_API/Tutorial/Animating_objects_with_WebGL /ru/docs/Web/WebGL/Getting_started_with_WebGL /ru/docs/Web/API/WebGL_API/Tutorial/Getting_started_with_WebGL /ru/docs/Web/WebGL/Using_shaders_to_apply_color_in_WebGL /ru/docs/Web/API/WebGL_API/Tutorial/Using_shaders_to_apply_color_in_WebGL +/ru/docs/Web/Web_Components/Использование_пользовательских_элементов /ru/docs/Web/Web_Components/Using_custom_elements +/ru/docs/Web/XPath/Funkcje /ru/docs/Web/XPath/Functions +/ru/docs/Web/XPath/Funkcje/floor /ru/docs/Web/XPath/Functions/floor /ru/docs/Web/Манифест /ru/docs/Web/Manifest /ru/docs/Web/Манифест/background_color /ru/docs/Web/Manifest/background_color /ru/docs/Web/Манифест/categories /ru/docs/Web/Manifest/categories @@ -388,23 +865,42 @@ /ru/docs/Web/Манифест/related_applications /ru/docs/Web/Manifest/related_applications /ru/docs/Web/Манифест/scope /ru/docs/Web/Manifest/scope /ru/docs/Web/Манифест/screenshots /ru/docs/Web/Manifest/screenshots -/ru/docs/Web/Манифест/serviceworker /ru/docs/Web/Manifest/serviceworker +/ru/docs/Web/Манифест/serviceworker /ru/docs/orphaned/Web/Manifest/serviceworker /ru/docs/Web/Манифест/short_name /ru/docs/Web/Manifest/short_name /ru/docs/Web/Манифест/start_url /ru/docs/Web/Manifest/start_url /ru/docs/Web/Манифест/theme_color /ru/docs/Web/Manifest/theme_color /ru/docs/WebGL /ru/docs/Web/API/WebGL_API /ru/docs/WebGL/Using_shaders_to_apply_color_in_WebGL /ru/docs/Web/API/WebGL_API/Tutorial/Using_shaders_to_apply_color_in_WebGL -/ru/docs/XHTML /ru/docs/Словарь/XHTML +/ru/docs/WebSockets /ru/docs/Web/API/WebSockets_API +/ru/docs/WebSockets/Writing_WebSocket_client_applications /ru/docs/Web/API/WebSockets_API/Writing_WebSocket_client_applications +/ru/docs/Web_Development/Mobile /ru/docs/conflicting/Web/Guide/Mobile +/ru/docs/Web_Development/Mobile/Responsive_design /ru/docs/conflicting/Web/Progressive_web_apps +/ru/docs/XHTML /ru/docs/Glossary/XHTML +/ru/docs/XMLHttpRequest /ru/docs/conflicting/Web/API/XMLHttpRequest +/ru/docs/XML_in_Mozilla /ru/docs/orphaned/XML_in_Mozilla +/ru/docs/XPCNativeWrapper /ru/docs/orphaned/XPCNativeWrapper +/ru/docs/XPCOM /ru/docs/orphaned/XPCOM /ru/docs/XPath /ru/docs/Web/XPath -/ru/docs/XPath/Funkcje /ru/docs/Web/XPath/Funkcje -/ru/docs/XPath/Funkcje/floor /ru/docs/Web/XPath/Funkcje/floor +/ru/docs/XPath/Funkcje /ru/docs/Web/XPath/Functions +/ru/docs/XPath/Funkcje/floor /ru/docs/Web/XPath/Functions/floor /ru/docs/XSLT /ru/docs/Web/XSLT /ru/docs/en /en-US/ /ru/docs/kak_soobschit_o_zavisshem_Firefox /ru/docs/Как_сообщить_о_зависшем_Firefox /ru/docs/nsIOutputStream:writeFrom /ru/docs/nsIOutputStream/writeFrom -/ru/docs/Введение_(альтернативные_проекты) /ru/docs/Introduction_(alternate) +/ru/docs/Введение_(альтернативные_проекты) /ru/docs/Mozilla/Developer_guide/Introduction +/ru/docs/Веб-разработка /ru/docs/conflicting/Web/Guide +/ru/docs/Веб-стандарты /ru/docs/orphaned/Веб-стандарты +/ru/docs/Вопросы_без_ответов /ru/docs/orphaned/Вопросы_без_ответов +/ru/docs/Динамически_изменяемый_пользовательский_интерфейс_на_XUL /ru/docs/orphaned/Динамически_изменяемый_пользовательский_интерфейс_на_XUL +/ru/docs/Доступность /ru/docs/orphaned/Доступность /ru/docs/Заглавная_страница /ru/docs/Web +/ru/docs/Заголовок_ссылки /ru/docs/orphaned/Заголовок_ссылки +/ru/docs/Контроль_качества /ru/docs/orphaned/Контроль_качества +/ru/docs/Локализация /ru/docs/orphaned/Локализация +/ru/docs/Настройка_среды_разработки_расширений /ru/docs/orphaned/Настройка_среды_разработки_расширений /ru/docs/Новое_в_JavaScript_1.6 /ru/docs/Web/JavaScript/New_in_JavaScript/1.6 +/ru/docs/Об_объектной_модели_документа /ru/docs/conflicting/Web/API/Document_Object_Model_5521049528397035462607d58539e0cc +/ru/docs/Переход_с_Internet_Explorer_на_Mozilla /ru/docs/orphaned/Переход_с_Internet_Explorer_на_Mozilla /ru/docs/Повторное_введение_в_JavaScript /ru/docs/Web/JavaScript/A_re-introduction_to_JavaScript /ru/docs/Руководство_по_JavaScript_1.5 /ru/docs/Web/JavaScript/Guide /ru/docs/Руководство_по_JavaScript_1.5/Операторы /ru/docs/Web/JavaScript/Reference/Operators @@ -413,9 +909,228 @@ /ru/docs/Руководство_по_JavaScript_1.5/Функции /ru/docs/Web/JavaScript/Guide/Functions /ru/docs/Руководство_по_JavaScript_1.5:Функции /ru/docs/Web/JavaScript/Guide/Functions /ru/docs/Руководство_разработчика_дополнений_Firefox /ru/docs/Firefox_addons_developer_guide +/ru/docs/Сборка_и_установка /ru/docs/orphaned/Сборка_и_установка +/ru/docs/Словарь /ru/docs/Glossary +/ru/docs/Словарь/404 /ru/docs/Glossary/404 +/ru/docs/Словарь/502 /ru/docs/Glossary/502 +/ru/docs/Словарь/AJAX /ru/docs/Glossary/AJAX /ru/docs/Словарь/AOM /ru/docs/Glossary/Accessibility_tree -/ru/docs/Словарь/пустой_элемент /ru/docs/Словарь/Empty_element -/ru/docs/Справочная_информация_по_Gecko_DOM:Предисловие /ru/docs/Справочная_информация_по_Gecko_DOM/Предисловие +/ru/docs/Словарь/API /ru/docs/Glossary/API +/ru/docs/Словарь/ARIA /ru/docs/Glossary/ARIA +/ru/docs/Словарь/ARPA /ru/docs/Glossary/ARPA +/ru/docs/Словарь/ASCII /ru/docs/Glossary/ASCII +/ru/docs/Словарь/ATAG /ru/docs/Glossary/ATAG +/ru/docs/Словарь/Abstraction /ru/docs/Glossary/Abstraction +/ru/docs/Словарь/Adobe-Flash /ru/docs/Glossary/Adobe_Flash +/ru/docs/Словарь/Algorithm /ru/docs/Glossary/Algorithm +/ru/docs/Словарь/Apple_Safari /ru/docs/Glossary/Apple_Safari +/ru/docs/Словарь/Arpanet /ru/docs/Glossary/Arpanet +/ru/docs/Словарь/Asynchronous /ru/docs/Glossary/Asynchronous +/ru/docs/Словарь/Bandwidth /ru/docs/Glossary/Bandwidth +/ru/docs/Словарь/BiDi /ru/docs/Glossary/BiDi +/ru/docs/Словарь/BigInt /ru/docs/Glossary/BigInt +/ru/docs/Словарь/Blink /ru/docs/Glossary/Blink +/ru/docs/Словарь/Boolean /ru/docs/Glossary/Boolean +/ru/docs/Словарь/Bootstrap /ru/docs/Glossary/Bootstrap +/ru/docs/Словарь/Browser /ru/docs/Glossary/Browser +/ru/docs/Словарь/Browsing_context /ru/docs/Glossary/Browsing_context +/ru/docs/Словарь/Bézier_curve /ru/docs/Glossary/Bézier_curve +/ru/docs/Словарь/CDN /ru/docs/Glossary/CDN +/ru/docs/Словарь/CMS /ru/docs/Glossary/CMS +/ru/docs/Словарь/CORS /ru/docs/Glossary/CORS +/ru/docs/Словарь/CRLF /ru/docs/Glossary/CRLF +/ru/docs/Словарь/CSP /ru/docs/Glossary/CSP +/ru/docs/Словарь/CSRF /ru/docs/Glossary/CSRF +/ru/docs/Словарь/CSS /ru/docs/Glossary/CSS +/ru/docs/Словарь/CSS_Selector /ru/docs/Glossary/CSS_Selector +/ru/docs/Словарь/CSS_preprocessor /ru/docs/Glossary/CSS_preprocessor +/ru/docs/Словарь/Call_stack /ru/docs/Glossary/Call_stack +/ru/docs/Словарь/Canvas /ru/docs/Glossary/Canvas +/ru/docs/Словарь/Card_sorting /ru/docs/Glossary/Card_sorting +/ru/docs/Словарь/Character /ru/docs/Glossary/Character +/ru/docs/Словарь/Chrome /ru/docs/Glossary/Chrome +/ru/docs/Словарь/Class /ru/docs/Glossary/Class +/ru/docs/Словарь/Codec /ru/docs/Glossary/Codec +/ru/docs/Словарь/Compile /ru/docs/Glossary/Compile +/ru/docs/Словарь/Computer_Programming /ru/docs/Glossary/Computer_Programming +/ru/docs/Словарь/Conditional /ru/docs/Glossary/Conditional +/ru/docs/Словарь/Constructor /ru/docs/Glossary/Constructor +/ru/docs/Словарь/Cookie /ru/docs/Glossary/Cookie +/ru/docs/Словарь/Copyleft /ru/docs/Glossary/Copyleft +/ru/docs/Словарь/Crawler /ru/docs/Glossary/Crawler +/ru/docs/Словарь/DNS /ru/docs/Glossary/DNS +/ru/docs/Словарь/DOM /ru/docs/Glossary/DOM +/ru/docs/Словарь/DOS_attack /ru/docs/Glossary/DOS_attack +/ru/docs/Словарь/Doctype /ru/docs/Glossary/Doctype +/ru/docs/Словарь/Domain_name /ru/docs/Glossary/Domain_name +/ru/docs/Словарь/Dynamic_programming_language /ru/docs/Glossary/Dynamic_programming_language +/ru/docs/Словарь/ECMA /ru/docs/Glossary/ECMA +/ru/docs/Словарь/ECMAScript /ru/docs/Glossary/ECMAScript +/ru/docs/Словарь/Empty_element /ru/docs/Glossary/Empty_element +/ru/docs/Словарь/Encapsulation /ru/docs/Glossary/Encapsulation +/ru/docs/Словарь/Entity_header /ru/docs/Glossary/Entity_header +/ru/docs/Словарь/Expando /ru/docs/Glossary/Expando +/ru/docs/Словарь/FPS /ru/docs/Glossary/FPS +/ru/docs/Словарь/FTP /ru/docs/Glossary/FTP +/ru/docs/Словарь/Falsy /ru/docs/Glossary/Falsy +/ru/docs/Словарь/First-class_Function /ru/docs/Glossary/First-class_Function +/ru/docs/Словарь/First_CPU_idle /ru/docs/Glossary/First_CPU_idle +/ru/docs/Словарь/First_contentful_paint /ru/docs/Glossary/First_contentful_paint +/ru/docs/Словарь/First_input_delay /ru/docs/Glossary/First_input_delay +/ru/docs/Словарь/First_interactive /ru/docs/Glossary/First_interactive +/ru/docs/Словарь/First_paint /ru/docs/Glossary/First_paint +/ru/docs/Словарь/Flex_Item /ru/docs/Glossary/Flex_Item +/ru/docs/Словарь/Flexbox /ru/docs/Glossary/Flexbox +/ru/docs/Словарь/Forbidden_header_name /ru/docs/Glossary/Forbidden_header_name +/ru/docs/Словарь/Gecko /ru/docs/Glossary/Gecko +/ru/docs/Словарь/General_header /ru/docs/Glossary/General_header +/ru/docs/Словарь/Git /ru/docs/Glossary/Git +/ru/docs/Словарь/Global_object /ru/docs/Glossary/Global_object +/ru/docs/Словарь/Grid /ru/docs/Glossary/Grid +/ru/docs/Словарь/Grid_Column /ru/docs/Glossary/Grid_Column +/ru/docs/Словарь/HTML /ru/docs/Glossary/HTML +/ru/docs/Словарь/HTML5 /ru/docs/Glossary/HTML5 +/ru/docs/Словарь/HTTP /ru/docs/Glossary/HTTP +/ru/docs/Словарь/HTTP_2 /ru/docs/Glossary/HTTP_2 +/ru/docs/Словарь/Host /ru/docs/Glossary/Host +/ru/docs/Словарь/IANA /ru/docs/Glossary/IANA +/ru/docs/Словарь/ICANN /ru/docs/Glossary/ICANN +/ru/docs/Словарь/IETF /ru/docs/Glossary/IETF +/ru/docs/Словарь/IIFE /ru/docs/Glossary/IIFE +/ru/docs/Словарь/IP_Address /ru/docs/Glossary/IP_Address +/ru/docs/Словарь/ISO /ru/docs/Glossary/ISO +/ru/docs/Словарь/Idempotent /ru/docs/Glossary/Idempotent +/ru/docs/Словарь/Identifier /ru/docs/Glossary/Identifier +/ru/docs/Словарь/IndexedDB /ru/docs/Glossary/IndexedDB +/ru/docs/Словарь/Information_architecture /ru/docs/Glossary/Information_architecture +/ru/docs/Словарь/Internet /ru/docs/Glossary/Internet +/ru/docs/Словарь/JSON /ru/docs/Glossary/JSON +/ru/docs/Словарь/Java /ru/docs/Glossary/Java +/ru/docs/Словарь/JavaScript /ru/docs/Glossary/JavaScript +/ru/docs/Словарь/MIME_type /ru/docs/Glossary/MIME_type +/ru/docs/Словарь/Main_Axis /ru/docs/Glossary/Main_Axis +/ru/docs/Словарь/MathML /ru/docs/Glossary/MathML +/ru/docs/Словарь/Method /ru/docs/Glossary/Method +/ru/docs/Словарь/Microsoft_Internet_Explorer /ru/docs/Glossary/Microsoft_Internet_Explorer +/ru/docs/Словарь/Mixin /ru/docs/Glossary/Mixin +/ru/docs/Словарь/Node.js /ru/docs/Glossary/Node.js +/ru/docs/Словарь/Null /ru/docs/Glossary/Null +/ru/docs/Словарь/Number /ru/docs/Glossary/Number +/ru/docs/Словарь/OOP /ru/docs/Glossary/OOP +/ru/docs/Словарь/Object /ru/docs/Glossary/Object +/ru/docs/Словарь/OpenGL /ru/docs/Glossary/OpenGL +/ru/docs/Словарь/PHP /ru/docs/Glossary/PHP +/ru/docs/Словарь/Pixel /ru/docs/Glossary/Pixel +/ru/docs/Словарь/Polymorphism /ru/docs/Glossary/Polymorphism +/ru/docs/Словарь/Primitive /ru/docs/Glossary/Primitive +/ru/docs/Словарь/Progressive_web_apps /ru/docs/Glossary/Progressive_web_apps +/ru/docs/Словарь/Promise /ru/docs/Glossary/Promise +/ru/docs/Словарь/Prototype-based_programming /ru/docs/Glossary/Prototype-based_programming +/ru/docs/Словарь/Pseudo-element /ru/docs/Glossary/Pseudo-element +/ru/docs/Словарь/Pseudocode /ru/docs/Glossary/Pseudocode +/ru/docs/Словарь/Reflow /ru/docs/Glossary/Reflow +/ru/docs/Словарь/Regular_expression /ru/docs/Glossary/Regular_expression +/ru/docs/Словарь/Request_header /ru/docs/Glossary/Request_header +/ru/docs/Словарь/Responsive_web_design /ru/docs/Glossary/Responsive_web_design +/ru/docs/Словарь/Round_Trip_Time_(RTT) /ru/docs/Glossary/Round_Trip_Time_(RTT) +/ru/docs/Словарь/SDP /ru/docs/Glossary/SDP +/ru/docs/Словарь/SEO /ru/docs/Glossary/SEO +/ru/docs/Словарь/SGML /ru/docs/Glossary/SGML +/ru/docs/Словарь/SVG /ru/docs/Glossary/SVG +/ru/docs/Словарь/Scroll_container /ru/docs/Glossary/Scroll_container +/ru/docs/Словарь/Self-Executing_Anonymous_Function /ru/docs/Glossary/Self-Executing_Anonymous_Function +/ru/docs/Словарь/Semantics /ru/docs/Glossary/Semantics +/ru/docs/Словарь/Server /ru/docs/Glossary/Server +/ru/docs/Словарь/Simple_response_header /ru/docs/Glossary/Simple_response_header +/ru/docs/Словарь/Sloppy_mode /ru/docs/Glossary/Sloppy_mode +/ru/docs/Словарь/Specification /ru/docs/Glossary/Specification +/ru/docs/Словарь/Symbol /ru/docs/Glossary/Symbol +/ru/docs/Словарь/TCP /ru/docs/Glossary/TCP +/ru/docs/Словарь/TLS /ru/docs/Glossary/TLS +/ru/docs/Словарь/Time_to_interactive /ru/docs/Glossary/Time_to_interactive +/ru/docs/Словарь/Truthy /ru/docs/Glossary/Truthy +/ru/docs/Словарь/Type /ru/docs/Glossary/Type +/ru/docs/Словарь/Type_Conversion /ru/docs/Glossary/Type_Conversion +/ru/docs/Словарь/Type_coercion /ru/docs/Glossary/Type_coercion +/ru/docs/Словарь/UI /ru/docs/Glossary/UI +/ru/docs/Словарь/URL /ru/docs/Glossary/URL +/ru/docs/Словарь/User_agent /ru/docs/Glossary/User_agent +/ru/docs/Словарь/Variable /ru/docs/Glossary/Variable +/ru/docs/Словарь/Vendor_Prefix /ru/docs/Glossary/Vendor_Prefix +/ru/docs/Словарь/Viewport /ru/docs/Glossary/Viewport +/ru/docs/Словарь/W3C /ru/docs/Glossary/W3C +/ru/docs/Словарь/WAI /ru/docs/Glossary/WAI +/ru/docs/Словарь/WHATWG /ru/docs/Glossary/WHATWG +/ru/docs/Словарь/WebKit /ru/docs/Glossary/WebKit +/ru/docs/Словарь/WebSockets /ru/docs/Glossary/WebSockets +/ru/docs/Словарь/World_Wide_Web /ru/docs/Glossary/World_Wide_Web +/ru/docs/Словарь/Wrapper /ru/docs/Glossary/Wrapper +/ru/docs/Словарь/XHR_(XMLHttpRequest) /ru/docs/Glossary/XHR_(XMLHttpRequest) +/ru/docs/Словарь/XHTML /ru/docs/Glossary/XHTML +/ru/docs/Словарь/XML /ru/docs/Glossary/XML +/ru/docs/Словарь/application_context /ru/docs/Glossary/application_context +/ru/docs/Словарь/baseline /ru/docs/Glossary/baseline +/ru/docs/Словарь/cacheable /ru/docs/Glossary/cacheable +/ru/docs/Словарь/character_encoding /ru/docs/Glossary/character_encoding +/ru/docs/Словарь/data_structure /ru/docs/Glossary/Data_structure +/ru/docs/Словарь/event /ru/docs/Glossary/event +/ru/docs/Словарь/first_meaningful_paint /ru/docs/Glossary/first_meaningful_paint +/ru/docs/Словарь/global_variable /ru/docs/Glossary/Global_variable +/ru/docs/Словарь/https /ru/docs/Glossary/https +/ru/docs/Словарь/jQuery /ru/docs/Glossary/jQuery +/ru/docs/Словарь/jpeg /ru/docs/Glossary/jpeg +/ru/docs/Словарь/loop /ru/docs/Glossary/loop +/ru/docs/Словарь/origin /ru/docs/Glossary/Origin +/ru/docs/Словарь/privileged_code /ru/docs/Glossary/privileged_code +/ru/docs/Словарь/property /ru/docs/Glossary/property +/ru/docs/Словарь/safe /ru/docs/Glossary/safe +/ru/docs/Словарь/time_to_first_byte /ru/docs/Glossary/time_to_first_byte +/ru/docs/Словарь/undefined /ru/docs/Glossary/undefined +/ru/docs/Словарь/Аргумент /ru/docs/Glossary/Argument +/ru/docs/Словарь/Атрибут /ru/docs/Glossary/Attribute +/ru/docs/Словарь/Буфер /ru/docs/Glossary/buffer +/ru/docs/Словарь/Выражение /ru/docs/Glossary/Statement +/ru/docs/Словарь/Высокоуровневый_язык_программированияprogramming_language /ru/docs/Glossary/High-level_programming_language +/ru/docs/Словарь/Гипертекст /ru/docs/Glossary/Hypertext +/ru/docs/Словарь/Дешифрование /ru/docs/Glossary/Decryption +/ru/docs/Словарь/Домен /ru/docs/Glossary/Domain +/ru/docs/Словарь/Доступность /ru/docs/Glossary/Accessibility +/ru/docs/Словарь/Заголовок /ru/docs/Glossary/Head +/ru/docs/Словарь/Запрещённое_имя_заголовка_ответа /ru/docs/Glossary/Forbidden_response_header_name +/ru/docs/Словарь/Инструменты_разработчика /ru/docs/Glossary/Developer_Tools +/ru/docs/Словарь/Интернет-провайдер /ru/docs/Glossary/ISP +/ru/docs/Словарь/КЦД /ru/docs/Glossary/CIA +/ru/docs/Словарь/Константа /ru/docs/Glossary/Constant +/ru/docs/Словарь/Кэш /ru/docs/Glossary/Cache +/ru/docs/Словарь/Массив /ru/docs/Glossary/array +/ru/docs/Словарь/Метаданные /ru/docs/Glossary/Metadata +/ru/docs/Словарь/Поднятие /ru/docs/Glossary/Hoisting +/ru/docs/Словарь/Порт /ru/docs/Glossary/Port +/ru/docs/Словарь/Пробельные_символы /ru/docs/Glossary/Whitespace +/ru/docs/Словарь/Прокси_сервер /ru/docs/Glossary/Proxy_server +/ru/docs/Словарь/Простой_заголовок /ru/docs/Glossary/Simple_header +/ru/docs/Словарь/Протокол /ru/docs/Glossary/Protocol +/ru/docs/Словарь/Прототип /ru/docs/Glossary/Prototype +/ru/docs/Словарь/Сертифицировано /ru/docs/Glossary/Certified +/ru/docs/Словарь/Синхронный /ru/docs/Glossary/Synchronous +/ru/docs/Словарь/Статическая_типизация /ru/docs/Glossary/Static_typing +/ru/docs/Словарь/Строка /ru/docs/Glossary/String +/ru/docs/Словарь/Сущности /ru/docs/Glossary/Entity +/ru/docs/Словарь/Тег /ru/docs/Glossary/Tag +/ru/docs/Словарь/Функция /ru/docs/Glossary/Function +/ru/docs/Словарь/Элемент /ru/docs/Glossary/Element +/ru/docs/Словарь/пустой_элемент /ru/docs/Glossary/Empty_element +/ru/docs/Словарь/функция_обратного_вызова /ru/docs/Glossary/Callback_function +/ru/docs/Словарь/хеш /ru/docs/Glossary/hash +/ru/docs/Создание_расширения /ru/docs/orphaned/Создание_расширения +/ru/docs/Создание_расширения/Настройка_Firefox_для_разработки /ru/docs/orphaned/Создание_расширения/Настройка_Firefox_для_разработки +/ru/docs/Создание_расширения/Настройка_Firefox_для_разработки_расширений /ru/docs/orphaned/Создание_расширения/Настройка_Firefox_для_разработки_расширений +/ru/docs/Создание_расширения_для_Firefox_с_использованием_Mozilla_Build_System /ru/docs/orphaned/Создание_расширения_для_Firefox_с_использованием_Mozilla_Build_System +/ru/docs/Справочная_информация_по_Gecko_DOM /ru/docs/orphaned/Справочная_информация_по_Gecko_DOM +/ru/docs/Справочная_информация_по_Gecko_DOM/Введение /ru/docs/orphaned/Справочная_информация_по_Gecko_DOM/Введение +/ru/docs/Справочная_информация_по_Gecko_DOM/Предисловие /ru/docs/orphaned/Справочная_информация_по_Gecko_DOM/Предисловие +/ru/docs/Справочная_информация_по_Gecko_DOM/Примеры /ru/docs/orphaned/Справочная_информация_по_Gecko_DOM/Примеры +/ru/docs/Справочная_информация_по_Gecko_DOM:Предисловие /ru/docs/orphaned/Справочная_информация_по_Gecko_DOM/Предисловие /ru/docs/Справочник_по_JavaScript_1.5 /ru/docs/Web/JavaScript/Reference /ru/docs/Справочник_по_JavaScript_1.5/Глобальные_объекты /ru/docs/Web/JavaScript/Reference/Global_Objects /ru/docs/Справочник_по_JavaScript_1.5/Глобальные_объекты/Array /ru/docs/Web/JavaScript/Reference/Global_Objects/Array @@ -425,7 +1140,7 @@ /ru/docs/Справочник_по_JavaScript_1.5/Глобальные_объекты/Boolean /ru/docs/Web/JavaScript/Reference/Global_Objects/Boolean /ru/docs/Справочник_по_JavaScript_1.5/Глобальные_объекты/Function /ru/docs/Web/JavaScript/Reference/Global_Objects/Function /ru/docs/Справочник_по_JavaScript_1.5/Глобальные_объекты/Function/length /ru/docs/Web/JavaScript/Reference/Global_Objects/Function/length -/ru/docs/Справочник_по_JavaScript_1.5/Глобальные_объекты/Function/prototype /ru/docs/Web/JavaScript/Reference/Global_Objects/Function/prototype +/ru/docs/Справочник_по_JavaScript_1.5/Глобальные_объекты/Function/prototype /ru/docs/conflicting/Web/JavaScript/Reference/Global_Objects/Function /ru/docs/Справочник_по_JavaScript_1.5/Глобальные_объекты/Math /ru/docs/Web/JavaScript/Reference/Global_Objects/Math /ru/docs/Справочник_по_JavaScript_1.5/Глобальные_объекты/Object /ru/docs/Web/JavaScript/Reference/Global_Objects/Object /ru/docs/Справочник_по_JavaScript_1.5/Глобальные_объекты/RegExp /ru/docs/Web/JavaScript/Reference/Global_Objects/RegExp @@ -435,12 +1150,13 @@ /ru/docs/Справочник_по_JavaScript_1.5/Операторы /ru/docs/Web/JavaScript/Reference/Operators /ru/docs/Справочник_по_JavaScript_1.5/Операции /ru/docs/Web/JavaScript/Reference/Operators /ru/docs/Справочник_по_JavaScript_1.5/Операции/Assignment_Operators /ru/docs/Web/JavaScript/Reference/Operators -/ru/docs/Справочник_по_JavaScript_1.5/Операции/Арифметические_Операции /ru/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators -/ru/docs/Справочник_по_JavaScript_1.5/Операции/Битовые_Операции /ru/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators -/ru/docs/Справочник_по_JavaScript_1.5/Операции/Операции_Присваивания /ru/docs/Web/JavaScript/Reference/Operators/Assignment_Operators +/ru/docs/Справочник_по_JavaScript_1.5/Операции/Арифметические_Операции /ru/docs/conflicting/Web/JavaScript/Reference/Operators +/ru/docs/Справочник_по_JavaScript_1.5/Операции/Битовые_Операции /ru/docs/conflicting/Web/JavaScript/Reference/Operators_7c8eb9475d97a4a734c5991857698560 +/ru/docs/Справочник_по_JavaScript_1.5/Операции/Операции_Присваивания /ru/docs/conflicting/Web/JavaScript/Reference/Operators_8d54701de06af40a7c984517cbe87b3e /ru/docs/Справочник_по_JavaScript_1.5:Глобальные_объекты /ru/docs/Web/JavaScript/Reference/Global_Objects /ru/docs/Справочник_по_JavaScript_1.5:Глобальные_функции:String /ru/docs/Web/JavaScript/Reference/Global_Objects/String /ru/docs/Справочник_по_JavaScript_1.5:Глобальные_функции:isNaN /ru/docs/Web/JavaScript/Reference/Global_Objects/isNaN +/ru/docs/Темы /ru/docs/orphaned/Темы /ru/docs/Ядро_JavaScript_1.5_Спровчник /ru/docs/Web/JavaScript/Reference /ru/docs/Ядро_JavaScript_1.5_Спровчник/Functions /ru/docs/Web/JavaScript/Reference/Functions /ru/docs/Ядро_JavaScript_1.5_Спровчник/Functions/Arrow_functions /ru/docs/Web/JavaScript/Reference/Functions/Arrow_functions diff --git a/files/ru/_wikihistory.json b/files/ru/_wikihistory.json index b21625475a..9b04a178ab 100644 --- a/files/ru/_wikihistory.json +++ b/files/ru/_wikihistory.json @@ -1,188 +1,4 @@ { - "A_Basic_RayCaster": { - "modified": "2019-03-23T23:52:15.954Z", - "contributors": [ - "warsan", - "Chernetsky" - ] - }, - "Building_an_Extension": { - "modified": "2019-03-23T23:58:39.567Z", - "contributors": [ - "topskill", - "fscholz", - "iliacmd" - ] - }, - "Chrome": { - "modified": "2019-03-23T23:17:01.096Z", - "contributors": [ - "Norville", - "LunaticRL" - ] - }, - "DOM": { - "modified": "2019-06-25T10:49:54.010Z", - "contributors": [ - "ethertank", - "Megapotz" - ] - }, - "DOM/DOM_Reference": { - "modified": "2020-08-25T05:36:15.194Z", - "contributors": [ - "tix836", - "shmel3", - "shvedovskiy", - "BychekRU", - "teoli", - "Newser", - "mayconrem" - ] - }, - "DOM/DOM_Reference/Events": { - "modified": "2019-03-18T21:18:44.250Z", - "contributors": [ - "SphinxKnight" - ] - }, - "DOM/DOM_Reference/Examples": { - "modified": "2019-09-25T18:36:16.946Z", - "contributors": [ - "Problemon", - "paxarpp", - "Bargamut" - ] - }, - "DOM/DOM_Reference/Locating_DOM_elements_using_selectors": { - "modified": "2019-03-23T22:13:41.294Z", - "contributors": [ - "tavira" - ] - }, - "DOM/DOM_Reference/Введение": { - "modified": "2019-10-02T12:18:01.287Z", - "contributors": [ - "shmel3", - "newbornfrontender", - "GraceAredel", - "hardsoncore", - "Flaeron", - "paxarpp", - "rapaich", - "miirinjej", - "tavira", - "sersalex", - "tvitcom", - "Y-Taras", - "Azijkes" - ] - }, - "DOM/Using_fullscreen_mode": { - "modified": "2020-10-15T21:22:05.646Z", - "contributors": [ - "dartraiden", - "wbamberg", - "sosnovskyas", - "mzhel" - ] - }, - "DOM/Using_web_workers": { - "modified": "2020-06-15T09:56:56.839Z", - "contributors": [ - "sekrittt", - "S-inTheory", - "KVAnton-WEB", - "demyanovs", - "Akh-rman", - "warsan", - "Corey-Maler", - "citizen55", - "S-le", - "vorobeez", - "namikiri", - "evhandel", - "alex-misch", - "Sajag", - "Anomeon", - "3lvcz", - "x1unix", - "nsine", - "sanarise", - "arvitaly", - "AlexanderTserkovniy", - "sergeiDruzhinin", - "kav137", - "Forshortmrmeth", - "MuradAz", - "ahtohbi4", - "padenot", - "finalex" - ] - }, - "DOM/document.createElement": { - "modified": "2020-05-24T05:32:15.624Z", - "contributors": [ - "MyWay2IT", - "ArtemStudio", - "ellizii", - "RblSb", - "kothique", - "Veers", - "itslooklike", - "Madzi", - "lemurio", - "Guria", - "khalid32", - "Norville", - "teoli", - "icw82", - "Alego" - ] - }, - "DOM/document.images": { - "modified": "2019-03-24T00:04:21.348Z", - "contributors": [ - "khalid32", - "Norville", - "teoli", - "RAP1D" - ] - }, - "DOM/window.requestAnimationFrame": { - "modified": "2020-10-15T21:21:09.538Z", - "contributors": [ - "BehemothOz", - "S-inTheory", - "Kiryhas", - "ekirpichyov", - "Yialo", - "YozhEzhi", - "RoBit", - "alexsanqp", - "Bargamut", - "torbasow", - "Beliarh", - "nyk0r" - ] - }, - "Firefox_3.5_для_разработчика": { - "modified": "2019-03-24T00:00:48.916Z", - "contributors": [ - "wbamberg", - "teoli", - "Dionys" - ] - }, - "Firefox_3_for_developers": { - "modified": "2019-03-23T23:57:24.524Z", - "contributors": [ - "wbamberg", - "teoli", - "Destruction", - "Alm0" - ] - }, "Games": { "modified": "2020-06-19T09:52:35.652Z", "contributors": [ @@ -301,327 +117,77 @@ "netmag" ] }, - "Games/Tutorials/2D_Breakout_game_pure_JavaScript/Заключение": { - "modified": "2020-05-27T13:39:22.186Z", + "Games/Tutorials/HTML5_Gamedev_Phaser_Device_Orientation": { + "modified": "2019-03-18T21:45:23.068Z", "contributors": [ - "S-inTheory", - "fedev", - "ekirpichyov", - "netmag" + "wbamberg", + "maxypayne" ] }, - "Games/Tutorials/2D_Breakout_game_pure_JavaScript/Обнаружение_столкновений": { - "modified": "2020-05-27T13:47:02.328Z", + "Glossary/Accessibility_tree": { + "modified": "2020-10-23T07:48:08.061Z", "contributors": [ - "S-inTheory", - "alexerisov", - "ekirpichyov", - "BrightsDays", - "wbamberg", - "DanInSpace104" + "chrisdavidmills", + "VerZsuT", + "lolyanepizdi" ] }, - "Games/Tutorials/2D_Breakout_game_pure_JavaScript/Переместить_мяч": { - "modified": "2019-09-05T03:56:26.312Z", + "Glossary/Block": { + "modified": "2019-03-23T22:09:54.924Z", "contributors": [ - "ekirpichyov", - "Horbach_Andrii", - "wbamberg", - "W-A-D", - "HellLena" + "DashPisareva", + "Sheppy" ] }, - "Games/Tutorials/2D_Breakout_game_pure_JavaScript/Создаем_зону_кирпичей": { - "modified": "2019-09-05T04:00:55.487Z", + "Glossary/Block/CSS": { + "modified": "2019-03-23T22:09:55.008Z", "contributors": [ - "ekirpichyov", - "netmag", - "wbamberg", - "DanInSpace104" + "DashPisareva" ] }, - "Games/Tutorials/2D_Breakout_game_pure_JavaScript/Создание_Canvas_и_рисование_на_нём": { - "modified": "2019-09-05T03:54:58.102Z", + "Learn": { + "modified": "2020-10-04T14:26:11.837Z", "contributors": [ - "ekirpichyov", - "wbamberg", - "W-A-D", - "HellLena" + "akariZ", + "bytensky", + "methodx", + "SphinxKnight", + "boxa6", + "dmitriy134", + "svarlamov", + "bezik", + "gitzizou", + "zmux", + "tagir000", + "BychekRU", + "sunsetninja", + "JacobPython", + "Evgeny_Kurkin", + "uleming", + "arbatskiy", + "Radewqa", + "Semegen", + "YuliaOksymets", + "Jeremie" ] }, - "Games/Tutorials/2D_Breakout_game_pure_JavaScript/Управление_мышью": { - "modified": "2020-05-27T13:59:03.040Z", + "Learn/CSS": { + "modified": "2020-07-16T22:25:37.223Z", "contributors": [ - "S-inTheory", - "ekirpichyov", - "Merius", - "netmag" - ] - }, - "Games/Tutorials/HTML5_Gamedev_Phaser_Device_Orientation": { - "modified": "2019-03-18T21:45:23.068Z", - "contributors": [ - "wbamberg", - "maxypayne" - ] - }, - "Games/Tutorials/Создание_2D_Breakout_игры_на_Phaser": { - "modified": "2020-02-21T09:29:06.831Z", - "contributors": [ - "SpawnLeon", - "BVaflick", - "wbamberg", - "djigach" - ] - }, - "Games/Tutorials/Создание_2D_Breakout_игры_на_Phaser/Bounce_off_the_walls": { - "modified": "2019-07-13T11:04:44.018Z", - "contributors": [ - "BVaflick", - "AntonySawyer" - ] - }, - "Games/Tutorials/Создание_2D_Breakout_игры_на_Phaser/Game_over": { - "modified": "2019-07-04T10:47:35.001Z", - "contributors": [ - "BVaflick" - ] - }, - "Games/Tutorials/Создание_2D_Breakout_игры_на_Phaser/Initialize_the_framework": { - "modified": "2020-05-27T14:06:50.271Z", - "contributors": [ - "S-inTheory", - "BVaflick", - "VsevolodIvanov", - "wbamberg", - "djigach" - ] - }, - "Games/Tutorials/Создание_2D_Breakout_игры_на_Phaser/Load_the_assets_and_print_them_on_screen": { - "modified": "2020-05-27T14:16:50.797Z", - "contributors": [ - "S-inTheory", - "Surf12", - "BVaflick", - "wbamberg", - "djigach" - ] - }, - "Games/Tutorials/Создание_2D_Breakout_игры_на_Phaser/Move_the_ball": { - "modified": "2020-05-27T14:22:37.560Z", - "contributors": [ - "S-inTheory", - "BVaflick", - "wbamberg", - "djigach" - ] - }, - "Games/Tutorials/Создание_2D_Breakout_игры_на_Phaser/Physics": { - "modified": "2019-07-13T11:03:00.205Z", - "contributors": [ - "BVaflick", - "juliasheleva", - "wbamberg", - "djigach" - ] - }, - "Games/Tutorials/Создание_2D_Breakout_игры_на_Phaser/Scaling": { - "modified": "2020-05-27T14:30:34.825Z", - "contributors": [ - "S-inTheory", - "BVaflick", - "wbamberg", - "djigach" - ] - }, - "Games/Tutorials/Создание_2D_Breakout_игры_на_Phaser/Жизни": { - "modified": "2020-07-02T08:17:43.022Z", - "contributors": [ - "f1reSong", - "BVaflick" - ] - }, - "Games/Tutorials/Создание_2D_Breakout_игры_на_Phaser/Обработка_коллизий": { - "modified": "2019-07-13T11:08:36.093Z", - "contributors": [ - "BVaflick" - ] - }, - "Games/Tutorials/Создание_2D_Breakout_игры_на_Phaser/Очки": { - "modified": "2019-07-13T11:09:17.012Z", - "contributors": [ - "BVaflick" - ] - }, - "Games/Tutorials/Создание_2D_Breakout_игры_на_Phaser/Платформа_и_управление": { - "modified": "2019-07-13T11:05:39.887Z", - "contributors": [ - "BVaflick" - ] - }, - "Games/Tutorials/Создание_2D_Breakout_игры_на_Phaser/Победа": { - "modified": "2019-07-04T12:16:45.863Z", - "contributors": [ - "BVaflick" - ] - }, - "Games/Tutorials/Создание_2D_Breakout_игры_на_Phaser/Создание_кирпичей": { - "modified": "2019-07-13T11:07:30.266Z", - "contributors": [ - "BVaflick" - ] - }, - "Games/Анатомия": { - "modified": "2020-09-16T08:22:06.866Z", - "contributors": [ - "T-EVA-01", - "achernin+" - ] - }, - "Games/Ввод": { - "modified": "2020-01-09T13:42:58.936Z", - "contributors": [ - "idushii", - "nomo3919", - "BVaflick", - "RFG-G" - ] - }, - "Games/Инструменты": { - "modified": "2019-01-17T01:51:17.038Z", - "contributors": [ - "wbamberg", - "Cyganov" - ] - }, - "Games/Инструменты/asm.js": { - "modified": "2019-06-20T10:10:26.692Z", - "contributors": [ - "jkulvich", - "wbamberg", - "Cyganov" - ] - }, - "Glossary/Accessibility_tree": { - "modified": "2020-10-23T07:48:08.061Z", - "contributors": [ - "chrisdavidmills", - "VerZsuT", - "lolyanepizdi" - ] - }, - "Glossary/Block": { - "modified": "2019-03-23T22:09:54.924Z", - "contributors": [ - "DashPisareva", - "Sheppy" - ] - }, - "Glossary/Block/CSS": { - "modified": "2019-03-23T22:09:55.008Z", - "contributors": [ - "DashPisareva" - ] - }, - "Glossary/Block/Скриптинг": { - "modified": "2019-03-23T22:09:52.830Z", - "contributors": [ - "DashPisareva" - ] - }, - "Glossary/Polifill": { - "modified": "2019-03-23T22:18:26.835Z", - "contributors": [ - "pk.prog" - ] - }, - "HTML/HTML5": { - "modified": "2020-11-05T05:54:38.208Z", - "contributors": [ - "ksam", - "nikolay94", - "SphinxKnight", - "duhas1993", - "CrawlOverYou", - "Hamelion-gm", - "MuradAz", - "teoli", - "BychekRU", - "syam1123", - "M57", - "Jmunb", - "repby", - "uleming", - "askhat", - "andygol", - "Grakov", - "AxDaim" - ] - }, - "HTML/HTML5/Constraint_validation": { - "modified": "2019-03-23T22:20:23.601Z", - "contributors": [ - "lautsevich", - "Pescao" - ] - }, - "HTML/HTML5/Введение_в_HTML5": { - "modified": "2019-03-23T23:32:08.971Z", - "contributors": [ - "Jmunb", - "Grakov" - ] - }, - "Introduction_(alternate)": { - "modified": "2019-03-23T23:38:23.548Z", - "contributors": [ - "Nick_Pershin", - "greybax" - ] - }, - "Learn": { - "modified": "2020-10-04T14:26:11.837Z", - "contributors": [ - "akariZ", - "bytensky", - "methodx", - "SphinxKnight", - "boxa6", - "dmitriy134", - "svarlamov", - "bezik", - "gitzizou", - "zmux", - "tagir000", - "BychekRU", - "sunsetninja", - "JacobPython", - "Evgeny_Kurkin", - "uleming", - "arbatskiy", - "Radewqa", - "Semegen", - "YuliaOksymets", - "Jeremie" - ] - }, - "Learn/CSS": { - "modified": "2020-07-16T22:25:37.223Z", - "contributors": [ - "Ivan961", - "binxer", - "skrikl", - "izhurav", - "alexbs", - "sborenko", - "niktariy", - "bezik", - "Shychara", - "kolanski", - "VladdOs", - "BychekRU", - "uleming", - "Andrew_Pfeiffer" + "Ivan961", + "binxer", + "skrikl", + "izhurav", + "alexbs", + "sborenko", + "niktariy", + "bezik", + "Shychara", + "kolanski", + "VladdOs", + "BychekRU", + "uleming", + "Andrew_Pfeiffer" ] }, "Learn/CSS/Building_blocks": { @@ -732,72 +298,17 @@ "Ivan961" ] }, - "Learn/CSS/Building_blocks/Каскад_задачи": { - "modified": "2020-10-01T14:31:53.395Z", + "Learn/CSS/CSS_layout": { + "modified": "2020-11-04T06:48:54.216Z", "contributors": [ - "at940266" - ] - }, - "Learn/CSS/Building_blocks/Селекторы": { - "modified": "2020-07-19T06:45:12.608Z", - "contributors": [ - "k0w4lk", - "Ivan961", - "BADNaMe-RK" - ] - }, - "Learn/CSS/Building_blocks/Селекторы/Attribute_selectors": { - "modified": "2020-10-08T15:38:42.541Z", - "contributors": [ - "at940266", - "k0w4lk", - "Ivan961" - ] - }, - "Learn/CSS/Building_blocks/Селекторы/Combinators": { - "modified": "2020-12-07T19:30:35.658Z", - "contributors": [ - "RoPy73", - "at940266", - "anna.bunakova", - "sovushka-utrom", - "Ivan961" - ] - }, - "Learn/CSS/Building_blocks/Селекторы/Pseudo-classes_and_pseudo-elements": { - "modified": "2020-10-14T14:08:41.639Z", - "contributors": [ - "at940266", - "anna.bunakova", - "Ivan961" - ] - }, - "Learn/CSS/Building_blocks/Селекторы/Type_Class_and_ID_Selectors": { - "modified": "2020-10-07T14:15:51.046Z", - "contributors": [ - "at940266", - "ctmyxa", - "k0w4lk", - "Ivan961" - ] - }, - "Learn/CSS/Building_blocks/Селекторы/Селекторы_Задачи": { - "modified": "2020-10-28T14:57:16.890Z", - "contributors": [ - "at940266" - ] - }, - "Learn/CSS/CSS_layout": { - "modified": "2020-11-04T06:48:54.216Z", - "contributors": [ - "chuuddo", - "rookhive", - "engine-r", - "opereverzeva", - "skrikl", - "marksq", - "valeryvitkus", - "chrisdavidmills" + "chuuddo", + "rookhive", + "engine-r", + "opereverzeva", + "skrikl", + "marksq", + "valeryvitkus", + "chrisdavidmills" ] }, "Learn/CSS/CSS_layout/Flexbox": { @@ -871,44 +382,6 @@ "slychai85" ] }, - "Learn/CSS/CSS_layout/Макет_с_несколькими_столбцами": { - "modified": "2020-09-06T07:21:18.080Z", - "contributors": [ - "shade0602" - ] - }, - "Learn/CSS/CSS_layout/Навыки_Multicol": { - "modified": "2020-09-07T06:45:08.142Z", - "contributors": [ - "shade0602" - ] - }, - "Learn/CSS/CSS_layout/Навыки_позиционирования": { - "modified": "2020-09-07T06:09:02.193Z", - "contributors": [ - "shade0602" - ] - }, - "Learn/CSS/CSS_layout/Нормальный_поток": { - "modified": "2020-10-13T15:21:40.503Z", - "contributors": [ - "mvictorl", - "nsvintitskiy", - "SoMuchEffort" - ] - }, - "Learn/CSS/CSS_layout/Отзывчивый_дизайн": { - "modified": "2020-10-31T07:15:02.288Z", - "contributors": [ - "shade0602" - ] - }, - "Learn/CSS/CSS_properties": { - "modified": "2020-07-16T22:25:39.788Z", - "contributors": [ - "sviter" - ] - }, "Learn/CSS/First_steps": { "modified": "2020-07-16T22:27:40.530Z", "contributors": [ @@ -946,31 +419,6 @@ "Ivan961" ] }, - "Learn/CSS/First_steps/Как_структурирован_CSS": { - "modified": "2020-11-30T19:42:39.732Z", - "contributors": [ - "RoPy73", - "shade0602", - "Ivan961", - "Ultron5" - ] - }, - "Learn/CSS/First_steps/Что_такое_CSS": { - "modified": "2020-10-15T22:23:15.801Z", - "contributors": [ - "Ivan961", - "fedev", - "Tortik217" - ] - }, - "Learn/CSS/Introduction_to_CSS/Ponimanie_osnov_CSS": { - "modified": "2020-07-16T22:28:13.122Z", - "contributors": [ - "maxbo8", - "trman", - "VyacheslavLobanov" - ] - }, "Learn/CSS/Styling_text": { "modified": "2020-10-23T11:04:50.232Z", "contributors": [ @@ -999,33 +447,6 @@ "nikolayandr" ] }, - "Learn/CSS/Styling_text/Веб_шрифты": { - "modified": "2020-07-19T10:10:59.329Z", - "contributors": [ - "nsvintitskiy", - "shade0602" - ] - }, - "Learn/CSS/Styling_text/Задание:_Стилизирование_школьного_сайта": { - "modified": "2020-07-16T22:26:27.408Z", - "contributors": [ - "shade0602" - ] - }, - "Learn/CSS/Styling_text/Стилизация_списков": { - "modified": "2020-07-16T22:26:14.698Z", - "contributors": [ - "shade0602", - "vedmibot" - ] - }, - "Learn/CSS/Как": { - "modified": "2020-07-16T22:25:44.184Z", - "contributors": [ - "code-timer", - "Shychara" - ] - }, "Learn/Common_questions": { "modified": "2020-07-16T22:35:26.905Z", "contributors": [ @@ -1108,15 +529,6 @@ "teedree" ] }, - "Learn/Discover_browser_developer_tools": { - "modified": "2020-07-16T22:35:48.058Z", - "contributors": [ - "mirajane23", - "fox67rus", - "Metallman", - "Dante103" - ] - }, "Learn/Getting_started_with_the_web": { "modified": "2020-07-17T07:11:41.531Z", "contributors": [ @@ -1264,27 +676,6 @@ "dm_glazunov" ] }, - "Learn/Getting_started_with_the_web/Веб_и_веб_стандарты": { - "modified": "2020-08-13T10:56:47.304Z", - "contributors": [ - "bogpok" - ] - }, - "Learn/Getting_started_with_the_web/Установка_базового_программного_обеспечения": { - "modified": "2020-07-16T22:34:11.219Z", - "contributors": [ - "Anonymous", - "skapesec", - "rapaich", - "Egokorok", - "gitzizou", - "boddik", - "BychekRU", - "Evgeny_Kurkin", - "Unregistered45", - "Neir" - ] - }, "Learn/HTML": { "modified": "2020-07-16T22:22:23.267Z", "contributors": [ @@ -1297,94 +688,6 @@ "Zevs" ] }, - "Learn/HTML/Forms": { - "modified": "2020-07-16T22:21:01.609Z", - "contributors": [ - "ryabv", - "shmel3", - "Zekkler", - "neizerth", - "PWasiliy", - "SeryiMysh", - "chrisdavidmills", - "GaidaiAndrii", - "bracket", - "Dmitrij" - ] - }, - "Learn/HTML/Forms/How_to_build_custom_form_widgets": { - "modified": "2020-07-16T22:21:58.194Z", - "contributors": [ - "Avrisia", - "outdever" - ] - }, - "Learn/HTML/Forms/How_to_structure_an_HTML_form": { - "modified": "2020-09-23T12:04:06.961Z", - "contributors": [ - "ryabv", - "BADNaMe-RK", - "outdever", - "Lapagirl", - "vedmibot", - "SeryiMysh" - ] - }, - "Learn/HTML/Forms/Sending_forms_through_JavaScript": { - "modified": "2020-11-20T12:05:04.254Z", - "contributors": [ - "lazyelf472" - ] - }, - "Learn/HTML/Forms/Styling_HTML_forms": { - "modified": "2020-07-16T22:21:32.230Z", - "contributors": [ - "8nabo" - ] - }, - "Learn/HTML/Forms/Валидация_формы": { - "modified": "2020-10-17T05:54:59.534Z", - "contributors": [ - "raylyanway", - "NadinHub", - "Hydrock", - "nikolai-shabalin", - "JediKnightIT", - "Ishayahu", - "LbIdarka", - "ivandoroshenko" - ] - }, - "Learn/HTML/Forms/Ваша_первая_HTML_форма": { - "modified": "2020-07-16T22:21:06.805Z", - "contributors": [ - "ryabv", - "deicer" - ] - }, - "Learn/HTML/Forms/Отправка_и_Получение_данных_формы": { - "modified": "2020-07-16T22:21:29.080Z", - "contributors": [ - "Shabu-Dabi", - "taletski", - "isetpro", - "melission", - "Kamikadze4GAME", - "ZveRuss", - "Dzmitry_K" - ] - }, - "Learn/HTML/Forms/Стандартные_виджеты_форм": { - "modified": "2020-12-02T02:50:19.864Z", - "contributors": [ - "kan0neego", - "lazyelf472", - "Галина", - "shade0602", - "outdever", - "Instantrec" - ] - }, "Learn/HTML/Multimedia_and_embedding": { "modified": "2020-12-09T01:54:57.875Z", "contributors": [ @@ -1452,68 +755,19 @@ "FeruzOripov" ] }, - "Learn/HTML/Multimedia_and_embedding/Добавление_r_graphics_to_the_Web": { - "modified": "2020-12-10T10:10:26.376Z", + "Learn/HTML/Tables": { + "modified": "2020-11-02T02:08:26.971Z", "contributors": [ - "Simkin", + "AlexUS", + "Excent163", "Khaidarov-Dinar", - "nepiravno", - "AlexChebanenko", - "shade0602", - "Why-are-you-crying", - "vedmibot" + "streetsummit", + "skapesec", + "mariag" ] }, - "Learn/HTML/Multimedia_and_embedding/Изображения_в_HTML": { - "modified": "2020-12-10T06:02:16.441Z", - "contributors": [ - "valandis", - "qafarov33", - "shade0602", - "wizardbil", - "WorpSeal", - "xHelloverx", - "Zekller", - "Corba", - "orcee", - "nowember", - "Aleksey_Esev", - "KoS57", - "InRedikaWB", - "Kouler", - "AliyevHrn", - "sowdfr", - "tav1313" - ] - }, - "Learn/HTML/Multimedia_and_embedding/Изображения_в_HTML/Проверьте_свои_знания:_Изображения_в_HTML": { - "modified": "2020-12-10T07:17:32.470Z", - "contributors": [ - "valandis" - ] - }, - "Learn/HTML/Multimedia_and_embedding/заставка_Mozilla": { - "modified": "2020-12-01T05:21:19.875Z", - "contributors": [ - "Furestry", - "RoPy73", - "Zekkler", - "AlekseyCorsello" - ] - }, - "Learn/HTML/Tables": { - "modified": "2020-11-02T02:08:26.971Z", - "contributors": [ - "AlexUS", - "Excent163", - "Khaidarov-Dinar", - "streetsummit", - "skapesec", - "mariag" - ] - }, - "Learn/HTML/Tables/Advanced": { - "modified": "2020-11-21T11:20:38.881Z", + "Learn/HTML/Tables/Advanced": { + "modified": "2020-11-21T11:20:38.881Z", "contributors": [ "RoPy73", "evstpet", @@ -1543,212 +797,6 @@ "Anonymous" ] }, - "Learn/HTML/Введение_в_HTML": { - "modified": "2020-07-16T22:22:52.967Z", - "contributors": [ - "boxa6", - "skapesec", - "VAskel", - "SedovDP", - "SergeyIrk", - "s1lver", - "alekaru", - "Denispok", - "AKonia", - "pk.prog", - "Vosik", - "Cyganov" - ] - }, - "Learn/HTML/Введение_в_HTML/Advanced_text_formatting": { - "modified": "2020-12-07T12:01:12.996Z", - "contributors": [ - "valandis", - "avdalyan", - "Ivan961", - "streetsummit", - "dkrukouski", - "boxa6", - "Bodyhealer", - "s.g.matinyan", - "Dzhabarovm", - "xap", - "Chugou9", - "slychai85", - "glebsc", - "pythonmag", - "FeruzOripov" - ] - }, - "Learn/HTML/Введение_в_HTML/Debugging_HTML": { - "modified": "2020-07-16T22:24:16.076Z", - "contributors": [ - "IlyaDanilovich", - "ekirpichyov", - "boxa6", - "krempson", - "thoughtspile", - "CruOne", - "MariyaSka" - ] - }, - "Learn/HTML/Введение_в_HTML/HTML_text_fundamentals": { - "modified": "2020-12-07T02:44:19.544Z", - "contributors": [ - "valandis", - "Vir", - "Ivan961", - "streetsummit", - "CLoud-Maker", - "exarces", - "4Realit", - "ndrxie", - "Hemonugi", - "boxa6", - "screenspace", - "a-klimantow", - "Tuman", - "nikin93" - ] - }, - "Learn/HTML/Введение_в_HTML/Marking_up_a_letter": { - "modified": "2020-12-07T13:58:43.781Z", - "contributors": [ - "valandis", - "Khaidarov-Dinar", - "shade0602", - "Janivar05", - "Darbestor", - "boxa6", - "Tuman", - "thoughtspile", - "saniaky" - ] - }, - "Learn/HTML/Введение_в_HTML/Structuring_a_page_of_content": { - "modified": "2020-12-08T12:05:46.465Z", - "contributors": [ - "valandis", - "shade0602", - "H3llaFresh", - "boxa6", - "SenkevichEvgenii", - "Dzhabarovm", - "thoughtspile" - ] - }, - "Learn/HTML/Введение_в_HTML/The_head_metadata_in_HTML": { - "modified": "2020-12-06T13:02:48.159Z", - "contributors": [ - "valandis", - "Ivan961", - "streetsummit", - "AlexKost700", - "trman", - "boxa6", - "Bapen1k", - "SoMuchEffort", - "AlexeyIoffe", - "DenisYaschenko", - "hornuglan", - "reksar", - "AkulinaShark", - "saniaky", - "SergeyIrk", - "SergeySM", - "thoughtspile", - "nikin93", - "kolanski" - ] - }, - "Learn/HTML/Введение_в_HTML/Начало_работы": { - "modified": "2020-12-06T12:25:35.513Z", - "contributors": [ - "valandis", - "avdalyan", - "mirzoevtt", - "Ivan961", - "OlehMrB", - "boxa6", - "HelpVPS", - "SedovDP", - "Smekh", - "SoMuchEffort", - "AlexeyIoffe", - "buhman1974", - "Christisrisen", - "lexachsar", - "5iv1i73", - "SelenIT", - "SergeyIrk", - "ax2mx", - "StrixG", - "nikin93", - "thoughtspile", - "katerina_ti", - "zloyKrolik", - "Startsev", - "kolanski", - "AKonia" - ] - }, - "Learn/HTML/Введение_в_HTML/Создание_гиперссылок": { - "modified": "2020-12-07T04:48:22.214Z", - "contributors": [ - "valandis", - "Ivan961", - "Aalexashka", - "Hemonugi", - "boxa6", - "Bob-chemist", - "xap", - "Klevtcov", - "reksar", - "skapesec", - "Potemkiin", - "Nerill", - "Cruseir", - "thoughtspile", - "arturparkhisenko", - "nikin93" - ] - }, - "Learn/HTML/Введение_в_HTML/Структура_документа_и_веб-сайта": { - "modified": "2020-12-07T13:21:17.650Z", - "contributors": [ - "valandis", - "ana-karp", - "Ivan961", - "sergeyshulzhenko", - "Merius", - "boxa6", - "thoughtspile", - "Potemkiin", - "beloglazof", - "IrinaShv" - ] - }, - "Learn/HTML/Рецепты": { - "modified": "2020-07-16T22:22:30.849Z", - "contributors": [ - "PaRaD0XCORP", - "Rendjey", - "AKonia" - ] - }, - "Learn/How_the_Internet_works": { - "modified": "2020-08-13T11:15:09.762Z", - "contributors": [ - "bogpok", - "S-Sukhin", - "kss555", - "Sturmtiger", - "OrkVasya", - "andrey_fm", - "TinaSuhanovskaya", - "elcamlost" - ] - }, "Learn/JavaScript": { "modified": "2020-11-05T07:04:03.926Z", "contributors": [ @@ -1801,13 +849,6 @@ "MaxYenot" ] }, - "Learn/JavaScript/Asynchronous/Таймауты_и_интервалы": { - "modified": "2020-12-09T10:32:13.319Z", - "contributors": [ - "WhoRlyCares", - "velheor24" - ] - }, "Learn/JavaScript/Building_blocks": { "modified": "2020-07-16T22:31:10.516Z", "contributors": [ @@ -1903,24 +944,8 @@ "evgeniypotseluev" ] }, - "Learn/JavaScript/Building_blocks/События": { - "modified": "2020-08-14T06:15:51.092Z", - "contributors": [ - "bogpok", - "Bb1cTpeJI", - "artamonster", - "chergav", - "kryukalexander", - "ConstantineZz", - "Zibroff", - "vOICe-xx", - "CharlyLovegood", - "slychai85", - "Paul_Yuhnovich" - ] - }, - "Learn/JavaScript/Client-side_web_APIs": { - "modified": "2020-07-16T22:32:42.215Z", + "Learn/JavaScript/Client-side_web_APIs": { + "modified": "2020-07-16T22:32:42.215Z", "contributors": [ "hisbvdis", "Fiksers", @@ -1991,646 +1016,274 @@ "paxarpp" ] }, - "Learn/JavaScript/Объекты": { - "modified": "2020-07-16T22:31:52.750Z", + "Learn/Performance": { + "modified": "2020-11-19T04:33:49.923Z", "contributors": [ - "VoropN", - "injashkin", - "KomarovSergey", - "george-04" + "nomercyso2cybersport", + "EgorKorol", + "estelle" ] }, - "Learn/JavaScript/Объекты/Adding_bouncing_balls_features": { - "modified": "2020-07-16T22:32:35.948Z", + "Learn/Performance/business_case_for_performance": { + "modified": "2020-07-16T22:40:42.596Z", "contributors": [ - "Stexe", - "slychai85" + "D.Lesnik" ] }, - "Learn/JavaScript/Объекты/Inheritance": { - "modified": "2020-10-17T04:55:20.992Z", + "Learn/Server-side": { + "modified": "2020-07-16T22:36:02.172Z", "contributors": [ - "raylyanway", - "masawik", - "wind-of", - "injashkin", - "Aparin", - "AntonySawyer", - "slychai85" + "skipp", + "Paul_Yuhnovich", + "jynweythek", + "Geloosa", + "Sumere4ny", + "DIAMONDinc", + "chrisdavidmills" ] }, - "Learn/JavaScript/Объекты/JSON": { - "modified": "2020-07-16T22:32:28.868Z", + "Learn/Server-side/Apache_Configuration_htaccess": { + "modified": "2020-11-17T06:08:27.845Z", "contributors": [ - "Tatyana-c", - "pm3512", - "wind-of", - "NikitaOstapenko1205", - "boxa6", - "Lirikklimov", - "slychai85" + "chrisdavidmills", + "kirill001" ] }, - "Learn/JavaScript/Объекты/Object-oriented_JS": { - "modified": "2020-11-28T15:15:40.063Z", + "Learn/Server-side/Django": { + "modified": "2020-07-16T22:36:35.585Z", "contributors": [ - "Tartalon", - "Viatcheslav-Malahov", - "wind-of", - "Detrimon", - "BadLame", - "ConstantineZz", - "ellegre", - "injashkin", - "NooNoo1337", - "Roman-Halenko", - "sergeomak", - "Elena_Petrenko", - "uandrew", - "slychai85", - "superpuper32", - "GennadyGlushenkov" + "exelay", + "OlegStanKoptev", + "gutgutter", + "Sumere4ny", + "DIAMONDinc", + "alexfromvl", + "DenGodunov" ] }, - "Learn/JavaScript/Объекты/Object_building_practice": { - "modified": "2020-07-16T22:32:32.476Z", + "Learn/Server-side/Django/Admin_site": { + "modified": "2020-07-16T22:37:05.756Z", "contributors": [ - "Slowball", - "benzin_kanister", - "ellegre", - "boxa6", - "slychai85" + "Palladiumm", + "aflyka", + "dimaviolinist", + "askras", + "aimtbr", + "Costonied", + "Keiichii", + "Santa388", + "DIAMONDinc", + "yuriy65", + "Denizz" ] }, - "Learn/JavaScript/Объекты/Object_prototypes": { - "modified": "2020-07-16T22:32:22.353Z", + "Learn/Server-side/Django/Forms": { + "modified": "2020-10-10T14:48:33.294Z", "contributors": [ - "wind-of", - "sahmildzhakeev", - "injashkin", - "Aparin", - "kplatova", - "NooNoo1337", - "VaselisaS", - "slychai85", - "arnoldovich", - "AndreySushentsov" + "hustonCun", + "maksam07", + "Petr28", + "Vanvala", + "theomoore", + "ShuaChee", + "DIAMONDinc", + "Seele22", + "al+chernin", + "alexfromvl" ] }, - "Learn/JavaScript/Объекты/Основы": { - "modified": "2020-11-25T08:55:51.454Z", + "Learn/Server-side/Django/Generic_views": { + "modified": "2020-07-16T22:37:18.976Z", "contributors": [ - "Tartalon", - "alexpikuta", - "wind-of", - "jynweythek", - "iwanttobealight", - "ConstantineZz", - "genesky", - "boxa6", - "injashkin", - "NooNoo1337", - "Dusmatoff", - "KoS57", - "slychai85", - "Jony_e", - "slowpokex", - "DoRightt", - "superpuper32" + "theomoore", + "askras", + "Azwartin", + "expo-lux", + "Seele22", + "DIAMONDinc", + "Keiichii", + "al+chernin" ] }, - "Learn/JavaScript/Первые_шаги": { - "modified": "2020-07-16T22:29:55.165Z", + "Learn/Server-side/Django/Home_page": { + "modified": "2020-07-16T22:37:11.505Z", "contributors": [ - "chrisdavidmills", - "boxa6", - "maxno62", - "Jertej", - "pepsikat", - "alekaru", - "a13xk", - "campside", - "werreour", - "tagir000" + "askras", + "Costonied", + "julius425", + "DIAMONDinc", + "Keiichii", + "Santa388", + "al+chernin" ] }, - "Learn/JavaScript/Первые_шаги/A_first_splash": { - "modified": "2020-09-18T19:59:13.793Z", + "Learn/Server-side/Django/Models": { + "modified": "2020-09-21T15:09:16.230Z", "contributors": [ - "aashch1", - "SphinxKnight", - "sirartemis", - "TurtleOld", - "wanvo", - "Novo", - "Shadow86", - "slychai85", - "TaizoGem", - "Rodionoff", - "st4nislava", - "AndrewSamofalov", - "warsan", - "SergeySM", - "lipav", - "InternetShelteredBoy", - "HaukIce", - "maicom64", - "fragmentbyte", - "kirabt123", - "Segyn", - "FIJN", - "alekaru" + "DrPeryCox", + "ignusin", + "egorbir", + "Palladiumm", + "nuwak", + "alexod", + "Mainstand", + "to-Sky", + "Azwartin", + "bayborodin", + "Keiichii", + "DIAMONDinc", + "carbonec" ] }, - "Learn/JavaScript/Первые_шаги/Arrays": { - "modified": "2020-07-16T22:30:57.680Z", + "Learn/Server-side/Django/Testing": { + "modified": "2020-07-16T22:37:38.879Z", "contributors": [ - "SphinxKnight", - "Immdevrov", - "chergav", - "ConstantineZz", - "maksolimp", - "AliyevHrn", - "slychai85", - "10486", - "samofand", - "ArtyomIv" + "Breadp4ck", + "theomoore", + "DIAMONDinc", + "requiemofthesouls", + "Azwartin", + "Seele22", + "al+chernin" ] }, - "Learn/JavaScript/Первые_шаги/Math": { - "modified": "2020-07-16T22:30:28.347Z", + "Learn/Server-side/Django/Tutorial_local_library_website": { + "modified": "2020-07-16T22:36:50.376Z", "contributors": [ - "podocenov", - "SphinxKnight", - "bsanzhiev", - "xxphantom", - "EugeneSvetlakov", - "ConstantineZz", - "galaxy3user", - "BerezkinBerezkin", - "y2k", - "Froris", - "AndrewSamofalov", - "FIJN" + "mmbl", + "hexeh", + "FeruzOripov", + "Flygrounder" ] }, - "Learn/JavaScript/Первые_шаги/Useful_string_methods": { - "modified": "2020-12-02T10:07:41.183Z", + "Learn/Server-side/Django/development_environment": { + "modified": "2020-07-16T22:36:46.788Z", "contributors": [ - "nyood", - "SphinxKnight", - "Ivan961", - "Anonymous", - "RedKvothe", - "ConstantineZz", - "boxa6", - "chrisdavidmills", - "AsVit", - "AliyevHrn", - "slychai85", - "MariyaSka", - "samofand", - "AndrewSamofalov" - ] - }, - "Learn/JavaScript/Первые_шаги/Variables": { - "modified": "2020-07-23T12:20:59.443Z", - "contributors": [ - "k0w4lk", - "SphinxKnight", - "goyalion17", - "ConstantineZz", - "hasiev-elchin", - "Froris", - "AliyevHrn", - "slychai85", - "AndrewSamofalov", - "laion220995", - "HaukIce" + "maksam07", + "NickSalander", + "Mainstand", + "hexeh", + "PandaBalu", + "mcm8mcm", + "hbble", + "AgeratoS", + "vakhet", + "Elkis", + "MailfTrue", + "hellpirat" ] }, - "Learn/JavaScript/Первые_шаги/What_is_JavaScript": { - "modified": "2020-07-16T22:30:12.291Z", + "Learn/Server-side/Django/django_assessment_blog": { + "modified": "2020-07-16T22:37:49.218Z", "contributors": [ - "hisbvdis", - "SphinxKnight", - "Avdros", - "ana-karp", - "EugeneSvetlakov", - "goyalion17", - "AlexanderSpivak", - "KrasPvP", - "Kirill20123", - "chrisdavidmills", - "DmitryYev", - "Sherxan", - "DraXXX", - "s0nly", - "InternetShelteredBoy", - "Jertej", - "fragmentbyte", - "YanaGord", - "pathliving", - "perevalova", - "dkireev", - "susov", - "pust0ta", - "Badpioneer", - "MrCopying", - "DRuslan", - "Mikhail_Eltekov", - "alekaru", - "lawyer12" + "DIAMONDinc" ] }, - "Learn/JavaScript/Первые_шаги/Создатель_глуых_историй": { - "modified": "2020-11-24T09:51:12.035Z", + "Learn/Server-side/Django/skeleton_website": { + "modified": "2020-07-16T22:36:54.229Z", "contributors": [ - "tetragidrohlorid", - "SphinxKnight", - "ikzsl", - "AntonySawyer", - "ConstantineZz", - "vasja-slvm", - "AliyevHrn", - "slychai85", - "epidersis", - "DonVeds" + "Bogomazof", + "Palladiumm", + "NickSalander", + "sepulenie", + "EfimovSergeiV", + "aPenkov", + "dimaviolinist", + "ArthurKud", + "Costonied", + "DIAMONDinc", + "Flygrounder" ] }, - "Learn/JavaScript/Первые_шаги/Строки": { - "modified": "2020-09-30T14:12:03.725Z", + "Learn/Server-side/Django/web_application_security": { + "modified": "2020-07-16T22:37:46.879Z", "contributors": [ - "artsimon555", - "SphinxKnight", - "maxbo8", - "ConstantineZz", - "boxa6", - "galaxy3user", - "CharlyLovegood", - "mironovartem" + "NataliaNagaeva", + "Azwartin" ] }, - "Learn/JavaScript/Первые_шаги/Что_пошло_не_так": { - "modified": "2020-07-16T22:30:36.453Z", + "Learn/Server-side/Express_Nodejs": { + "modified": "2020-07-16T22:37:55.363Z", "contributors": [ - "SphinxKnight", - "Immdevrov", - "chrisdavidmills", - "SedovDP", - "ArturWer", - "hasiev-elchin", - "Froris", - "AliyevHrn", - "MariyaSka", - "AndrewSamofalov", - "SergeySM", - "nikitapoly" + "Aparin", + "reksar", + "Paul_Yuhnovich", + "daviys", + "Sumere4ny" ] }, - "Learn/Pages_sites_servers_and_search_engines": { - "modified": "2020-09-27T11:42:16.769Z", + "Learn/Server-side/Express_Nodejs/Displaying_data": { + "modified": "2020-07-16T22:38:31.314Z", "contributors": [ - "sailonely", - "PinkDeer", - "beloglazof", - "OrkVasya", - "Kipelych", - "TinaSuhanovskaya", - "Hasyama", - "elcamlost" + "mikemoll", + "alxatr", + "MariyaSka" ] }, - "Learn/Performance": { - "modified": "2020-11-19T04:33:49.923Z", + "Learn/Server-side/Express_Nodejs/Displaying_data/Author_list_page": { + "modified": "2020-07-16T22:38:38.119Z", "contributors": [ - "nomercyso2cybersport", - "EgorKorol", - "estelle" + "alxatr" ] }, - "Learn/Performance/business_case_for_performance": { - "modified": "2020-07-16T22:40:42.596Z", + "Learn/Server-side/Express_Nodejs/Displaying_data/BookInstance_list_page": { + "modified": "2020-07-16T22:38:36.909Z", "contributors": [ - "D.Lesnik" + "alxatr" ] }, - "Learn/Server-side": { - "modified": "2020-07-16T22:36:02.172Z", + "Learn/Server-side/Express_Nodejs/Displaying_data/Book_list_page": { + "modified": "2020-07-16T22:38:36.242Z", "contributors": [ - "skipp", - "Paul_Yuhnovich", - "jynweythek", - "Geloosa", - "Sumere4ny", - "DIAMONDinc", - "chrisdavidmills" + "alxatr", + "MariyaSka" ] }, - "Learn/Server-side/Apache_Configuration_htaccess": { - "modified": "2020-11-17T06:08:27.845Z", + "Learn/Server-side/Express_Nodejs/Displaying_data/Date_formatting_using_moment": { + "modified": "2020-07-16T22:38:37.510Z", "contributors": [ - "chrisdavidmills", - "kirill001" + "alxatr", + "MariyaSka" ] }, - "Learn/Server-side/Django": { - "modified": "2020-07-16T22:36:35.585Z", + "Learn/Server-side/Express_Nodejs/Displaying_data/Genre_detail_page": { + "modified": "2020-07-16T22:38:38.667Z", "contributors": [ - "exelay", - "OlegStanKoptev", - "gutgutter", - "Sumere4ny", - "DIAMONDinc", - "alexfromvl", - "DenGodunov" + "alxatr" ] }, - "Learn/Server-side/Django/Admin_site": { - "modified": "2020-07-16T22:37:05.756Z", + "Learn/Server-side/Express_Nodejs/Displaying_data/Home_page": { + "modified": "2020-07-16T22:38:35.549Z", "contributors": [ - "Palladiumm", - "aflyka", - "dimaviolinist", - "askras", - "aimtbr", - "Costonied", - "Keiichii", - "Santa388", - "DIAMONDinc", - "yuriy65", - "Denizz" + "hahlek", + "blok1118", + "alxatr" ] }, - "Learn/Server-side/Django/Forms": { - "modified": "2020-10-10T14:48:33.294Z", + "Learn/Server-side/Express_Nodejs/Displaying_data/LocalLibrary_base_template": { + "modified": "2020-12-13T05:36:31.182Z", "contributors": [ - "hustonCun", - "maksam07", - "Petr28", - "Vanvala", - "theomoore", - "ShuaChee", - "DIAMONDinc", - "Seele22", - "al+chernin", - "alexfromvl" + "kozakartem", + "hahlek", + "alxatr", + "MariyaSka" ] }, - "Learn/Server-side/Django/Generic_views": { - "modified": "2020-07-16T22:37:18.976Z", + "Learn/Server-side/Express_Nodejs/Displaying_data/Template_primer": { + "modified": "2020-07-16T22:38:34.518Z", "contributors": [ - "theomoore", - "askras", - "Azwartin", - "expo-lux", - "Seele22", - "DIAMONDinc", - "Keiichii", - "al+chernin" + "alxatr" ] }, - "Learn/Server-side/Django/Home_page": { - "modified": "2020-07-16T22:37:11.505Z", + "Learn/Server-side/Express_Nodejs/Displaying_data/flow_control_using_async": { + "modified": "2020-07-16T22:38:33.391Z", "contributors": [ - "askras", - "Costonied", - "julius425", - "DIAMONDinc", - "Keiichii", - "Santa388", - "al+chernin" + "mikemoll", + "alxatr" ] }, - "Learn/Server-side/Django/Models": { - "modified": "2020-09-21T15:09:16.230Z", - "contributors": [ - "DrPeryCox", - "ignusin", - "egorbir", - "Palladiumm", - "nuwak", - "alexod", - "Mainstand", - "to-Sky", - "Azwartin", - "bayborodin", - "Keiichii", - "DIAMONDinc", - "carbonec" - ] - }, - "Learn/Server-side/Django/Testing": { - "modified": "2020-07-16T22:37:38.879Z", - "contributors": [ - "Breadp4ck", - "theomoore", - "DIAMONDinc", - "requiemofthesouls", - "Azwartin", - "Seele22", - "al+chernin" - ] - }, - "Learn/Server-side/Django/Tutorial_local_library_website": { - "modified": "2020-07-16T22:36:50.376Z", - "contributors": [ - "mmbl", - "hexeh", - "FeruzOripov", - "Flygrounder" - ] - }, - "Learn/Server-side/Django/development_environment": { - "modified": "2020-07-16T22:36:46.788Z", - "contributors": [ - "maksam07", - "NickSalander", - "Mainstand", - "hexeh", - "PandaBalu", - "mcm8mcm", - "hbble", - "AgeratoS", - "vakhet", - "Elkis", - "MailfTrue", - "hellpirat" - ] - }, - "Learn/Server-side/Django/django_assessment_blog": { - "modified": "2020-07-16T22:37:49.218Z", - "contributors": [ - "DIAMONDinc" - ] - }, - "Learn/Server-side/Django/skeleton_website": { - "modified": "2020-07-16T22:36:54.229Z", - "contributors": [ - "Bogomazof", - "Palladiumm", - "NickSalander", - "sepulenie", - "EfimovSergeiV", - "aPenkov", - "dimaviolinist", - "ArthurKud", - "Costonied", - "DIAMONDinc", - "Flygrounder" - ] - }, - "Learn/Server-side/Django/web_application_security": { - "modified": "2020-07-16T22:37:46.879Z", - "contributors": [ - "NataliaNagaeva", - "Azwartin" - ] - }, - "Learn/Server-side/Django/Аутентификация": { - "modified": "2020-10-09T09:34:14.083Z", - "contributors": [ - "hustonCun", - "i0tool5", - "Andrey.Chichak", - "SYSchel", - "Maksimka101", - "ivkainova", - "VyacheslavLobanov", - "DIAMONDinc", - "warsan", - "Flygrounder", - "kivaschenko", - "MariyaSka", - "zet694", - "al+chernin" - ] - }, - "Learn/Server-side/Django/Введение": { - "modified": "2020-12-09T11:58:11.401Z", - "contributors": [ - "mantisSp", - "malikovboo", - "exelay", - "NickSalander", - "xc0derx", - "azhlbn", - "NeshkoO", - "kivaschenko", - "hbble", - "Danchek", - "n05tr0m0", - "Limpar", - "vakhet", - "kilovoltov", - "AnnaSamonenko", - "DIAMONDinc" - ] - }, - "Learn/Server-side/Django/Разворачивание": { - "modified": "2020-07-16T22:37:42.545Z", - "contributors": [ - "velocanica", - "Vanvala", - "Nunyapa", - "DIAMONDinc", - "kitasS", - "1Gregory", - "kivaschenko", - "al+chernin" - ] - }, - "Learn/Server-side/Django/Сессии": { - "modified": "2020-07-16T22:37:27.912Z", - "contributors": [ - "egorguscha", - "timur-orudzhov", - "askras", - "al+chernin" - ] - }, - "Learn/Server-side/Express_Nodejs": { - "modified": "2020-07-16T22:37:55.363Z", - "contributors": [ - "Aparin", - "reksar", - "Paul_Yuhnovich", - "daviys", - "Sumere4ny" - ] - }, - "Learn/Server-side/Express_Nodejs/Displaying_data": { - "modified": "2020-07-16T22:38:31.314Z", - "contributors": [ - "mikemoll", - "alxatr", - "MariyaSka" - ] - }, - "Learn/Server-side/Express_Nodejs/Displaying_data/Author_list_page": { - "modified": "2020-07-16T22:38:38.119Z", - "contributors": [ - "alxatr" - ] - }, - "Learn/Server-side/Express_Nodejs/Displaying_data/BookInstance_list_page": { - "modified": "2020-07-16T22:38:36.909Z", - "contributors": [ - "alxatr" - ] - }, - "Learn/Server-side/Express_Nodejs/Displaying_data/Book_list_page": { - "modified": "2020-07-16T22:38:36.242Z", - "contributors": [ - "alxatr", - "MariyaSka" - ] - }, - "Learn/Server-side/Express_Nodejs/Displaying_data/Date_formatting_using_moment": { - "modified": "2020-07-16T22:38:37.510Z", - "contributors": [ - "alxatr", - "MariyaSka" - ] - }, - "Learn/Server-side/Express_Nodejs/Displaying_data/Genre_detail_page": { - "modified": "2020-07-16T22:38:38.667Z", - "contributors": [ - "alxatr" - ] - }, - "Learn/Server-side/Express_Nodejs/Displaying_data/Home_page": { - "modified": "2020-07-16T22:38:35.549Z", - "contributors": [ - "hahlek", - "blok1118", - "alxatr" - ] - }, - "Learn/Server-side/Express_Nodejs/Displaying_data/LocalLibrary_base_template": { - "modified": "2020-12-13T05:36:31.182Z", - "contributors": [ - "kozakartem", - "hahlek", - "alxatr", - "MariyaSka" - ] - }, - "Learn/Server-side/Express_Nodejs/Displaying_data/Template_primer": { - "modified": "2020-07-16T22:38:34.518Z", - "contributors": [ - "alxatr" - ] - }, - "Learn/Server-side/Express_Nodejs/Displaying_data/flow_control_using_async": { - "modified": "2020-07-16T22:38:33.391Z", - "contributors": [ - "mikemoll", - "alxatr" - ] - }, - "Learn/Server-side/Express_Nodejs/Introduction": { - "modified": "2020-10-28T17:14:05.095Z", + "Learn/Server-side/Express_Nodejs/Introduction": { + "modified": "2020-10-28T17:14:05.095Z", "contributors": [ "Craiqser", "OlegKolesnikoff", @@ -2721,13 +1374,6 @@ "daviys" ] }, - "Learn/Server-side/Express_Nodejs/Учебник_сайт_local_library": { - "modified": "2020-07-16T22:38:16.847Z", - "contributors": [ - "maxno62", - "daviys" - ] - }, "Learn/Server-side/First_steps": { "modified": "2020-07-16T22:36:10.688Z", "contributors": [ @@ -2791,15 +1437,6 @@ "reksar" ] }, - "Learn/Server-side/First_steps/Веб_Безопасность": { - "modified": "2020-12-05T11:58:05.010Z", - "contributors": [ - "valandis", - "ruslanjumagaliev", - "maxlu86", - "tymino" - ] - }, "Learn/Server-side/Node_server_without_framework": { "modified": "2020-07-16T22:36:06.418Z", "contributors": [ @@ -2842,169 +1479,23 @@ "slayermass" ] }, - "Learn/Tools_and_testing/ГитХаб": { - "modified": "2020-09-30T19:47:51.138Z", - "contributors": [ - "TXCloud", - "PPGAkril", - "garanzha.s.a" - ] - }, - "Learn/Tools_and_testing/Фронтенд_JavaScript_фреймворки": { - "modified": "2020-07-16T22:39:33.460Z", + "MDN": { + "modified": "2020-02-19T18:23:03.586Z", "contributors": [ - "Anonymous" + "jswisher", + "SphinxKnight", + "wbamberg", + "Jeremie", + "m.onyshchuk", + "BychekRU", + "Mingun", + "teoli", + "uleming", + "Sheppy" ] }, - "Learn/Tools_and_testing/Фронтенд_JavaScript_фреймворки/React_getting_started": { - "modified": "2020-07-16T22:39:39.236Z", - "contributors": [ - "ckomop0x" - ] - }, - "Learn/Understanding_URLs": { - "modified": "2020-07-16T22:35:30.373Z", - "contributors": [ - "Excent163", - "gadjetron", - "vladislavukhov", - "lerniri" - ] - }, - "Learn/Understanding_domain_names": { - "modified": "2020-07-16T22:35:44.834Z", - "contributors": [ - "StasBalia", - "sergeyshulzhenko", - "CLoud-Maker", - "thecodecreator", - "Glebowsky", - "elcamlost", - "makoviychuk", - "vladislavukhov" - ] - }, - "Learn/Understanding_links_on_the_web": { - "modified": "2020-11-25T08:11:30.000Z", - "contributors": [ - "NikeSmitt", - "Aalexashka", - "vladislavukhov", - "lerniri" - ] - }, - "Learn/Доступность": { - "modified": "2020-07-16T22:40:00.507Z", - "contributors": [ - "baradusov", - "pepelsbey", - "niktariy", - "IgorPuchkov2003", - "buhman1974", - "Pristavka", - "fasnet", - "iksah", - "Paul_Yuhnovich" - ] - }, - "Learn/Доступность/Accessibility_troubleshooting": { - "modified": "2020-07-16T22:40:36.878Z", - "contributors": [ - "boxa6" - ] - }, - "Learn/Доступность/CSS_and_JavaScript": { - "modified": "2020-07-16T22:40:19.160Z", - "contributors": [ - "Madihander", - "boxa6" - ] - }, - "Learn/Доступность/HTML": { - "modified": "2020-07-16T22:40:14.761Z", - "contributors": [ - "TurtleOld", - "baradusov", - "niktariy", - "boxa6" - ] - }, - "Learn/Доступность/Mobile": { - "modified": "2020-07-16T22:40:32.502Z", - "contributors": [ - "boxa6" - ] - }, - "Learn/Доступность/Multimedia": { - "modified": "2020-07-16T22:40:27.927Z", - "contributors": [ - "boxa6" - ] - }, - "Learn/Доступность/WAI-ARIA_basics": { - "modified": "2020-07-16T22:40:23.911Z", - "contributors": [ - "streloc84", - "boxa6" - ] - }, - "Learn/Доступность/What_is_accessibility": { - "modified": "2020-07-16T22:40:06.747Z", - "contributors": [ - "niktariy", - "Frisle", - "Pristavka" - ] - }, - "Learn/Как_сделать_вклад": { - "modified": "2020-07-16T22:33:46.276Z", - "contributors": [ - "SphinxKnight", - "KTatyana", - "BychekRU", - "MuradAz" - ] - }, - "Learn/Фронтенд_разработчик": { - "modified": "2020-10-26T19:26:16.101Z", - "contributors": [ - "Villian79", - "bogpok", - "Menma" - ] - }, - "Learn/Что_такое_веб_сервер": { - "modified": "2020-07-16T22:35:32.096Z", - "contributors": [ - "joshua1955", - "Dozorengel", - "beloglazof", - "Geloosa", - "erelena", - "Sumere4ny", - "talgautb", - "Xryak", - "uralbash", - "elcamlost" - ] - }, - "MDN": { - "modified": "2020-02-19T18:23:03.586Z", - "contributors": [ - "jswisher", - "SphinxKnight", - "wbamberg", - "Jeremie", - "m.onyshchuk", - "BychekRU", - "Mingun", - "teoli", - "uleming", - "Sheppy" - ] - }, - "MDN/About": { - "modified": "2020-09-09T11:16:44.121Z", + "MDN/About": { + "modified": "2020-09-09T11:16:44.121Z", "contributors": [ "andrygreen777", "S-inTheory", @@ -3040,24 +1531,6 @@ "Mars" ] }, - "MDN/Contribute/Creating_and_editing_pages": { - "modified": "2020-04-10T13:36:06.534Z", - "contributors": [ - "karifan8767", - "wbamberg", - "djigach", - "KaroHovhannisyan", - "Ferguse", - "vaser321", - "TemmyR", - "Servik17", - "vislogurov", - "Chronosms", - "BychekRU", - "SashaSh", - "Spiker" - ] - }, "MDN/Contribute/Feedback": { "modified": "2020-09-30T17:52:35.205Z", "contributors": [ @@ -3115,50 +1588,6 @@ "irodger" ] }, - "MDN/Contribute/Howto/Create_an_MDN_account": { - "modified": "2020-08-25T20:34:15.669Z", - "contributors": [ - "duduindo", - "sayfullayevabdixalil", - "stefantsova", - "svyatoslavlp", - "Fredoss", - "bayashka123", - "seliverstova", - "wbamberg", - "erfari", - "takto", - "yambergaa", - "CaptainMorgan", - "Dimetriu", - "Katya_Kosuga", - "Aleksandr2101" - ] - }, - "MDN/Contribute/Howto/Do_a_technical_review": { - "modified": "2020-01-04T22:10:59.231Z", - "contributors": [ - "Ivan961", - "shmel3", - "wbamberg", - "StyleToken", - "Devengineer", - "Aleksandr2101" - ] - }, - "MDN/Contribute/Howto/Do_an_editorial_review": { - "modified": "2019-10-02T16:12:23.523Z", - "contributors": [ - "wbamberg", - "ivanson", - "Jessai", - "ilyar", - "SnejUgal", - "AlexeyOm", - "L18-666B", - "Devengineer" - ] - }, "MDN/Contribute/Howto/Report_a_problem": { "modified": "2020-10-30T08:02:44.010Z", "contributors": [ @@ -3178,311 +1607,49 @@ "MuradAz" ] }, - "MDN/Contribute/Howto/Добавить_или_обновить_данные_о_браузерной_совместимости": { - "modified": "2019-07-13T14:51:28.876Z", - "contributors": [ - "fuggy" - ] - }, - "MDN/Contribute/Howto/Как_оптимизировать_страницы": { - "modified": "2019-03-23T22:33:34.588Z", + "MDN/Guidelines": { + "modified": "2020-11-02T10:17:56.940Z", "contributors": [ - "wbamberg", - "che7ovek", - "Glebowsky" + "ksam" ] }, - "MDN/Contribute/Howto/Метки_JavaScript_страниц": { - "modified": "2019-01-17T02:41:09.446Z", + "MDN/Structures": { + "modified": "2020-09-30T12:57:22.613Z", "contributors": [ + "chrisdavidmills", "wbamberg", - "dyaroman" + "warsan", + "BychekRU", + "jswisher" ] }, - "MDN/Contribute/Howto/Создай_интерактивное_упражнение_для_помощи_в_изучении_веба": { - "modified": "2019-03-18T20:31:43.828Z", + "MDN/Structures/Live_samples": { + "modified": "2020-09-30T12:57:23.093Z", "contributors": [ - "MuradAz" + "chrisdavidmills" ] }, - "MDN/Contribute/Процессы": { - "modified": "2019-01-17T00:00:52.853Z", + "MDN/Tools": { + "modified": "2020-09-30T16:54:08.506Z", "contributors": [ + "chrisdavidmills", "wbamberg", + "pk.prog", "warsan" ] }, - "MDN/Editor": { - "modified": "2020-09-30T15:43:33.251Z", + "Mozilla": { + "modified": "2019-03-23T23:36:49.497Z", "contributors": [ - "chrisdavidmills", - "andresvara88", - "Vyprichenko", - "Ivan961", - "wbamberg", - "Luboshenko", - "T1mL3arn", - "warsan", - "anastasiya-podolyak", - "BychekRU", - "sputnik1986", - "Grigorjjjmolokov81", - "KrishnaKevalam", - "Slang74" + "Shychara", + "uleming", + "Vladimir_Perkun", + "ethertank", + "ziyunfei" ] }, - "MDN/Editor/Basics": { - "modified": "2020-09-30T15:43:33.440Z", - "contributors": [ - "chrisdavidmills", - "aleksandrpnshkn", - "wbamberg", - "ValeriiBoiko", - "djigach", - "warsan", - "JavaS" - ] - }, - "MDN/Editor/Basics/Page_controls": { - "modified": "2020-09-30T15:43:33.388Z", - "contributors": [ - "chrisdavidmills", - "aleksandrpnshkn" - ] - }, - "MDN/Editor/Basics/Toolbar": { - "modified": "2020-09-30T15:43:33.855Z", - "contributors": [ - "chrisdavidmills", - "aleksandrpnshkn" - ] - }, - "MDN/Editor/Source_mode": { - "modified": "2020-09-30T15:43:35.463Z", - "contributors": [ - "chrisdavidmills", - "Ivan961" - ] - }, - "MDN/Editor/Tables": { - "modified": "2020-09-30T15:43:35.242Z", - "contributors": [ - "chrisdavidmills", - "Ivan961" - ] - }, - "MDN/Editor/Горячие_клавиши": { - "modified": "2020-09-30T15:43:34.335Z", - "contributors": [ - "chrisdavidmills", - "Ivan961" - ] - }, - "MDN/Editor/Картинки": { - "modified": "2020-09-30T15:43:34.113Z", - "contributors": [ - "chrisdavidmills", - "Avdros", - "wbamberg", - "pk.prog" - ] - }, - "MDN/Editor/Перенаправление": { - "modified": "2020-09-30T15:43:34.816Z", - "contributors": [ - "chrisdavidmills", - "Ivan961" - ] - }, - "MDN/Editor/Синтаксические_выделения": { - "modified": "2020-09-30T15:43:35.025Z", - "contributors": [ - "chrisdavidmills", - "Ivan961" - ] - }, - "MDN/Editor/Ссылки": { - "modified": "2020-09-30T15:43:34.675Z", - "contributors": [ - "chrisdavidmills", - "Ivan961" - ] - }, - "MDN/Guidelines": { - "modified": "2020-11-02T10:17:56.940Z", - "contributors": [ - "ksam" - ] - }, - "MDN/Kuma": { - "modified": "2019-09-09T15:51:19.091Z", - "contributors": [ - "SphinxKnight", - "wbamberg", - "BychekRU", - "FRiMN" - ] - }, - "MDN/Kuma/Troubleshooting_KumaScript_errors": { - "modified": "2019-07-08T19:30:04.842Z", - "contributors": [ - "fuggy", - "wbamberg", - "MariyaSka", - "cpigat" - ] - }, - "MDN/Structures": { - "modified": "2020-09-30T12:57:22.613Z", - "contributors": [ - "chrisdavidmills", - "wbamberg", - "warsan", - "BychekRU", - "jswisher" - ] - }, - "MDN/Structures/Live_samples": { - "modified": "2020-09-30T12:57:23.093Z", - "contributors": [ - "chrisdavidmills" - ] - }, - "MDN/Structures/Live_samples/Simple_live_sample_demo": { - "modified": "2020-09-30T12:57:23.196Z", - "contributors": [ - "chrisdavidmills", - "fuggy" - ] - }, - "MDN/Tools": { - "modified": "2020-09-30T16:54:08.506Z", - "contributors": [ - "chrisdavidmills", - "wbamberg", - "pk.prog", - "warsan" - ] - }, - "MDN/Tools/Page_watching": { - "modified": "2020-09-30T16:54:08.639Z", - "contributors": [ - "chrisdavidmills", - "wbamberg", - "warsan", - "Jasum", - "Liubava77", - "lavr1986uxa" - ] - }, - "MDN/Tools/URL-suffix": { - "modified": "2020-11-05T06:23:08.678Z", - "contributors": [ - "ksam" - ] - }, - "MDN/User_guide": { - "modified": "2019-01-16T19:44:47.259Z", - "contributors": [ - "wbamberg", - "Mingun" - ] - }, - "MDN/User_guide/Advanced_search": { - "modified": "2019-03-23T23:07:10.929Z", - "contributors": [ - "wbamberg", - "Mingun" - ] - }, - "MDN/User_guide/Deleting_pages": { - "modified": "2019-01-16T19:44:31.713Z", - "contributors": [ - "wbamberg", - "Mingun" - ] - }, - "MDN/User_guide/Feeds": { - "modified": "2019-03-23T23:07:09.701Z", - "contributors": [ - "wbamberg", - "Mingun" - ] - }, - "MDN/User_guide/Linking_to_MDN": { - "modified": "2019-03-23T23:07:15.827Z", - "contributors": [ - "wbamberg", - "Mingun" - ] - }, - "MDN/Сообщество": { - "modified": "2019-09-11T08:01:10.710Z", - "contributors": [ - "SphinxKnight", - "wbamberg", - "yambergaa", - "BychekRU", - "bachileha", - "Palatovskaya" - ] - }, - "MDN/Сообщество/Conversations": { - "modified": "2020-10-09T08:02:44.061Z", - "contributors": [ - "hustonCun", - "EpicStep", - "SuperSurok", - "boxa6" - ] - }, - "MDN/Сообщество/Whats_happening": { - "modified": "2019-06-26T18:29:06.368Z", - "contributors": [ - "fuggy", - "wbamberg", - "pathliving", - "talgautb" - ] - }, - "MDN/Сообщество/Working_in_community": { - "modified": "2020-02-19T18:49:34.950Z", - "contributors": [ - "jswisher", - "boxa6", - "bsergey", - "KarryPro" - ] - }, - "MDN_at_ten": { - "modified": "2019-03-23T22:49:58.338Z", - "contributors": [ - "dimakozakov", - "acidicMercury8", - "Myshov", - "anmo" - ] - }, - "MDN_at_ten/Contributing_to_MDN": { - "modified": "2020-10-30T09:21:05.942Z", - "contributors": [ - "ksam", - "jswisher", - "Valenchak" - ] - }, - "Mozilla": { - "modified": "2019-03-23T23:36:49.497Z", - "contributors": [ - "Shychara", - "uleming", - "Vladimir_Perkun", - "ethertank", - "ziyunfei" - ] - }, - "Mozilla/Add-ons": { - "modified": "2019-09-11T08:19:34.402Z", + "Mozilla/Add-ons": { + "modified": "2019-09-11T08:19:34.402Z", "contributors": [ "SphinxKnight", "arturparkhisenko", @@ -3818,26 +1985,6 @@ "LumenGNU" ] }, - "Mozilla/Add-ons/WebExtensions/Интернационализация": { - "modified": "2020-06-26T11:58:33.746Z", - "contributors": [ - "pm3512" - ] - }, - "Mozilla/Add-ons/WebExtensions/Перевод": { - "modified": "2019-03-29T04:27:38.888Z", - "contributors": [ - "karr1d" - ] - }, - "Mozilla/Add-ons/WebExtensions/модификация_веб_страницы": { - "modified": "2020-08-27T17:26:46.914Z", - "contributors": [ - "sergserg213", - "Vorteri", - "klavatron" - ] - }, "Mozilla/Developer_guide": { "modified": "2020-03-02T16:15:06.703Z", "contributors": [ @@ -3871,16 +2018,6 @@ "schufner" ] }, - "Mozilla/Developer_guide/Исходный_код": { - "modified": "2019-03-23T23:33:14.609Z", - "contributors": [ - "Dr.Kub", - "chrisdavidmills", - "elityty_777", - "BladeMight", - "andrew.boyarshin" - ] - }, "Mozilla/Firefox": { "modified": "2020-01-18T14:11:55.644Z", "contributors": [ @@ -4086,18 +2223,6 @@ "InoY" ] }, - "Plugins/План": { - "modified": "2019-08-01T03:21:45.901Z", - "contributors": [ - "art-gur" - ] - }, - "Toolkit_API": { - "modified": "2019-01-16T14:44:25.079Z", - "contributors": [ - "bill.gates" - ] - }, "Tools": { "modified": "2020-12-14T08:21:24.659Z", "contributors": [ @@ -4139,21 +2264,8 @@ "99peso" ] }, - "Tools/Add-ons": { - "modified": "2020-07-16T22:36:23.822Z", - "contributors": [ - "wbamberg" - ] - }, - "Tools/Add-ons/DOM_Inspector": { - "modified": "2020-07-16T22:36:24.834Z", - "contributors": [ - "wbamberg", - "kvantor" - ] - }, - "Tools/Application": { - "modified": "2020-10-26T07:59:58.970Z", + "Tools/Application": { + "modified": "2020-10-26T07:59:58.970Z", "contributors": [ "ksam", "pofiguwse" @@ -4175,20 +2287,6 @@ "sidgan" ] }, - "Tools/Debugger/How_to/Отладка_кода_внутри_eval": { - "modified": "2020-07-16T22:35:14.575Z", - "contributors": [ - "wbamberg", - "pashutk" - ] - }, - "Tools/Debugger/How_to/Работа_с_минифицированным_кодом": { - "modified": "2020-07-16T22:35:14.187Z", - "contributors": [ - "wbamberg", - "pashutk" - ] - }, "Tools/Debugger/Keyboard_shortcuts": { "modified": "2020-10-23T06:26:33.563Z", "contributors": [ @@ -4339,21 +2437,6 @@ "Aleksej" ] }, - "Tools/Page_Inspector/How_to/Otkrytie_Inspektora": { - "modified": "2020-07-16T22:34:33.193Z", - "contributors": [ - "wbamberg", - "Aleksej" - ] - }, - "Tools/Page_Inspector/How_to/Vybor_elementa": { - "modified": "2020-07-16T22:34:33.837Z", - "contributors": [ - "wbamberg", - "trevorh", - "Aleksej" - ] - }, "Tools/Page_Inspector/How_to/Work_with_animations": { "modified": "2020-07-16T22:34:37.336Z", "contributors": [ @@ -4363,20 +2446,6 @@ "Vatheslav" ] }, - "Tools/Page_Inspector/How_to/Исследовать_event_listeners": { - "modified": "2020-07-16T22:34:35.938Z", - "contributors": [ - "wbamberg", - "nzmb" - ] - }, - "Tools/Page_Inspector/How_to/Просмотр_шрифтов": { - "modified": "2020-07-16T22:34:39.270Z", - "contributors": [ - "wbamberg", - "Aleksej" - ] - }, "Tools/Page_Inspector/UI_Tour": { "modified": "2020-07-16T22:34:49.708Z", "contributors": [ @@ -4387,29 +2456,6 @@ "Aleksej" ] }, - "Tools/Page_Inspector/Сочетания_клавиш": { - "modified": "2020-07-16T22:34:52.844Z", - "contributors": [ - "wbamberg", - "Aleksej" - ] - }, - "Tools/Profiler": { - "modified": "2020-07-16T22:35:29.176Z", - "contributors": [ - "wbamberg", - "CamelFoe" - ] - }, - "Tools/Release_notes": { - "modified": "2020-07-16T22:35:57.039Z", - "contributors": [ - "wbamberg", - "dimon4ezzz", - "Aleksej", - "uleming" - ] - }, "Tools/Remote_Debugging": { "modified": "2020-07-16T22:35:38.183Z", "contributors": [ @@ -4453,18 +2499,6 @@ "d.danilin" ] }, - "Tools/Responsive_Design_View": { - "modified": "2020-07-16T22:35:22.392Z", - "contributors": [ - "dartraiden", - "wbamberg", - "brattri3", - "Aleksej", - "teoli", - "Tihoem", - "lobanok1973" - ] - }, "Tools/Settings": { "modified": "2020-07-16T22:36:35.662Z", "contributors": [ @@ -4553,13 +2587,6 @@ "Igor_V_Belousov" ] }, - "Tools/Web_Console/Opening_the_Web_Console": { - "modified": "2020-07-16T22:34:17.559Z", - "contributors": [ - "wbamberg", - "vicamoto" - ] - }, "Tools/Web_Console/Split_console": { "modified": "2020-11-05T09:47:01.540Z", "contributors": [ @@ -4585,56 +2612,6 @@ "L18-666B" ] }, - "Tools/Инспектор_доступности": { - "modified": "2020-07-16T22:36:40.152Z", - "contributors": [ - "dartraiden", - "s1lver", - "cogor" - ] - }, - "Tools/Консоль_браузера": { - "modified": "2020-07-16T22:35:42.837Z", - "contributors": [ - "wbamberg", - "Grief", - "vicamoto", - "Aleksej" - ] - }, - "Tools/Линейки": { - "modified": "2020-07-16T22:36:26.593Z", - "contributors": [ - "wbamberg", - "thepocp", - "SynCap" - ] - }, - "Tools/Производительность": { - "modified": "2020-07-16T22:36:13.723Z", - "contributors": [ - "wbamberg", - "s1lver", - "nemcik7", - "matador21385", - "Ellgine" - ] - }, - "Tools/Производительность/Waterfall": { - "modified": "2020-07-16T22:36:18.443Z", - "contributors": [ - "wbamberg", - "karambaJob" - ] - }, - "Using_Firefox_1.5_caching": { - "modified": "2019-03-23T23:34:25.573Z", - "contributors": [ - "wbamberg", - "nakhodkiin", - "torbasow" - ] - }, "Web": { "modified": "2019-12-27T12:18:45.702Z", "contributors": [ @@ -4802,25 +2779,6 @@ "Agreggor" ] }, - "Web/API/AudioContext/createPanner": { - "modified": "2019-03-23T22:07:18.379Z", - "contributors": [ - "customizer" - ] - }, - "Web/API/AudioContext/currentTime": { - "modified": "2019-03-23T23:09:25.759Z", - "contributors": [ - "fscholz", - "Galamoon" - ] - }, - "Web/API/AudioContext/decodeAudioData": { - "modified": "2019-03-23T22:31:37.197Z", - "contributors": [ - "fleknvrsk" - ] - }, "Web/API/AudioNode": { "modified": "2019-03-23T22:22:26.132Z", "contributors": [ @@ -5027,12 +2985,6 @@ "faramozzayw" ] }, - "Web/API/CSS_Object_Model/ориентация_экрана": { - "modified": "2020-09-02T10:45:25.377Z", - "contributors": [ - "bogpok" - ] - }, "Web/API/Cache": { "modified": "2019-04-16T15:21:13.018Z", "contributors": [ @@ -5499,94 +3451,6 @@ "andvseti" ] }, - "Web/API/Canvas_API/Tutorial/Использование_изображений": { - "modified": "2019-03-18T20:59:25.160Z", - "contributors": [ - "Costigans", - "aderin", - "Theana27", - "Feuway", - "4esnog", - "MaxManchak", - "Taova", - "MuradAz" - ] - }, - "Web/API/Canvas_API/Tutorial/Композиции": { - "modified": "2019-03-23T22:07:28.505Z", - "contributors": [ - "shortship", - "Alex1995markson", - "bad4iz" - ] - }, - "Web/API/Canvas_API/Tutorial/Основы_анимации": { - "modified": "2019-03-18T20:39:12.629Z", - "contributors": [ - "korobkov", - "scanick", - "fenfil", - "komuroe", - "Isk1n", - "evgeniy83", - "Vovanostm", - "SphinxKnight", - "fscholz", - "RokkerRuslan" - ] - }, - "Web/API/Canvas_API/Tutorial/Применение_стилей_и_цветов": { - "modified": "2020-06-21T00:28:29.747Z", - "contributors": [ - "hisbvdis", - "coolwebdev", - "RomatoPotato", - "levi2ki", - "warsan", - "artrudov", - "mormiron", - "jynweythek", - "fil7", - "Theana27", - "Sebastianz", - "SphinxKnight", - "fscholz", - "Neir" - ] - }, - "Web/API/Canvas_API/Tutorial/Рисование_текста": { - "modified": "2020-11-03T08:47:25.074Z", - "contributors": [ - "geschaft59rus", - "AVerutin", - "mish7046", - "lavavrik" - ] - }, - "Web/API/Canvas_API/Tutorial/Рисование_фигур": { - "modified": "2020-07-28T09:22:42.924Z", - "contributors": [ - "AVerutin", - "warsan", - "mi5ha6in", - "mkarkachov", - "artrudov", - "mikomister", - "dedotmoroz", - "GaidaiAndrii", - "DuckerMan", - "hraboviyvadim", - "jynweythek", - "dyachenco", - "fil7", - "nakhodkiin", - "gearmobile", - "teoli", - "fscholz", - "Mirsait", - "Neir" - ] - }, "Web/API/CharacterData": { "modified": "2020-10-15T22:08:25.066Z", "contributors": [ @@ -5940,15 +3804,6 @@ "esskia" ] }, - "Web/API/Document/activeElement": { - "modified": "2019-03-23T23:07:52.737Z", - "contributors": [ - "wbamberg", - "fscholz", - "mrDinckleman", - "my8bit" - ] - }, "Web/API/Document/alinkColor": { "modified": "2020-10-15T21:56:03.837Z", "contributors": [ @@ -5978,12 +3833,6 @@ "aethawalka" ] }, - "Web/API/Document/async": { - "modified": "2019-04-24T21:17:23.958Z", - "contributors": [ - "borseno" - ] - }, "Web/API/Document/bgColor": { "modified": "2020-10-15T21:46:27.977Z", "contributors": [ @@ -6226,12 +4075,6 @@ "surrsoft" ] }, - "Web/API/Document/getSelection": { - "modified": "2019-03-23T22:34:05.751Z", - "contributors": [ - "YakovL" - ] - }, "Web/API/Document/hasFocus": { "modified": "2019-03-23T22:22:10.182Z", "contributors": [ @@ -6423,12 +4266,6 @@ "datasheet" ] }, - "Web/API/Element/accessKey": { - "modified": "2019-03-23T22:51:14.902Z", - "contributors": [ - "In4in" - ] - }, "Web/API/Element/animate": { "modified": "2020-10-15T22:22:29.537Z", "contributors": [ @@ -6975,20 +4812,6 @@ "AlexChuev" ] }, - "Web/API/EventTarget/attachEvent": { - "modified": "2020-12-08T04:43:39.858Z", - "contributors": [ - "bershanskiy", - "akrom123", - "paulvoloschuk" - ] - }, - "Web/API/EventTarget/detachEvent": { - "modified": "2019-03-23T22:07:41.302Z", - "contributors": [ - "paulvoloschuk" - ] - }, "Web/API/EventTarget/dispatchEvent": { "modified": "2020-10-15T21:20:41.807Z", "contributors": [ @@ -7206,12 +5029,6 @@ "tocretpa" ] }, - "Web/API/File_and_Directory_Entries_API/Введение": { - "modified": "2019-03-23T22:06:14.603Z", - "contributors": [ - "egorshulga" - ] - }, "Web/API/FontFace": { "modified": "2020-10-15T22:17:28.932Z", "contributors": [ @@ -7417,27 +5234,6 @@ "teoli" ] }, - "Web/API/Geolocation/Using_geolocation": { - "modified": "2020-10-15T21:28:32.152Z", - "contributors": [ - "art-gur", - "talgautb", - "IliaBrz", - "KazeZlat", - "MariaEvstropova", - "Anna_Leonteva", - "kevich", - "Aleksej", - "Almatbek", - "Zaw00" - ] - }, - "Web/API/Geolocation/Using_geolocation/Using_the_Geolocation_API": { - "modified": "2020-02-14T06:11:59.119Z", - "contributors": [ - "art-gur" - ] - }, "Web/API/Geolocation/getCurrentPosition": { "modified": "2020-10-15T22:01:54.014Z", "contributors": [ @@ -7641,12 +5437,6 @@ "yanislavb" ] }, - "Web/API/HTMLAudioElement/Audio()": { - "modified": "2020-10-15T22:31:15.516Z", - "contributors": [ - "justimchief" - ] - }, "Web/API/HTMLBRElement": { "modified": "2019-03-23T22:43:46.238Z", "contributors": [ @@ -7786,19 +5576,6 @@ "amurchick" ] }, - "Web/API/HTMLElement/dataset": { - "modified": "2020-10-15T21:56:06.529Z", - "contributors": [ - "YozhEzhi", - "masterbox06", - "BitChap", - "motan", - "iamvector", - "hunty", - "almostbergman", - "FlowerDeLuce" - ] - }, "Web/API/HTMLElement/hidden": { "modified": "2019-05-14T07:54:36.993Z", "contributors": [ @@ -7806,12 +5583,6 @@ "vlad-meskalin" ] }, - "Web/API/HTMLElement/nonce": { - "modified": "2020-10-15T22:22:30.878Z", - "contributors": [ - "ellizii" - ] - }, "Web/API/HTMLElement/offsetHeight": { "modified": "2020-10-15T21:43:04.993Z", "contributors": [ @@ -7853,23 +5624,6 @@ "vkrbt" ] }, - "Web/API/HTMLElement/style": { - "modified": "2020-10-15T21:35:49.277Z", - "contributors": [ - "Fantomhaiv", - "elidare", - "maxpolski", - "nkoptsov", - "surrsoft" - ] - }, - "Web/API/HTMLElement/tabIndex": { - "modified": "2019-03-18T21:11:41.012Z", - "contributors": [ - "DianaGalter", - "Tanya_Agisheva" - ] - }, "Web/API/HTMLFormElement": { "modified": "2019-03-23T22:59:13.079Z", "contributors": [ @@ -8541,12 +6295,6 @@ "sideshowbarker" ] }, - "Web/API/MediaTrackConstraints/Эхоподавление": { - "modified": "2020-11-01T07:26:52.423Z", - "contributors": [ - "Ibadichan" - ] - }, "Web/API/Media_Session_API": { "modified": "2020-10-15T22:31:42.491Z", "contributors": [ @@ -8760,12 +6508,6 @@ "AlexAlex" ] }, - "Web/API/NavigatorGeolocation": { - "modified": "2019-03-23T22:43:32.725Z", - "contributors": [ - "AlexAlex" - ] - }, "Web/API/NavigatorID": { "modified": "2020-10-15T21:36:43.124Z", "contributors": [ @@ -8883,12 +6625,6 @@ "AlexAlex" ] }, - "Web/API/NetworkInformation/connection": { - "modified": "2019-03-23T22:54:21.417Z", - "contributors": [ - "AlexAlex" - ] - }, "Web/API/Network_Information_API": { "modified": "2020-10-15T22:31:42.260Z", "contributors": [ @@ -8903,13 +6639,6 @@ "fscholz" ] }, - "Web/API/Node.replaceChild": { - "modified": "2019-03-23T23:14:17.260Z", - "contributors": [ - "khalid32", - "Troynov" - ] - }, "Web/API/Node/appendChild": { "modified": "2020-12-09T06:37:40.787Z", "contributors": [ @@ -8930,12 +6659,6 @@ "AlexAlex" ] }, - "Web/API/Node/baseURIObject": { - "modified": "2019-03-23T22:53:30.789Z", - "contributors": [ - "AlexAlex" - ] - }, "Web/API/Node/childNodes": { "modified": "2019-03-23T23:00:08.391Z", "contributors": [ @@ -8988,14 +6711,6 @@ "AlexAlex" ] }, - "Web/API/Node/innerText": { - "modified": "2020-10-15T21:49:13.148Z", - "contributors": [ - "YozhEzhi", - "ivandoroshenko", - "Aleksander3007" - ] - }, "Web/API/Node/insertBefore": { "modified": "2019-03-23T22:58:37.545Z", "contributors": [ @@ -9083,12 +6798,6 @@ "AlexAlex" ] }, - "Web/API/Node/nodePrincipal": { - "modified": "2019-03-23T22:53:31.496Z", - "contributors": [ - "AlexAlex" - ] - }, "Web/API/Node/nodeType": { "modified": "2019-01-16T20:24:49.318Z", "contributors": [ @@ -9190,13 +6899,6 @@ "fscholz" ] }, - "Web/API/NonDocumentTypeChildNode/NonDocumentTypeChildNode.nextElementSibling": { - "modified": "2019-08-16T17:33:57.106Z", - "contributors": [ - "T-p-V", - "GoodLuck" - ] - }, "Web/API/NonDocumentTypeChildNode/previousElementSibling": { "modified": "2019-03-18T21:39:03.666Z", "contributors": [ @@ -9364,16 +7066,6 @@ "vadimilin888" ] }, - "Web/API/Push_API/Using_the_Push_API": { - "modified": "2019-03-23T22:33:26.535Z", - "contributors": [ - "vasyan", - "zvadym", - "curdwithraisins", - "amutylo", - "alfaslash" - ] - }, "Web/API/RTCPeerConnection": { "modified": "2020-10-15T22:33:10.694Z", "contributors": [ @@ -9422,20 +7114,6 @@ "nikolaifedorov" ] }, - "Web/API/RandomSource": { - "modified": "2019-07-04T02:33:27.227Z", - "contributors": [ - "freezer278", - "Jeremie" - ] - }, - "Web/API/RandomSource/getRandomValues": { - "modified": "2020-10-15T21:43:20.603Z", - "contributors": [ - "ekirpichyov", - "pepeevich" - ] - }, "Web/API/Range": { "modified": "2020-11-14T17:52:09.839Z", "contributors": [ @@ -9505,12 +7183,6 @@ "nudaworks" ] }, - "Web/API/SVGAElement/SVGAlement.target": { - "modified": "2019-03-18T21:45:46.517Z", - "contributors": [ - "Liubava77" - ] - }, "Web/API/SVGAElement/target": { "modified": "2020-10-15T22:05:23.688Z", "contributors": [ @@ -9727,12 +7399,6 @@ "IgorBaranov" ] }, - "Web/API/Slotable": { - "modified": "2020-10-15T22:17:53.998Z", - "contributors": [ - "opereverzeva" - ] - }, "Web/API/SpeechGrammar": { "modified": "2020-10-15T22:00:10.043Z", "contributors": [ @@ -9766,12 +7432,6 @@ "ThijsK" ] }, - "Web/API/Storage/LocalStorage": { - "modified": "2019-03-23T22:05:00.067Z", - "contributors": [ - "ZVanoZ" - ] - }, "Web/API/Storage/clear": { "modified": "2019-03-23T22:42:45.479Z", "contributors": [ @@ -10254,14 +7914,6 @@ "Kran440" ] }, - "Web/API/WebGL_API/Tutorial/Создание_3D_объектов_с_помощью_WebGL": { - "modified": "2019-03-23T22:29:53.189Z", - "contributors": [ - "BakayAnton", - "e-rikov", - "Vlcmdc" - ] - }, "Web/API/WebGL_API/WebGL_best_practices": { "modified": "2019-03-23T22:20:32.460Z", "contributors": [ @@ -10317,32 +7969,12 @@ "mechtool" ] }, - "Web/API/WebRTC_API/WebRTC_basics": { - "modified": "2020-11-01T04:44:10.388Z", - "contributors": [ - "mechtool", - "kostya-skr", - "coderxone" - ] - }, "Web/API/WebRTC_API/adapter.js": { "modified": "2020-02-18T04:29:30.086Z", "contributors": [ "mechtool" ] }, - "Web/API/WebRTC_API/протоколы": { - "modified": "2019-03-23T22:17:21.029Z", - "contributors": [ - "aleole" - ] - }, - "Web/API/WebRTC_API/связь": { - "modified": "2019-03-23T22:17:18.730Z", - "contributors": [ - "aleole" - ] - }, "Web/API/WebSocket": { "modified": "2020-10-15T21:37:20.947Z", "contributors": [ @@ -10441,12 +8073,6 @@ "thesiv95" ] }, - "Web/API/Web_Crypto_API/Checking_authenticity_with_password": { - "modified": "2019-04-10T04:25:54.752Z", - "contributors": [ - "qkudev" - ] - }, "Web/API/Web_Speech_API": { "modified": "2020-10-29T14:47:13.871Z", "contributors": [ @@ -10959,30 +8585,6 @@ "ifedyshin" ] }, - "Web/API/WindowBase64": { - "modified": "2019-03-23T22:50:51.451Z", - "contributors": [ - "teoli" - ] - }, - "Web/API/WindowBase64/Base64_encoding_and_decoding": { - "modified": "2020-02-04T12:42:12.592Z", - "contributors": [ - "hifriend21", - "kormanowsky", - "k-chernyshov", - "9999472", - "KSH-audibene", - "kerosan" - ] - }, - "Web/API/WindowBase64/btoa": { - "modified": "2019-09-17T16:11:11.862Z", - "contributors": [ - "SerzN1", - "uleming" - ] - }, "Web/API/WindowClient": { "modified": "2020-10-15T22:34:56.308Z", "contributors": [ @@ -11080,25 +8682,6 @@ "AliaksandrZahorski" ] }, - "Web/API/WindowTimers": { - "modified": "2019-03-23T23:01:38.088Z", - "contributors": [ - "fscholz" - ] - }, - "Web/API/WindowTimers/setTimeout": { - "modified": "2020-11-18T12:03:29.649Z", - "contributors": [ - "kosarev_va", - "YozhEzhi", - "AliaksandrZahorski", - "akaguny", - "marat-curious", - "neustroev.artyom", - "fscholz", - "ichent" - ] - }, "Web/API/Worker": { "modified": "2019-03-23T22:47:25.398Z", "contributors": [ @@ -11341,18 +8924,6 @@ "fsanano" ] }, - "Web/API/Видимость_страницы_API": { - "modified": "2020-10-15T22:34:15.870Z", - "contributors": [ - "vstorm" - ] - }, - "Web/API/Нотация": { - "modified": "2020-10-15T22:17:39.773Z", - "contributors": [ - "opereverzeva" - ] - }, "Web/Accessibility": { "modified": "2020-07-28T10:32:10.158Z", "contributors": [ @@ -11464,12 +9035,6 @@ "iamvector" ] }, - "Web/Accessibility/Веб-разработка": { - "modified": "2019-03-23T22:57:21.133Z", - "contributors": [ - "Aleksej" - ] - }, "Web/CSS": { "modified": "2019-10-31T08:17:43.061Z", "contributors": [ @@ -11623,13 +9188,6 @@ "Nuzland" ] }, - "Web/CSS/:any": { - "modified": "2019-03-23T22:39:12.816Z", - "contributors": [ - "BychekRU", - "JhonyLe" - ] - }, "Web/CSS/:any-link": { "modified": "2020-11-13T17:12:16.338Z", "contributors": [ @@ -12062,12 +9620,6 @@ "cvrebert" ] }, - "Web/CSS/@viewport/user-zoom": { - "modified": "2019-03-23T22:21:08.056Z", - "contributors": [ - "Hydrock" - ] - }, "Web/CSS/Adjacent_sibling_combinator": { "modified": "2019-03-23T22:45:33.275Z", "contributors": [ @@ -12105,66 +9657,24 @@ "anna.bunakova" ] }, - "Web/CSS/CSS_Animations/Ispolzovanie_CSS_animatciy": { - "modified": "2019-09-08T05:26:38.746Z", - "contributors": [ - "dmarkin", - "trman", - "KatyaRyazantseva", - "Inqanter", - "pseudoliza", - "ShadF0x", - "verbaux", - "SphinxKnight", - "mrkorsar", - "teoli", - "ukarim" - ] - }, - "Web/CSS/CSS_Animations/Tips": { - "modified": "2020-05-03T11:02:29.768Z", + "Web/CSS/CSS_Animations/Tips": { + "modified": "2020-05-03T11:02:29.768Z", "contributors": [ "anna.bunakova" ] }, - "Web/CSS/CSS_Background_and_Borders": { - "modified": "2019-03-23T22:40:44.971Z", - "contributors": [ - "teoli" - ] - }, "Web/CSS/CSS_Background_and_Borders/Border-image_generator": { "modified": "2019-03-23T22:25:50.600Z", "contributors": [ "BychekRU" ] }, - "Web/CSS/CSS_Background_and_Borders/Border-radius_генератор": { - "modified": "2019-03-23T22:40:49.075Z", - "contributors": [ - "vito_falcone" - ] - }, - "Web/CSS/CSS_Background_and_Borders/Множественные_фоны": { - "modified": "2019-03-23T22:13:04.810Z", - "contributors": [ - "J-N-Z" - ] - }, "Web/CSS/CSS_Basic_User_Interface": { "modified": "2019-03-18T21:18:49.969Z", "contributors": [ "SphinxKnight" ] }, - "Web/CSS/CSS_Basic_User_Interface/Использование_URL_значений_для_свойства_cursor": { - "modified": "2019-03-23T22:05:55.809Z", - "contributors": [ - "SphinxKnight", - "ExE-Boss", - "Cheg" - ] - }, "Web/CSS/CSS_Box_Alignment": { "modified": "2019-03-18T21:33:03.343Z", "contributors": [ @@ -12183,12 +9693,6 @@ "Sebastianz" ] }, - "Web/CSS/CSS_Box_Model/Box-shadow_generator": { - "modified": "2019-03-18T20:43:50.074Z", - "contributors": [ - "BychekRU" - ] - }, "Web/CSS/CSS_Box_Model/Mastering_margin_collapsing": { "modified": "2020-07-01T02:44:27.480Z", "contributors": [ @@ -12205,13 +9709,6 @@ "hinduCoder" ] }, - "Web/CSS/CSS_Colors": { - "modified": "2019-03-23T22:34:30.410Z", - "contributors": [ - "BychekRU", - "Krenair" - ] - }, "Web/CSS/CSS_Colors/Color_picker_tool": { "modified": "2019-03-23T22:34:32.727Z", "contributors": [ @@ -12257,59 +9754,12 @@ "RomanBush" ] }, - "Web/CSS/CSS_Flexible_Box_Layout/Using_CSS_flexible_boxes": { - "modified": "2019-09-25T09:43:14.453Z", - "contributors": [ - "RomanBush", - "billlater", - "KadirTopal", - "DmitriyPoltavskiy", - "MrDaedra", - "antenko", - "dixiony", - "SKaznadei", - "iamale" - ] - }, - "Web/CSS/CSS_Flexible_Box_Layout/Выравнивание_элементов_в_Flex_контейнере": { - "modified": "2020-05-25T19:08:16.925Z", - "contributors": [ - "synedvorkham", - "Ruslan_Zlygostev", - "AndriySikora", - "idoru", - "lexeek", - "kalitadanila", - "m-o-semenov", - "ViktoriLisenok", - "dubtar" - ] - }, - "Web/CSS/CSS_Flexible_Box_Layout/Контролирование_соотношения_элементов_вдоль_главной_оси": { - "modified": "2020-03-08T07:17:57.807Z", - "contributors": [ - "Radragon", - "billlater" - ] - }, "Web/CSS/CSS_Flow_Layout": { "modified": "2020-03-07T13:30:09.947Z", "contributors": [ "Radragon" ] }, - "Web/CSS/CSS_Flow_Layout/Блочное_и_строчное_размещение_в_нормальном_потоке": { - "modified": "2020-11-03T12:58:17.297Z", - "contributors": [ - "at940266" - ] - }, - "Web/CSS/CSS_Flow_Layout/Введение_в_контексты_форматирования": { - "modified": "2020-03-08T14:31:08.319Z", - "contributors": [ - "Radragon" - ] - }, "Web/CSS/CSS_Fonts": { "modified": "2020-10-10T08:59:00.093Z", "contributors": [ @@ -12361,12 +9811,6 @@ "slychai85" ] }, - "Web/CSS/CSS_Grid_Layout/CSS_Grid,_Logical_Values_and_Writing_Modes": { - "modified": "2019-03-18T21:35:04.965Z", - "contributors": [ - "slychai85" - ] - }, "Web/CSS/CSS_Grid_Layout/Layout_using_Named_Grid_Lines": { "modified": "2020-04-04T03:56:43.842Z", "contributors": [ @@ -12394,23 +9838,6 @@ "hisbvdis" ] }, - "Web/CSS/CSS_Grid_Layout/Грид-области": { - "modified": "2019-03-18T21:10:23.458Z", - "contributors": [ - "maximTorba", - "denisvovchenko", - "slychai85", - "coshturnina" - ] - }, - "Web/CSS/CSS_Grid_Layout/Расположение_элементов_по_грид-линиям_с_помощью_CSS_Grid": { - "modified": "2020-09-29T19:08:10.559Z", - "contributors": [ - "Zulcom", - "denisvovchenko", - "coshturnina" - ] - }, "Web/CSS/CSS_Images": { "modified": "2019-03-23T22:33:49.629Z", "contributors": [ @@ -12501,36 +9928,12 @@ "TViglesGoom" ] }, - "Web/CSS/CSS_User_Interface": { - "modified": "2019-03-23T22:05:55.155Z", - "contributors": [ - "SphinxKnight", - "ExE-Boss", - "mfluehr" - ] - }, "Web/CSS/CSS_Writing_Modes": { "modified": "2020-03-07T12:38:48.764Z", "contributors": [ "Radragon" ] }, - "Web/CSS/CSS_Селекторы": { - "modified": "2019-09-26T17:15:05.505Z", - "contributors": [ - "RomanBush", - "vkorzhova", - "Gergalov", - "bezik", - "irenprkpv" - ] - }, - "Web/CSS/CSS_Селекторы/Using_the_:target_pseudo-class_in_selectors": { - "modified": "2019-03-18T21:30:19.329Z", - "contributors": [ - "Hoopers_Hooch" - ] - }, "Web/CSS/Cascade": { "modified": "2019-12-08T06:05:17.526Z", "contributors": [ @@ -12559,12 +9962,6 @@ "opereverzeva" ] }, - "Web/CSS/Common_CSS_Questions": { - "modified": "2020-07-16T22:25:45.996Z", - "contributors": [ - "quinn" - ] - }, "Web/CSS/Containing_block": { "modified": "2020-01-07T10:40:33.535Z", "contributors": [ @@ -12646,12 +10043,6 @@ "valeryvitkus" ] }, - "Web/CSS/Media_Queries/Тестирование_медиа_запросы": { - "modified": "2020-10-15T22:17:28.449Z", - "contributors": [ - "opereverzeva" - ] - }, "Web/CSS/Paged_Media": { "modified": "2020-10-12T15:00:21.800Z", "contributors": [ @@ -13130,14 +10521,6 @@ "Sergey.Vdovareize" ] }, - "Web/CSS/box_model": { - "modified": "2019-03-23T23:02:32.915Z", - "contributors": [ - "akovbovich", - "Aleksej", - "codedokode" - ] - }, "Web/CSS/calc()": { "modified": "2020-11-04T09:08:45.108Z", "contributors": [ @@ -13303,12 +10686,6 @@ "ekirpichyov" ] }, - "Web/CSS/filter-function/url": { - "modified": "2020-04-29T08:14:17.353Z", - "contributors": [ - "podocenov" - ] - }, "Web/CSS/flex": { "modified": "2019-06-28T12:43:39.434Z", "contributors": [ @@ -13492,13 +10869,6 @@ "Leuchtkafer" ] }, - "Web/CSS/grid-gap": { - "modified": "2020-10-15T22:05:04.554Z", - "contributors": [ - "oxmap", - "slychai85" - ] - }, "Web/CSS/grid-row-start": { "modified": "2020-10-15T22:26:03.940Z", "contributors": [ @@ -14124,13 +11494,6 @@ "delfin211" ] }, - "Web/CSS/url": { - "modified": "2020-10-15T22:16:56.689Z", - "contributors": [ - "opereverzeva", - "AliaksandrZahorski" - ] - }, "Web/CSS/url()": { "modified": "2020-10-15T22:33:29.454Z", "contributors": [ @@ -14242,72 +11605,6 @@ "yaruson" ] }, - "Web/CSS/Действительное_значение": { - "modified": "2019-03-23T22:31:07.849Z", - "contributors": [ - "warsan", - "BychekRU" - ] - }, - "Web/CSS/Замещаемый_элемент": { - "modified": "2019-03-23T22:31:00.260Z", - "contributors": [ - "SelenIT", - "dima74", - "BychekRU" - ] - }, - "Web/CSS/Псевдо-классы": { - "modified": "2019-03-23T22:51:08.664Z", - "contributors": [ - "IgorPuchkov2003", - "dima74", - "BychekRU", - "olko28" - ] - }, - "Web/CSS/Синтаксис": { - "modified": "2019-07-26T04:52:30.660Z", - "contributors": [ - "munaticu", - "teoli", - "Norville" - ] - }, - "Web/CSS/Способ_расположения": { - "modified": "2019-03-23T23:09:42.012Z", - "contributors": [ - "idoru", - "BychekRU", - "ldone" - ] - }, - "Web/CSS/Тихий": { - "modified": "2019-03-23T22:32:40.563Z", - "contributors": [ - "BychekRU", - "Evgeny166" - ] - }, - "Web/CSS/Указанное_значение": { - "modified": "2019-03-23T22:30:59.718Z", - "contributors": [ - "BychekRU" - ] - }, - "Web/CSS/размер": { - "modified": "2020-10-15T21:48:09.200Z", - "contributors": [ - "HImichun", - "sashakrauzer", - "VICIOne", - "favetisov", - "ialexi-bl", - "Fgeniy", - "Zamkevich", - "VladdOs" - ] - }, "Web/Events": { "modified": "2020-11-17T03:43:19.041Z", "contributors": [ @@ -14326,165 +11623,43 @@ "teoli" ] }, - "Web/Events/DOMContentLoaded": { - "modified": "2019-04-30T14:28:01.901Z", + "Web/Guide": { + "modified": "2020-09-02T11:11:23.452Z", "contributors": [ - "wbamberg", - "cashm0ney", - "fscholz", - "vittorio-tortugo", - "e-h-h" + "bogpok", + "Didar83", + "soctim", + "jwhitlock", + "netpatriciapussy", + "Tihoem", + "galinakulinich@mail.ru", + "Sheppy" ] }, - "Web/Events/abort": { - "modified": "2019-04-30T14:17:57.211Z", + "Web/Guide/AJAX": { + "modified": "2020-03-06T17:23:15.361Z", "contributors": [ - "wbamberg", - "Corba", - "fscholz", - "e-omo" + "bulatDev", + "korjjik87", + "chrisdavidmills", + "Sky_Fox", + "Megapotz", + "Kavkazsk", + "Summit677", + "Kwinto", + "Dionys", + "Woodroof", + "Zhuravlik" ] }, - "Web/Events/blur": { - "modified": "2019-03-23T22:19:52.585Z", - "contributors": [ - "fscholz", - "Pirate505", - "Asyst" - ] - }, - "Web/Events/error": { - "modified": "2019-03-18T20:55:03.206Z", - "contributors": [ - "Corba", - "iGureEV" - ] - }, - "Web/Events/focusin": { - "modified": "2019-03-23T22:30:36.967Z", - "contributors": [ - "fscholz", - "f0rmat1k" - ] - }, - "Web/Events/focusout": { - "modified": "2019-03-18T21:19:40.612Z", - "contributors": [ - "merelj" - ] - }, - "Web/Events/load": { - "modified": "2019-03-23T22:22:49.108Z", - "contributors": [ - "fscholz", - "e-h-h" - ] - }, - "Web/Events/loadstart": { - "modified": "2019-03-23T22:29:55.674Z", - "contributors": [ - "fscholz", - "forestbird" - ] - }, - "Web/Events/readystatechange": { - "modified": "2019-03-18T21:42:00.103Z", - "contributors": [ - "SlavaJan" - ] - }, - "Web/Events/transitionend": { - "modified": "2019-03-23T23:13:05.887Z", - "contributors": [ - "fscholz", - "airspin", - "akhabibullina" - ] - }, - "Web/Events/unhandledrejection": { - "modified": "2019-04-30T13:51:15.952Z", - "contributors": [ - "wbamberg", - "colmer" - ] - }, - "Web/Guide": { - "modified": "2020-09-02T11:11:23.452Z", - "contributors": [ - "bogpok", - "Didar83", - "soctim", - "jwhitlock", - "netpatriciapussy", - "Tihoem", - "galinakulinich@mail.ru", - "Sheppy" - ] - }, - "Web/Guide/AJAX": { - "modified": "2020-03-06T17:23:15.361Z", - "contributors": [ - "bulatDev", - "korjjik87", - "chrisdavidmills", - "Sky_Fox", - "Megapotz", - "Kavkazsk", - "Summit677", - "Kwinto", - "Dionys", - "Woodroof", - "Zhuravlik" - ] - }, - "Web/Guide/AJAX/С_чего_начать": { - "modified": "2019-03-24T00:01:49.926Z", - "contributors": [ - "DanilaH", - "chrisdavidmills", - "Megapotz", - "Apparition", - "Square", - "Kwinto" - ] - }, - "Web/Guide/AJAX/С_чего_начать?": { - "modified": "2019-01-16T16:10:29.921Z", - "contributors": [ - "chrisdavidmills", - "Sheppy", - "Nikol" - ] - }, - "Web/Guide/API": { - "modified": "2019-09-11T09:35:03.457Z", + "Web/Guide/API": { + "modified": "2019-09-11T09:35:03.457Z", "contributors": [ "SphinxKnight", "BychekRU", "Sheppy" ] }, - "Web/Guide/API/DOM": { - "modified": "2019-09-02T16:41:36.691Z", - "contributors": [ - "NiroWoolf", - "Jeremie" - ] - }, - "Web/Guide/API/DOM/Storage": { - "modified": "2019-03-23T23:13:28.239Z", - "contributors": [ - "Steln", - "akhabibullina" - ] - }, - "Web/Guide/API/WebRTC": { - "modified": "2019-03-23T22:34:55.398Z", - "contributors": [ - "MoksS", - "franzy1709" - ] - }, "Web/Guide/Audio_and_video_delivery": { "modified": "2019-05-24T08:49:25.038Z", "contributors": [ @@ -14515,16 +11690,6 @@ "bogpok" ] }, - "Web/Guide/CSS": { - "modified": "2019-09-11T09:43:50.277Z", - "contributors": [ - "SphinxKnight", - "Aleksej", - "vtambourine", - "KrishnaKevalam", - "jswisher" - ] - }, "Web/Guide/CSS/Block_formatting_context": { "modified": "2019-10-04T09:05:37.001Z", "contributors": [ @@ -14538,327 +11703,100 @@ "akhabibullina" ] }, - "Web/Guide/CSS/Getting_started": { - "modified": "2019-03-23T23:09:39.395Z", - "contributors": [ - "BychekRU", - "Aleksej", - "frontgirl", - "wjinca" - ] - }, - "Web/Guide/CSS/Getting_started/Cascading_and_inheritance": { - "modified": "2019-03-23T22:51:54.874Z", - "contributors": [ - "Tankerxyz", - "BychekRU", - "F-302", - "sofiaglynyana" - ] - }, - "Web/Guide/CSS/Getting_started/Color": { - "modified": "2019-03-23T22:31:38.617Z", - "contributors": [ - "TuchaNK" - ] - }, - "Web/Guide/CSS/Getting_started/How_CSS_works": { - "modified": "2019-03-18T21:17:13.180Z", + "Web/Guide/Events": { + "modified": "2020-08-20T10:40:53.452Z", "contributors": [ - "BychekRU", - "F-302" + "bogpok", + "Llorephie", + "Tihoem", + "Jeremie" ] }, - "Web/Guide/CSS/Getting_started/Readable_CSS": { - "modified": "2019-03-23T22:49:44.377Z", + "Web/Guide/Events/Event_handlers": { + "modified": "2020-03-26T12:45:30.049Z", "contributors": [ - "Svart", - "F-302", - "Crystal" + "ellizii" ] }, - "Web/Guide/CSS/Getting_started/SVG_и_CSS": { - "modified": "2019-10-07T10:29:32.536Z", + "Web/Guide/Events/Media_events": { + "modified": "2019-04-16T19:26:35.650Z", "contributors": [ - "Matcenko", - "AndrewPinkerton", - "maximmonev", - "DadUndead" + "vamo089", + "TaizoGem", + "undgrnd", + "nechehin" ] }, - "Web/Guide/CSS/Getting_started/Selectors": { - "modified": "2020-02-28T21:44:59.981Z", + "Web/Guide/Events/Overview_of_Events_and_Handlers": { + "modified": "2019-06-24T11:18:00.027Z", "contributors": [ - "nkaskov", - "SergeyNikolaev70", - "1cprog", - "Tankerxyz", - "BigBond", - "mztrp", - "tnt4brain" + "kvandreev", + "MuradAz", + "curdwithraisins" ] }, - "Web/Guide/CSS/Getting_started/Text_styles": { - "modified": "2019-03-23T22:31:35.056Z", + "Web/Guide/HTML/Content_categories": { + "modified": "2019-09-23T08:37:02.214Z", "contributors": [ - "DKas", - "TuchaNK" + "niktariy", + "Sotik", + "KTatyana", + "Isk1n", + "Angelskih", + "Quaiby", + "chernysh2909", + "alexbaumgertner", + "Aleksej", + "Lambrusco.pro" ] }, - "Web/Guide/CSS/Getting_started/What_is_CSS": { - "modified": "2019-10-10T16:46:49.900Z", + "Web/Guide/HTML/Editable_content": { + "modified": "2019-03-18T21:32:40.829Z", "contributors": [ - "gleb-svitelskiy", - "BychekRU", - "Aleksej", - "frontgirl" + "warsan" ] }, - "Web/Guide/CSS/Getting_started/Why_use_CSS": { - "modified": "2019-03-23T22:33:27.543Z", + "Web/Guide/Localizations_and_character_encodings": { + "modified": "2020-12-14T08:44:06.511Z", "contributors": [ - "BychekRU", - "F-302" + "azahw935", + "bogpok" ] }, - "Web/Guide/CSS/Getting_started/Таблицы": { - "modified": "2019-03-23T23:09:44.945Z", + "Web/Guide/Parsing_and_serializing_XML": { + "modified": "2020-10-11T12:29:17.772Z", "contributors": [ - "BychekRU", - "ldone" + "Akhat", + "bogpok" ] }, - "Web/Guide/CSS/Understanding_z_index": { - "modified": "2020-04-16T00:54:23.175Z", + "Web/Guide/Unicode_Bidrectional_Text_Algorithm": { + "modified": "2020-09-02T08:30:27.156Z", "contributors": [ - "pelyp47", - "Derept", - "zdravnick", - "DartWelder", - "elenatafeenko", - "Jeremie" + "bogpok" ] }, - "Web/Guide/CSS/Understanding_z_index/Adding_z-index": { - "modified": "2020-04-16T01:16:28.675Z", + "Web/Guide/User_input_methods": { + "modified": "2020-09-02T11:05:36.300Z", "contributors": [ - "pelyp47" + "bogpok" ] }, - "Web/Guide/CSS/Understanding_z_index/Stacking_without_z-index": { - "modified": "2020-04-16T01:00:44.047Z", + "Web/Guide/WOFF": { + "modified": "2020-10-15T22:33:54.379Z", "contributors": [ - "pelyp47", - "batareechka", - "SphinxKnight" + "bogpok" ] }, - "Web/Guide/CSS/Using_multi-column_layouts": { - "modified": "2019-07-22T11:08:23.191Z", + "Web/Guide/mobile": { + "modified": "2020-02-07T13:05:09.003Z", "contributors": [ - "a-bodrova", - "sandmanisdancing", - "fscholz", - "ldone" + "McBurns", + "VDyrda" ] }, - "Web/Guide/CSS/Visual_formatting_model": { - "modified": "2019-09-20T10:50:10.502Z", - "contributors": [ - "RomanBush", - "SphinxKnight", - "FlightBlaze", - "Chugou9", - "ZapevalovAnton", - "fmva", - "levi2ki", - "kapvik", - "hhharm", - "ViT09" - ] - }, - "Web/Guide/Events": { - "modified": "2020-08-20T10:40:53.452Z", - "contributors": [ - "bogpok", - "Llorephie", - "Tihoem", - "Jeremie" - ] - }, - "Web/Guide/Events/Event_handlers": { - "modified": "2020-03-26T12:45:30.049Z", - "contributors": [ - "ellizii" - ] - }, - "Web/Guide/Events/Media_events": { - "modified": "2019-04-16T19:26:35.650Z", - "contributors": [ - "vamo089", - "TaizoGem", - "undgrnd", - "nechehin" - ] - }, - "Web/Guide/Events/Overview_of_Events_and_Handlers": { - "modified": "2019-06-24T11:18:00.027Z", - "contributors": [ - "kvandreev", - "MuradAz", - "curdwithraisins" - ] - }, - "Web/Guide/Events/Создание_и_вызов_событий": { - "modified": "2020-10-15T21:31:20.093Z", - "contributors": [ - "YozhEzhi", - "leann-fraoigh", - "Solant", - "bagau", - "pk.prog", - "lazyexpert", - "YuryT" - ] - }, - "Web/Guide/HTML/Content_categories": { - "modified": "2019-09-23T08:37:02.214Z", - "contributors": [ - "niktariy", - "Sotik", - "KTatyana", - "Isk1n", - "Angelskih", - "Quaiby", - "chernysh2909", - "alexbaumgertner", - "Aleksej", - "Lambrusco.pro" - ] - }, - "Web/Guide/HTML/Drag_and_drop": { - "modified": "2019-06-20T03:46:49.198Z", - "contributors": [ - "kkxley", - "Akh-rman", - "artalar", - "miramax-88", - "Morjodrom", - "fess16", - "MStark" - ] - }, - "Web/Guide/HTML/Drag_and_drop/Drag_operations": { - "modified": "2020-02-05T06:07:31.464Z", - "contributors": [ - "opereverzeva" - ] - }, - "Web/Guide/HTML/Editable_content": { - "modified": "2019-03-18T21:32:40.829Z", - "contributors": [ - "warsan" - ] - }, - "Web/Guide/HTML/Sections_and_Outlines_of_an_HTML5_document": { - "modified": "2020-10-09T08:16:53.318Z", - "contributors": [ - "matiasrustagte", - "arka_triymfalnaya", - "outdever", - "Wingear", - "evgor80", - "lerniri" - ] - }, - "Web/Guide/HTML/Tips_for_authoring_fast-loading_HTML_pages": { - "modified": "2020-07-16T22:22:33.594Z", - "contributors": [ - "SoMuchEffort", - "optimistic" - ] - }, - "Web/Guide/HTML/Using_data_attributes": { - "modified": "2020-07-16T22:22:37.165Z", - "contributors": [ - "AliaksandrZahorski", - "dima74", - "bad4iz", - "ultrinnan", - "SphinxKnight", - "lerniri", - "ArtiFisher", - "xoyk", - "BaNru" - ] - }, - "Web/Guide/HTML/Формы_в_HTML": { - "modified": "2019-03-23T22:35:16.060Z", - "contributors": [ - "Morjodrom", - "AgRuN1", - "ruslan_g02" - ] - }, - "Web/Guide/Localizations_and_character_encodings": { - "modified": "2020-12-14T08:44:06.511Z", - "contributors": [ - "azahw935", - "bogpok" - ] - }, - "Web/Guide/Parsing_and_serializing_XML": { - "modified": "2020-10-11T12:29:17.772Z", - "contributors": [ - "Akhat", - "bogpok" - ] - }, - "Web/Guide/Unicode_Bidrectional_Text_Algorithm": { - "modified": "2020-09-02T08:30:27.156Z", - "contributors": [ - "bogpok" - ] - }, - "Web/Guide/User_input_methods": { - "modified": "2020-09-02T11:05:36.300Z", - "contributors": [ - "bogpok" - ] - }, - "Web/Guide/WOFF": { - "modified": "2020-10-15T22:33:54.379Z", - "contributors": [ - "bogpok" - ] - }, - "Web/Guide/mobile": { - "modified": "2020-02-07T13:05:09.003Z", - "contributors": [ - "McBurns", - "VDyrda" - ] - }, - "Web/Guide/Графика": { - "modified": "2019-03-23T23:24:59.485Z", - "contributors": [ - "theykillimmortal", - "McBurns", - "DinarGataullin", - "emil4", - "Bonerdelli", - "uleming", - "nedimaon" - ] - }, - "Web/Guide/Производительность": { - "modified": "2020-08-20T11:16:04.965Z", - "contributors": [ - "bogpok" - ] - }, - "Web/HTML": { - "modified": "2020-05-09T08:33:52.357Z", + "Web/HTML": { + "modified": "2020-05-09T08:33:52.357Z", "contributors": [ "SphinxKnight", "arslan6226262", @@ -14936,13 +11874,6 @@ "sve-kai-itmo" ] }, - "Web/HTML/CORS_settings_attributes": { - "modified": "2019-03-23T22:26:17.707Z", - "contributors": [ - "HA3IK", - "metserp" - ] - }, "Web/HTML/Element": { "modified": "2019-03-24T00:04:23.071Z", "contributors": [ @@ -15337,12 +12268,6 @@ "nastarash" ] }, - "Web/HTML/Element/element": { - "modified": "2019-03-23T22:16:19.667Z", - "contributors": [ - "SphinxKnight" - ] - }, "Web/HTML/Element/em": { "modified": "2020-10-15T22:19:54.841Z", "contributors": [ @@ -15785,14 +12710,6 @@ "fill.anton" ] }, - "Web/HTML/Element/video/seeking_event": { - "modified": "2019-03-23T22:00:06.598Z", - "contributors": [ - "estelle", - "fscholz", - "alexs_havelev" - ] - }, "Web/HTML/Element/wbr": { "modified": "2020-10-15T22:16:50.183Z", "contributors": [ @@ -15801,26 +12718,6 @@ "AleksandrK69" ] }, - "Web/HTML/Element/кнопка": { - "modified": "2020-08-27T10:59:01.002Z", - "contributors": [ - "DarkExodusXX", - "Anton1922", - "fanich37", - "VitalyKrenel", - "Quaiby" - ] - }, - "Web/HTML/Element/ссылка": { - "modified": "2020-11-25T22:00:52.653Z", - "contributors": [ - "RoPy73", - "GitForDocs", - "sasha3nique", - "dt_", - "opereverzeva" - ] - }, "Web/HTML/Global_attributes": { "modified": "2020-10-15T21:40:19.311Z", "contributors": [ @@ -15870,13 +12767,6 @@ "at940266" ] }, - "Web/HTML/Global_attributes/dropzone": { - "modified": "2020-10-15T22:18:29.870Z", - "contributors": [ - "chrisdavidmills", - "Akh-rman" - ] - }, "Web/HTML/Global_attributes/id": { "modified": "2020-10-15T21:58:35.927Z", "contributors": [ @@ -15935,16 +12825,6 @@ "ViktorKonsta" ] }, - "Web/HTML/Optimizing_Your_Pages_for_Speculative_Parsing": { - "modified": "2019-03-23T23:28:56.065Z", - "contributors": [ - "s1lver", - "pk.prog", - "SnejUgal", - "teoli", - "Gucci_08_rus" - ] - }, "Web/HTML/Preloading_content": { "modified": "2020-10-15T22:11:40.984Z", "contributors": [ @@ -15965,73 +12845,22 @@ "lerniri" ] }, - "Web/HTML/Использование_кэширования_приложений": { - "modified": "2019-04-09T18:24:32.273Z", + "Web/HTTP": { + "modified": "2019-10-10T16:46:52.972Z", "contributors": [ - "jwhitlock", - "teoli", - "pashak" + "Mikhail_Kozachkov", + "e-evdokimov", + "stonetrooper", + "djigach", + "pk.prog", + "warnabas", + "nilfalse", + "lerniri", + "Sheppy" ] }, - "Web/HTML/Поддерживаемые_медиа_форматы": { - "modified": "2019-03-23T22:40:43.218Z", - "contributors": [ - "SedovDP", - "a-goodwin", - "PPerminov", - "MuradAz" - ] - }, - "Web/HTML/Ссылки": { - "modified": "2019-09-09T07:21:34.310Z", - "contributors": [ - "SphinxKnight", - "JCodeg", - "wbamberg", - "Kiprusoff", - "kuki", - "alexfromvl", - "VsTB", - "astrobeglec", - "BychekRU", - "quinn", - "ldone", - "alexlead" - ] - }, - "Web/HTML/Строчные_Элементы": { - "modified": "2020-03-08T06:35:47.964Z", - "contributors": [ - "Radragon", - "AliaksandrZahorski", - "Inqanter", - "superpuper32", - "Filofei", - "Chronosms" - ] - }, - "Web/HTML/Типы_ссылок": { - "modified": "2019-03-23T22:35:07.110Z", - "contributors": [ - "BychekRU" - ] - }, - "Web/HTTP": { - "modified": "2019-10-10T16:46:52.972Z", - "contributors": [ - "Mikhail_Kozachkov", - "e-evdokimov", - "stonetrooper", - "djigach", - "pk.prog", - "warnabas", - "nilfalse", - "lerniri", - "Sheppy" - ] - }, - "Web/HTTP/Basics_of_HTTP": { - "modified": "2020-07-14T17:05:38.093Z", + "Web/HTTP/Basics_of_HTTP": { + "modified": "2020-07-14T17:05:38.093Z", "contributors": [ "vladimir.i.kuropatka", "enonotugh", @@ -16051,12 +12880,6 @@ "pk.prog" ] }, - "Web/HTTP/Basics_of_HTTP/Identifying_resources_on_the_Web_RU": { - "modified": "2020-01-09T21:04:16.499Z", - "contributors": [ - "rshmelev" - ] - }, "Web/HTTP/Basics_of_HTTP/MIME_types": { "modified": "2019-10-21T06:21:06.123Z", "contributors": [ @@ -16313,12 +13136,6 @@ "ValeriiBoiko" ] }, - "Web/HTTP/Server-Side_Access_Control": { - "modified": "2019-07-16T07:11:05.759Z", - "contributors": [ - "curdwithraisins" - ] - }, "Web/HTTP/Session": { "modified": "2020-02-14T12:03:42.414Z", "contributors": [ @@ -16703,9290 +13520,12473 @@ "AlexeyVasilievE" ] }, - "Web/HTTP/Авторизация": { - "modified": "2020-04-27T12:53:55.193Z", - "contributors": [ - "katina.tanya.net", - "Umbrous", - "mironovdm", - "RumyantsevMichael", - "Santiago26", - "deniskoronets" - ] - }, - "Web/HTTP/Заголовки": { - "modified": "2020-10-01T10:57:48.980Z", + "Web/JavaScript": { + "modified": "2020-10-11T19:17:39.227Z", "contributors": [ - "bakhrom.akbarov", - "severyanov", - "DariiaBormot", - "andrewtk", - "st6gb", - "stonetrooper", - "loman", - "ReinarKein" + "Zulcom", + "dknight", + "ryabv", + "QuasiStellar", + "cypper", + "SphinxKnight", + "bakugod", + "Diana_Makarevich", + "tshemsedinov", + "Geloosa", + "drxwat", + "nllsdfx", + "kdex", + "Sviat", + "pk.prog", + "BychekRU", + "L18-666B", + "Saviloff", + "uleming", + "Feschenko", + "IgorGilyazov", + "anton-petrov", + "teoli", + "iAchilles", + "Ladislas", + "researcher", + "Dionys", + "user01", + "karasiov", + "Niquola", + "Megapotz", + "Knyaz Vladimir" ] }, - "Web/HTTP/Заголовки/Accept": { - "modified": "2020-11-27T13:56:04.958Z", + "Web/JavaScript/A_re-introduction_to_JavaScript": { + "modified": "2020-10-21T01:20:45.167Z", "contributors": [ - "robert491", - "vykulakov", - "Normal", - "AlexeyVasilievE" + "chimit", + "korefusha", + "Kamil-Zakiev", + "EgorChernik", + "aleshkanet", + "CeH9", + "MerkurevSergei", + "shtorin", + "Megabyteceer", + "gudkovdanila", + "pk.prog", + "fscholz", + "forestbird", + "Saviloff", + "Instigator", + "shapoval", + "AlexChuev", + "razarusu", + "kolyuchii", + "PavelGrishaev", + "teoli", + "franza", + "PROgrammaster", + "sergey_tikhonov", + "Dart" ] }, - "Web/HTTP/Заголовки/Accept-Charset": { - "modified": "2020-10-15T22:14:29.517Z", + "Web/JavaScript/Closures": { + "modified": "2020-11-13T09:42:08.066Z", "contributors": [ - "Reddok", - "J4CKVVH173" + "chmsv", + "0NotNull", + "SamTLT", + "Nikitazharkij", + "aprinciple", + "OlegMingaleev", + "demid088", + "wbamberg", + "stranger777", + "borisqua", + "Stejok", + "sersalex", + "meecrobe", + "Megabyteceer", + "TaKo13", + "Saviloff", + "Witadol", + "thetekst", + "fscholz", + "iGanzai", + "khorpyakov", + "ivan.p", + "AlekseyGoryansky", + "AlexKucher", + "mcmimik", + "teoli", + "CJohn" ] }, - "Web/HTTP/Заголовки/Accept-Language": { - "modified": "2020-10-15T22:00:00.029Z", + "Web/JavaScript/Data_structures": { + "modified": "2020-10-08T08:53:54.371Z", "contributors": [ - "taushan.marina", - "Reddok", - "limanweb", - "serj-by" + "nikolasmelui", + "wentout", + "sashakrauzer", + "faramozzayw", + "Eugeno", + "itsEffy", + "meafmira", + "artrudov", + "miiixsc", + "RomanBykov", + "romannovikov", + "pathliving", + "rockad", + "foobar42", + "letry", + "Megabyteceer", + "kmetto", + "TaKo13", + "alfaslash", + "markgraydev", + "Leo240", + "KANBY", + "fscholz", + "jaguardev", + "teoli", + "dunmaksim", + "uleming" ] }, - "Web/HTTP/Заголовки/Accept-Patch": { - "modified": "2020-12-05T05:07:59.020Z", + "Web/JavaScript/Enumerability_and_ownership_of_properties": { + "modified": "2020-03-12T19:43:05.408Z", "contributors": [ - "sheremet" + "Saviloff" ] }, - "Web/HTTP/Заголовки/Accept-Ranges": { - "modified": "2020-12-14T05:59:29.332Z", + "Web/JavaScript/Equality_comparisons_and_sameness": { + "modified": "2020-03-12T19:42:53.063Z", "contributors": [ - "AndrewHaluza", - "stonetrooper" + "HTMan", + "CodeLookBook", + "sgrogov", + "Zarwlar", + "Saviloff", + "Witadol" ] }, - "Web/HTTP/Заголовки/Access-Control-Allow-Headers": { - "modified": "2020-10-15T22:06:02.499Z", + "Web/JavaScript/EventLoop": { + "modified": "2020-03-29T11:58:13.454Z", "contributors": [ - "Skinny-Hunter" + "GalustOsipyan", + "nemrosim", + "cgehuzi", + "AnDeVerin", + "letovlive", + "rgrtuleague", + "IlyaMokin", + "thefasttracker", + "RusPosevkin", + "6thSence", + "andrIvash", + "ivanlemeshev", + "beskrovnykh", + "forestbird", + "Saviloff", + "pashutk", + "fscholz", + "im7mortal" ] }, - "Web/HTTP/Заголовки/Access-Control-Allow-Methods": { - "modified": "2020-10-15T21:55:39.900Z", + "Web/JavaScript/Guide": { + "modified": "2020-10-30T03:49:38.404Z", "contributors": [ - "kosuhin" + "ksam", + "callisto1337", + "VerkholaAlex", + "T1mL3arn", + "pk.prog", + "BychekRU", + "xmalinov", + "Saviloff", + "HaukIce", + "pashutk", + "astra1", + "Yuriy-Ka", + "Aleksej", + "fscholz", + "dtretyakov", + "teoli", + "danielgn96" ] }, - "Web/HTTP/Заголовки/Access-Control-Allow-Origin": { - "modified": "2020-10-15T22:30:57.158Z", + "Web/JavaScript/Guide/Control_flow_and_error_handling": { + "modified": "2020-11-06T04:41:33.787Z", "contributors": [ - "online", - "muxmux.ryzhinskiy" + "ksam", + "Japaka90", + "pk.prog", + "igor4949i", + "fscholz", + "IgorGilyazov", + "teoli", + "uleming" ] }, - "Web/HTTP/Заголовки/Access-Control-Max-Age": { - "modified": "2020-10-15T21:54:51.387Z", + "Web/JavaScript/Guide/Details_of_the_Object_Model": { + "modified": "2020-03-18T16:30:12.782Z", "contributors": [ - "Shamshod", - "slayermass" + "HardKullez", + "qwerty-wasd", + "imalyavskiy", + "Davidnadejdin", + "SedovDP", + "metelskiy", + "wbamberg", + "rinbik", + "SphinxKnight", + "toolX", + "vherever", + "Megabyteceer", + "ndrsrv", + "NobbsNobby", + "Saviloff", + "makdeb", + "fscholz", + "esskia", + "ivan.p" ] }, - "Web/HTTP/Заголовки/Authorization": { - "modified": "2020-11-27T14:09:58.983Z", + "Web/JavaScript/Guide/Expressions_and_Operators": { + "modified": "2020-03-12T19:39:43.277Z", "contributors": [ - "robert491", - "NikitaTkachev", - "3lvcz", - "EgorChernik", - "justredpaul" + "mikhail.makarov", + "olegsorokin", + "Megabyteceer", + "pk.prog", + "Grumvol", + "BychekRU", + "Leo240", + "roma-derski", + "fscholz", + "denise", + "Corba" ] }, - "Web/HTTP/Заголовки/Cache-Control": { - "modified": "2020-10-15T21:59:00.821Z", + "Web/JavaScript/Guide/Functions": { + "modified": "2020-04-18T01:17:09.834Z", "contributors": [ - "eeiaao", - "akimy", - "lykosheff", - "Sergey.Terekhin" + "Nevelskoy", + "shevchenko", + "trman", + "pirimow", + "BulavkinNN", + "kkxley", + "mikhail.makarov", + "Aparin", + "imalyavskiy", + "KoS57", + "prometium", + "jsteacat", + "yankovskiy", + "osmaav", + "postwj", + "d.zheleznov", + "kan.a", + "Sajag", + "sirkon", + "pathliving", + "thepocp", + "ValdemarTerte", + "GoliafRS", + "AlexeySuprun", + "Mainstand", + "Grumvol", + "DeekHalden", + "alitskevich", + "keffidesign", + "JuGeer", + "serhiyv", + "pashutk", + "roma-derski", + "fscholz", + "andrcmdr", + "dixon2002", + "teoli", + "uleming" ] }, - "Web/HTTP/Заголовки/Connection": { - "modified": "2020-11-27T17:37:13.461Z", + "Web/JavaScript/Guide/Grammar_and_types": { + "modified": "2020-03-12T19:37:57.624Z", "contributors": [ - "robert491", - "Lariniya", - "Talkerbox", - "stonetrooper", - "Kirill82" + "kkxley", + "device25", + "pk.prog", + "rus11", + "xkha", + "Grumvol", + "DeekHalden", + "BychekRU", + "JuGeer", + "fscholz", + "IgorGilyazov", + "ph1ex0n", + "Corba", + "teoli", + "uleming" ] }, - "Web/HTTP/Заголовки/Content-Disposition": { - "modified": "2020-10-15T21:58:08.326Z", + "Web/JavaScript/Guide/Indexed_collections": { + "modified": "2020-03-12T19:41:25.167Z", "contributors": [ - "Blinky", - "pk.prog" + "prometium", + "yankovskiy", + "postwj", + "v.bilinskyi", + "pk.prog", + "sergeymakoveev", + "Megabyteceer", + "a302379333", + "Grumvol", + "blitzkrieg393", + "ignusin", + "magetor" ] }, - "Web/HTTP/Заголовки/Content-Encoding": { - "modified": "2020-10-15T22:30:01.262Z", + "Web/JavaScript/Guide/Iterators_and_Generators": { + "modified": "2020-03-12T19:42:16.480Z", "contributors": [ - "isetpro" + "AlexanderShushunov", + "rinbik", + "sivashev", + "deman", + "Megabyteceer", + "pashutk", + "kav137", + "zgordan-vv", + "danratnikov", + "djsuprin", + "uhomira" ] }, - "Web/HTTP/Заголовки/Content-Language": { - "modified": "2020-10-15T22:14:19.206Z", + "Web/JavaScript/Guide/Keyed_collections": { + "modified": "2020-03-12T19:43:04.309Z", "contributors": [ - "Nasridean", - "limanweb" + "iameax", + "callisto1337", + "pathliving", + "Megabyteceer", + "alitskevich" ] }, - "Web/HTTP/Заголовки/Content-Length": { - "modified": "2020-11-27T16:51:36.713Z", + "Web/JavaScript/Guide/Meta_programming": { + "modified": "2020-03-12T19:45:39.027Z", "contributors": [ - "robert491", - "einperegrin", - "FireEagle25" + "E-Fir", + "T1mL3arn", + "TotalAMD", + "Dominionys", + "NickTaporuk", + "Megabyteceer" ] }, - "Web/HTTP/Заголовки/Content-Type": { - "modified": "2020-10-15T21:56:21.381Z", + "Web/JavaScript/Guide/Modules": { + "modified": "2020-11-22T19:25:09.183Z", "contributors": [ - "kryksyh", - "WhiteApfel", - "nemish", - "NAKAMODI" + "rsvato" ] }, - "Web/HTTP/Заголовки/DNT": { - "modified": "2020-10-15T22:15:53.319Z", + "Web/JavaScript/Guide/Numbers_and_dates": { + "modified": "2020-03-12T19:42:19.176Z", "contributors": [ - "Alex90" + "pirimow", + "myszkowski", + "Aparin", + "imalyavskiy", + "lemehovskiy", + "yankovskiy", + "rinbik", + "morpharc", + "Sparks", + "TemmyR", + "Megabyteceer", + "Mavricus", + "Letis-1987", + "OojSmile", + "Grumvol", + "serik1987", + "roma-derski" ] }, - "Web/HTTP/Заголовки/Date": { - "modified": "2020-10-15T21:57:57.330Z", + "Web/JavaScript/Guide/Regular_Expressions": { + "modified": "2020-07-27T10:18:25.178Z", "contributors": [ - "Darlanar", - "serieznyi" + "touze147", + "SphinxKnight", + "DASenkiv", + "qqwweeaassdd", + "rinbik", + "Katarzina", + "laion220995", + "kzotoff", + "WispProxy", + "KysaKey", + "Reiider", + "Grumvol", + "indiefishman", + "romannebesny", + "dstereo", + "rin-nas", + "fscholz", + "keika", + "teoli", + "wilddeer", + "uleming", + "Odysseus" ] }, - "Web/HTTP/Заголовки/ETag": { - "modified": "2020-10-15T22:02:38.948Z", + "Web/JavaScript/Guide/Regular_Expressions/Assertions": { + "modified": "2020-03-12T19:49:10.003Z", "contributors": [ - "dimatretyak", - "vetraz", - "curdwithraisins", - "Creepypoke" + "AliaksandrZahorski" ] }, - "Web/HTTP/Заголовки/Expect": { - "modified": "2019-03-23T22:11:58.063Z", + "Web/JavaScript/Guide/Regular_Expressions/Character_Classes": { + "modified": "2020-06-17T18:30:16.759Z", "contributors": [ - "AlexeyVasilievE" + "dknight" ] }, - "Web/HTTP/Заголовки/Expires": { - "modified": "2020-10-15T21:52:39.059Z", + "Web/JavaScript/Guide/Text_formatting": { + "modified": "2020-03-12T19:42:07.543Z", "contributors": [ - "tjbulick", - "mrmlnc", - "MihLeonid", - "kobylin" + "pirimow", + "Aparin", + "drugoi", + "Grumvol", + "redishko", + "PavelG94", + "Prographer" ] }, - "Web/HTTP/Заголовки/Host": { - "modified": "2020-10-15T22:14:52.160Z", + "Web/JavaScript/Guide/Working_with_Objects": { + "modified": "2020-03-12T19:37:53.984Z", "contributors": [ - "vugluskr", - "vadjradanta" + "mikhail.makarov", + "dyaroman", + "alex_wert_and", + "logty3", + "tonkushin", + "m0nclous", + "secretarius", + "rinbik", + "injashkin", + "alyokhander", + "pathliving", + "Siteograf", + "Matters", + "Megabyteceer", + "atlonis", + "agrygoriev", + "hawkridge", + "NobbsNobby", + "Grumvol", + "TrigDevelopment", + "jigs12", + "vzhikness", + "fscholz", + "walkman2058", + "yekver", + "teoli", + "Mxtnr", + "dimko_desu", + "Vlad.Abdullin", + "uleming" ] }, - "Web/HTTP/Заголовки/If-Match": { - "modified": "2020-10-15T21:54:39.304Z", + "Web/JavaScript/Inheritance_and_the_prototype_chain": { + "modified": "2020-08-29T20:34:02.593Z", "contributors": [ - "AlexeyVasilievE" + "sozdanbogom40", + "shevchenko", + "SadTomCat", + "Nick_Pershin", + "dudinsky", + "Shemil95", + "SedovDP", + "aliaksandr-s", + "ChesterFobitt", + "Saviloff", + "Kapiroska", + "fscholz", + "xxxxx0438", + "SRastrigin", + "Natalya_Surikova", + "Rast1234", + "teoli" ] }, - "Web/HTTP/Заголовки/If-Modified-Since": { - "modified": "2020-10-15T21:54:34.736Z", + "Web/JavaScript/JavaScript_technologies_overview": { + "modified": "2020-03-12T19:37:57.231Z", "contributors": [ + "jynweythek", "chrisdavidmills", - "vykulakov", - "jellymary", - "AlexeyVasilievE" + "miirinjej", + "kulakowka", + "curdwithraisins", + "sersalex", + "fscholz", + "kichik", + "askhat", + "ixidor", + "uleming" ] }, - "Web/HTTP/Заголовки/If-Unmodified-Since": { - "modified": "2020-10-15T21:54:34.091Z", + "Web/JavaScript/Language_Resources": { + "modified": "2020-03-12T19:37:58.256Z", "contributors": [ - "Rin15", - "jellymary", - "AlexeyVasilievE" + "nnragmailcom", + "fscholz", + "teoli", + "uleming" ] }, - "Web/HTTP/Заголовки/Last-Modified": { - "modified": "2020-10-15T22:15:38.253Z", + "Web/JavaScript/Memory_Management": { + "modified": "2020-07-14T20:08:19.176Z", "contributors": [ - "ilyachase" + "irustm", + "ZeroUnderscoreOu", + "nikolaifedorov", + "vaeum", + "sashashakun", + "fscholz", + "vitkarpov", + "teoli", + "Nick_Pershin", + "nurbek.ab" ] }, - "Web/HTTP/Заголовки/Origin": { - "modified": "2020-10-15T22:01:53.616Z", + "Web/JavaScript/Reference": { + "modified": "2020-03-12T19:36:05.593Z", "contributors": [ - "crabovwik" + "Aleksej", + "Mingun", + "teoli", + "Ladislas", + "pashak" ] }, - "Web/HTTP/Заголовки/Pragma": { - "modified": "2020-10-15T22:23:06.217Z", + "Web/JavaScript/Reference/Classes": { + "modified": "2020-11-02T03:27:06.842Z", "contributors": [ - "OlegSo" + "ITheCorgi", + "blackbrain2009", + "denys.marytchak", + "PaulineNemchak", + "SphinxKnight", + "AnarhistMS", + "YozhEzhi", + "sahmildzhakeev", + "jainashur", + "CaptainCrocus", + "domstrueboy", + "Muffassa", + "Sajag", + "Gamesurf", + "Piterden", + "pathliving", + "alienalien13", + "DyckGerman", + "animhotep", + "feonit", + "zasipin", + "InsidiousClu", + "KTatyana", + "ViZhe", + "sergeymakoveev", + "PinkaminaDianePie", + "RoM4iK", + "sasd97", + "seedofjoy", + "torbasow", + "krest88", + "fscholz" ] }, - "Web/HTTP/Заголовки/Range": { - "modified": "2020-10-15T22:23:56.930Z", + "Web/JavaScript/Reference/Classes/constructor": { + "modified": "2020-11-02T06:02:34.419Z", "contributors": [ - "ismorozs" + "ITheCorgi", + "S25AI", + "Bobsans", + "Paul_Yuhnovich", + "galynag", + "dood" ] }, - "Web/HTTP/Заголовки/Referer": { - "modified": "2020-10-15T22:08:22.897Z", + "Web/JavaScript/Reference/Classes/extends": { + "modified": "2020-03-12T19:46:03.525Z", "contributors": [ - "stonetrooper" + "Nexwich", + "Vlad160", + "Piterden", + "meridos", + "Halkyon", + "Kozhemyak", + "slayermass" ] }, - "Web/HTTP/Заголовки/Retry-After": { - "modified": "2020-10-15T22:04:40.732Z", + "Web/JavaScript/Reference/Classes/static": { + "modified": "2020-10-15T21:34:19.682Z", "contributors": [ - "TaizoGem" + "vydayko", + "Bobsans", + "evilive3000", + "andrey-gnl", + "Hydrock", + "Dmitrii_Aleksandrov", + "torbasow", + "terranisu", + "Witadol" ] }, - "Web/HTTP/Заголовки/Set-Cookie": { - "modified": "2020-10-15T22:22:30.848Z", + "Web/JavaScript/Reference/Deprecated_and_obsolete_features": { + "modified": "2020-03-12T19:48:57.173Z", "contributors": [ - "wadzari", - "Artemeey", - "ehpc", - "YogSotot" + "boxa6" ] }, - "Web/HTTP/Заголовки/Strict-Transport-Security": { - "modified": "2020-10-15T22:23:39.989Z", + "Web/JavaScript/Reference/Errors": { + "modified": "2020-03-12T19:44:11.764Z", "contributors": [ - "Bargamut", - "s1lver", - "curdwithraisins" + "superpuper32", + "fscholz" ] }, - "Web/HTTP/Заголовки/Vary": { - "modified": "2020-10-15T22:21:15.515Z", + "Web/JavaScript/Reference/Errors/Already_has_pragma": { + "modified": "2020-03-12T19:48:44.607Z", "contributors": [ - "onmotion" + "MakarovDs777" ] }, - "Web/HTTP/Заголовки/X-Content-Type-Options": { - "modified": "2020-10-15T22:16:15.365Z", + "Web/JavaScript/Reference/Errors/Array_sort_argument": { + "modified": "2020-03-12T19:48:40.421Z", "contributors": [ - "WhiteApfel" + "MakarovDs777" ] }, - "Web/HTTP/Заголовки/X-Forwarded-For": { - "modified": "2019-03-18T20:52:28.146Z", + "Web/JavaScript/Reference/Errors/Bad_octal": { + "modified": "2020-03-12T19:46:46.233Z", "contributors": [ - "krigar1184", - "iliatcymbal" + "Pandemoniumus" ] }, - "Web/HTTP/Заголовки/X-XSS-Protection": { - "modified": "2020-10-15T22:01:31.139Z", + "Web/JavaScript/Reference/Errors/Bad_radix": { + "modified": "2020-03-12T19:47:16.966Z", "contributors": [ - "n00b" + "KTatyana", + "varyag01" ] }, - "Web/HTTP/Куки": { - "modified": "2019-07-16T04:58:27.981Z", + "Web/JavaScript/Reference/Errors/Bad_regexp_flag": { + "modified": "2020-03-12T19:47:09.430Z", "contributors": [ - "mrkutin", - "saitonakamura", - "levi2ki", - "GraceAredel", - "isildurpk", - "abmokin", - "serieznyi", - "mariag" + "hahanova" ] }, - "Web/HTTP/Кэширование": { - "modified": "2020-06-23T16:53:43.781Z", + "Web/JavaScript/Reference/Errors/Bad_return_or_yield": { + "modified": "2020-03-12T19:48:14.916Z", "contributors": [ - "Vyprichenko", - "DeltaSPb", - "oleg3280", - "arturparkhisenko", - "gummeah", - "mariag", - "koks" + "KTatyana" ] }, - "Web/JavaScript": { - "modified": "2020-10-11T19:17:39.227Z", + "Web/JavaScript/Reference/Errors/Called_on_incompatible_type": { + "modified": "2020-03-12T19:48:52.848Z", "contributors": [ - "Zulcom", - "dknight", - "ryabv", - "QuasiStellar", - "cypper", - "SphinxKnight", - "bakugod", - "Diana_Makarevich", - "tshemsedinov", - "Geloosa", - "drxwat", - "nllsdfx", - "kdex", - "Sviat", - "pk.prog", - "BychekRU", - "L18-666B", - "Saviloff", - "uleming", - "Feschenko", - "IgorGilyazov", - "anton-petrov", - "teoli", - "iAchilles", - "Ladislas", - "researcher", - "Dionys", - "user01", - "karasiov", - "Niquola", - "Megapotz", - "Knyaz Vladimir" + "palpich", + "MakarovDs777", + "Toshakins" ] }, - "Web/JavaScript/A_re-introduction_to_JavaScript": { - "modified": "2020-10-21T01:20:45.167Z", + "Web/JavaScript/Reference/Errors/Cant_access_lexical_declaration_before_init": { + "modified": "2020-03-12T19:47:46.173Z", "contributors": [ - "chimit", - "korefusha", - "Kamil-Zakiev", - "EgorChernik", - "aleshkanet", - "CeH9", - "MerkurevSergei", - "shtorin", - "Megabyteceer", - "gudkovdanila", - "pk.prog", - "fscholz", - "forestbird", - "Saviloff", - "Instigator", - "shapoval", - "AlexChuev", - "razarusu", - "kolyuchii", - "PavelGrishaev", - "teoli", - "franza", - "PROgrammaster", - "sergey_tikhonov", - "Dart" + "rsvato" ] }, - "Web/JavaScript/Closures": { - "modified": "2020-11-13T09:42:08.066Z", + "Web/JavaScript/Reference/Errors/Cant_access_property": { + "modified": "2020-03-12T19:48:40.635Z", "contributors": [ - "chmsv", - "0NotNull", - "SamTLT", - "Nikitazharkij", - "aprinciple", - "OlegMingaleev", - "demid088", - "wbamberg", - "stranger777", - "borisqua", - "Stejok", - "sersalex", - "meecrobe", - "Megabyteceer", - "TaKo13", - "Saviloff", - "Witadol", - "thetekst", - "fscholz", - "iGanzai", - "khorpyakov", - "ivan.p", - "AlekseyGoryansky", - "AlexKucher", - "mcmimik", - "teoli", - "CJohn" + "MakarovDs777" ] }, - "Web/JavaScript/Data_structures": { - "modified": "2020-10-08T08:53:54.371Z", + "Web/JavaScript/Reference/Errors/Cant_assign_to_property": { + "modified": "2020-11-09T16:55:40.780Z", "contributors": [ - "nikolasmelui", - "wentout", - "sashakrauzer", - "faramozzayw", - "Eugeno", - "itsEffy", - "meafmira", - "artrudov", - "miiixsc", - "RomanBykov", - "romannovikov", - "pathliving", - "rockad", - "foobar42", - "letry", - "Megabyteceer", - "kmetto", - "TaKo13", - "alfaslash", - "markgraydev", - "Leo240", - "KANBY", - "fscholz", - "jaguardev", - "teoli", - "dunmaksim", - "uleming" + "tukumann" ] }, - "Web/JavaScript/Enumerability_and_ownership_of_properties": { - "modified": "2020-03-12T19:43:05.408Z", + "Web/JavaScript/Reference/Errors/Cant_define_property_object_not_extensible": { + "modified": "2020-03-12T19:48:37.533Z", "contributors": [ - "Saviloff" + "Zulcom", + "MakarovDs777" ] }, - "Web/JavaScript/Equality_comparisons_and_sameness": { - "modified": "2020-03-12T19:42:53.063Z", + "Web/JavaScript/Reference/Errors/Cant_delete": { + "modified": "2020-03-12T19:48:41.016Z", "contributors": [ - "HTMan", - "CodeLookBook", - "sgrogov", - "Zarwlar", - "Saviloff", - "Witadol" + "MakarovDs777" ] }, - "Web/JavaScript/EventLoop": { - "modified": "2020-03-29T11:58:13.454Z", + "Web/JavaScript/Reference/Errors/Cant_redefine_property": { + "modified": "2020-03-12T19:48:43.526Z", "contributors": [ - "GalustOsipyan", - "nemrosim", - "cgehuzi", - "AnDeVerin", - "letovlive", - "rgrtuleague", - "IlyaMokin", - "thefasttracker", - "RusPosevkin", - "6thSence", - "andrIvash", - "ivanlemeshev", - "beskrovnykh", - "forestbird", - "Saviloff", - "pashutk", - "fscholz", - "im7mortal" + "MakarovDs777" ] }, - "Web/JavaScript/Guide": { - "modified": "2020-10-30T03:49:38.404Z", + "Web/JavaScript/Reference/Errors/Cyclic_object_value": { + "modified": "2020-10-19T11:06:58.196Z", "contributors": [ - "ksam", - "callisto1337", - "VerkholaAlex", - "T1mL3arn", - "pk.prog", - "BychekRU", - "xmalinov", - "Saviloff", - "HaukIce", - "pashutk", - "astra1", - "Yuriy-Ka", - "Aleksej", - "fscholz", - "dtretyakov", - "teoli", - "danielgn96" + "sovushka-utrom", + "MakarovDs777" ] }, - "Web/JavaScript/Guide/About": { - "modified": "2019-05-16T15:03:00.750Z", + "Web/JavaScript/Reference/Errors/Dead_object": { + "modified": "2020-03-12T19:48:38.148Z", "contributors": [ - "wbamberg", - "BychekRU", - "fscholz", - "teoli", - "smfd", - "uleming" + "MakarovDs777" ] }, - "Web/JavaScript/Guide/Control_flow_and_error_handling": { - "modified": "2020-11-06T04:41:33.787Z", + "Web/JavaScript/Reference/Errors/Delete_in_strict_mode": { + "modified": "2020-03-12T19:48:34.125Z", "contributors": [ - "ksam", - "Japaka90", - "pk.prog", - "igor4949i", - "fscholz", - "IgorGilyazov", - "teoli", - "uleming" + "Akh-rman", + "MakarovDs777" ] }, - "Web/JavaScript/Guide/Details_of_the_Object_Model": { - "modified": "2020-03-18T16:30:12.782Z", + "Web/JavaScript/Reference/Errors/Deprecated_String_generics": { + "modified": "2020-03-12T19:48:16.347Z", "contributors": [ - "HardKullez", - "qwerty-wasd", - "imalyavskiy", - "Davidnadejdin", - "SedovDP", - "metelskiy", - "wbamberg", - "rinbik", - "SphinxKnight", - "toolX", - "vherever", - "Megabyteceer", - "ndrsrv", - "NobbsNobby", - "Saviloff", - "makdeb", - "fscholz", - "esskia", - "ivan.p" + "KTatyana" ] }, - "Web/JavaScript/Guide/Expressions_and_Operators": { - "modified": "2020-03-12T19:39:43.277Z", + "Web/JavaScript/Reference/Errors/Deprecated_caller_or_arguments_usage": { + "modified": "2020-03-12T19:48:07.207Z", "contributors": [ - "mikhail.makarov", - "olegsorokin", - "Megabyteceer", - "pk.prog", - "Grumvol", + "simonprod", + "MakarovDs777", + "Akh-rman" + ] + }, + "Web/JavaScript/Reference/Errors/Deprecated_expression_closures": { + "modified": "2020-03-12T19:48:53.985Z", + "contributors": [ + "MakarovDs777" + ] + }, + "Web/JavaScript/Reference/Errors/Deprecated_octal": { + "modified": "2020-03-12T19:48:36.042Z", + "contributors": [ + "MakarovDs777", + "ialexi-bl" + ] + }, + "Web/JavaScript/Reference/Errors/Deprecated_source_map_pragma": { + "modified": "2020-03-12T19:46:14.659Z", + "contributors": [ + "medianex" + ] + }, + "Web/JavaScript/Reference/Errors/Deprecated_toLocaleFormat": { + "modified": "2020-03-12T19:48:53.962Z", + "contributors": [ + "MakarovDs777" + ] + }, + "Web/JavaScript/Reference/Errors/Equal_as_assign": { + "modified": "2020-03-12T19:48:37.445Z", + "contributors": [ + "MakarovDs777" + ] + }, + "Web/JavaScript/Reference/Errors/For-each-in_loops_are_deprecated": { + "modified": "2020-03-12T19:48:56.664Z", + "contributors": [ + "MakarovDs777" + ] + }, + "Web/JavaScript/Reference/Errors/Getter_only": { + "modified": "2020-03-12T19:48:43.409Z", + "contributors": [ + "MakarovDs777" + ] + }, + "Web/JavaScript/Reference/Errors/Identifier_after_number": { + "modified": "2020-03-12T19:48:34.042Z", + "contributors": [ + "MakarovDs777" + ] + }, + "Web/JavaScript/Reference/Errors/Illegal_character": { + "modified": "2020-03-12T19:46:55.549Z", + "contributors": [ + "Agaff.fm", + "milothea" + ] + }, + "Web/JavaScript/Reference/Errors/Invalid_array_length": { + "modified": "2020-03-12T19:46:53.627Z", + "contributors": [ + "xenikopa" + ] + }, + "Web/JavaScript/Reference/Errors/Invalid_assignment_left-hand_side": { + "modified": "2020-03-12T19:46:49.095Z", + "contributors": [ + "KTatyana", + "evmnn" + ] + }, + "Web/JavaScript/Reference/Errors/Invalid_const_assignment": { + "modified": "2020-03-12T19:48:42.020Z", + "contributors": [ + "MakarovDs777" + ] + }, + "Web/JavaScript/Reference/Errors/Invalid_date": { + "modified": "2020-03-12T19:47:15.198Z", + "contributors": [ + "Logiiiin", + "Cronofaq" + ] + }, + "Web/JavaScript/Reference/Errors/Invalid_for-in_initializer": { + "modified": "2020-03-12T19:48:36.053Z", + "contributors": [ + "Akh-rman", + "MakarovDs777" + ] + }, + "Web/JavaScript/Reference/Errors/Invalid_for-of_initializer": { + "modified": "2020-03-12T19:47:46.050Z", + "contributors": [ + "Akh-rman", + "rsvato" + ] + }, + "Web/JavaScript/Reference/Errors/JSON_bad_parse": { + "modified": "2020-03-12T19:47:51.119Z", + "contributors": [ + "Akh-rman", + "djigach" + ] + }, + "Web/JavaScript/Reference/Errors/Malformed_URI": { + "modified": "2020-03-12T19:47:10.234Z", + "contributors": [ + "Logiiiin", + "hunty" + ] + }, + "Web/JavaScript/Reference/Errors/Malformed_formal_parameter": { + "modified": "2020-03-12T19:47:59.198Z", + "contributors": [ + "KTatyana" + ] + }, + "Web/JavaScript/Reference/Errors/Missing_bracket_after_list": { + "modified": "2020-03-12T19:47:12.419Z", + "contributors": [ + "KTatyana", + "kolyuchii" + ] + }, + "Web/JavaScript/Reference/Errors/Missing_colon_after_property_id": { + "modified": "2020-03-12T19:47:16.697Z", + "contributors": [ + "Logiiiin" + ] + }, + "Web/JavaScript/Reference/Errors/Missing_curly_after_function_body": { + "modified": "2020-03-12T19:48:03.575Z", + "contributors": [ + "KTatyana" + ] + }, + "Web/JavaScript/Reference/Errors/Missing_curly_after_property_list": { + "modified": "2020-03-12T19:47:15.796Z", + "contributors": [ + "KTatyana", + "varyag01" + ] + }, + "Web/JavaScript/Reference/Errors/Missing_formal_parameter": { + "modified": "2020-03-12T19:48:33.984Z", + "contributors": [ + "MakarovDs777" + ] + }, + "Web/JavaScript/Reference/Errors/Missing_initializer_in_const": { + "modified": "2020-03-12T19:47:18.266Z", + "contributors": [ + "Logiiiin" + ] + }, + "Web/JavaScript/Reference/Errors/Missing_name_after_dot_operator": { + "modified": "2020-03-12T19:48:36.581Z", + "contributors": [ + "MakarovDs777" + ] + }, + "Web/JavaScript/Reference/Errors/Missing_parenthesis_after_argument_list": { + "modified": "2020-03-12T19:45:27.217Z", + "contributors": [ + "richandhandsomeman" + ] + }, + "Web/JavaScript/Reference/Errors/Missing_parenthesis_after_condition": { + "modified": "2020-03-12T19:47:08.319Z", + "contributors": [ + "thepocp" + ] + }, + "Web/JavaScript/Reference/Errors/Missing_semicolon_before_statement": { + "modified": "2020-03-12T19:46:03.538Z", + "contributors": [ + "KTatyana", + "SedovDP", + "Sparks" + ] + }, + "Web/JavaScript/Reference/Errors/More_arguments_needed": { + "modified": "2020-03-12T19:46:14.923Z", + "contributors": [ + "thepocp" + ] + }, + "Web/JavaScript/Reference/Errors/Negative_repetition_count": { + "modified": "2020-03-12T19:47:21.952Z", + "contributors": [ + "Logiiiin" + ] + }, + "Web/JavaScript/Reference/Errors/No_non-null_object": { + "modified": "2020-03-12T19:48:41.071Z", + "contributors": [ + "MakarovDs777" + ] + }, + "Web/JavaScript/Reference/Errors/No_properties": { + "modified": "2020-03-12T19:48:10.284Z", + "contributors": [ + "KTatyana" + ] + }, + "Web/JavaScript/Reference/Errors/No_variable_name": { + "modified": "2020-03-12T19:47:58.181Z", + "contributors": [ + "KTatyana" + ] + }, + "Web/JavaScript/Reference/Errors/Non_configurable_array_element": { + "modified": "2020-03-12T19:48:37.262Z", + "contributors": [ + "MakarovDs777" + ] + }, + "Web/JavaScript/Reference/Errors/Not_a_codepoint": { + "modified": "2020-03-12T19:47:08.221Z", + "contributors": [ + "KTatyana", + "milothea" + ] + }, + "Web/JavaScript/Reference/Errors/Not_a_constructor": { + "modified": "2020-03-12T19:48:26.755Z", + "contributors": [ + "grebenyukov" + ] + }, + "Web/JavaScript/Reference/Errors/Not_a_function": { + "modified": "2020-03-12T19:44:14.870Z", + "contributors": [ + "merelj", + "elscept", + "winvano", + "vladyslavnes", + "MonX94", + "eedmast", + "s1lver" + ] + }, + "Web/JavaScript/Reference/Errors/Not_defined": { + "modified": "2020-03-12T19:45:01.771Z", + "contributors": [ + "Nik1tasm", + "irodger", + "MrDaedra", + "KurumiToki", + "alexfromvl", + "topcomfort" + ] + }, + "Web/JavaScript/Reference/Errors/Precision_range": { + "modified": "2020-03-12T19:46:12.947Z", + "contributors": [ + "KTatyana", + "rbetristha" + ] + }, + "Web/JavaScript/Reference/Errors/Property_access_denied": { + "modified": "2020-03-12T19:46:14.706Z", + "contributors": [ + "thepocp" + ] + }, + "Web/JavaScript/Reference/Errors/Read-only": { + "modified": "2020-03-12T19:48:38.316Z", + "contributors": [ + "MakarovDs777" + ] + }, + "Web/JavaScript/Reference/Errors/Redeclared_parameter": { + "modified": "2020-03-12T19:48:00.985Z", + "contributors": [ + "KTatyana" + ] + }, + "Web/JavaScript/Reference/Errors/Reduce_of_empty_array_with_no_initial_value": { + "modified": "2020-03-12T19:48:40.523Z", + "contributors": [ + "MakarovDs777" + ] + }, + "Web/JavaScript/Reference/Errors/Reserved_identifier": { + "modified": "2020-03-12T19:48:30.540Z", + "contributors": [ + "FromQwghlm" + ] + }, + "Web/JavaScript/Reference/Errors/Resulting_string_too_large": { + "modified": "2020-03-12T19:47:15.830Z", + "contributors": [ + "Logiiiin" + ] + }, + "Web/JavaScript/Reference/Errors/Stmt_after_return": { + "modified": "2020-03-12T19:44:12.151Z", + "contributors": [ + "Logiiiin", + "pk.prog", + "naudachu", + "s1lver" + ] + }, + "Web/JavaScript/Reference/Errors/Strict_Non_Simple_Params": { + "modified": "2020-03-12T19:48:33.429Z", + "contributors": [ + "ialexi-bl", + "MakarovDs777" + ] + }, + "Web/JavaScript/Reference/Errors/Too_much_recursion": { + "modified": "2020-03-12T19:46:15.435Z", + "contributors": [ + "thepocp" + ] + }, + "Web/JavaScript/Reference/Errors/Typed_array_invalid_arguments": { + "modified": "2020-03-12T19:48:42.436Z", + "contributors": [ + "fuggy", + "MakarovDs777" + ] + }, + "Web/JavaScript/Reference/Errors/Undeclared_var": { + "modified": "2020-03-12T19:47:38.776Z", + "contributors": [ + "Akh-rman", + "Matthew11770" + ] + }, + "Web/JavaScript/Reference/Errors/Undefined_prop": { + "modified": "2020-03-12T19:47:58.221Z", + "contributors": [ + "KTatyana" + ] + }, + "Web/JavaScript/Reference/Errors/Unexpected_token": { + "modified": "2020-03-12T19:46:02.532Z", + "contributors": [ + "KTatyana", + "NemchinovSergey", + "Sparks" + ] + }, + "Web/JavaScript/Reference/Errors/Unexpected_type": { + "modified": "2020-03-12T19:45:23.586Z", + "contributors": [ + "DanyaSWorlD" + ] + }, + "Web/JavaScript/Reference/Errors/Unnamed_function_statement": { + "modified": "2020-03-12T19:48:37.361Z", + "contributors": [ + "Akh-rman", + "MakarovDs777" + ] + }, + "Web/JavaScript/Reference/Errors/Unterminated_string_literal": { + "modified": "2020-03-12T19:48:38.047Z", + "contributors": [ + "MakarovDs777" + ] + }, + "Web/JavaScript/Reference/Errors/in_operator_no_object": { + "modified": "2020-03-12T19:48:40.403Z", + "contributors": [ + "MakarovDs777" + ] + }, + "Web/JavaScript/Reference/Errors/invalid_right_hand_side_instanceof_operand": { + "modified": "2020-03-12T19:48:41.158Z", + "contributors": [ + "MakarovDs777" + ] + }, + "Web/JavaScript/Reference/Errors/is_not_iterable": { + "modified": "2020-03-12T19:48:36.606Z", + "contributors": [ + "MakarovDs777" + ] + }, + "Web/JavaScript/Reference/Functions": { + "modified": "2020-03-12T19:39:49.358Z", + "contributors": [ + "KoS57", + "nikbelikov", + "SmogHard", + "forestbird", + "teoli", + "dtretyakov" + ] + }, + "Web/JavaScript/Reference/Functions/Arrow_functions": { + "modified": "2020-10-15T21:31:20.608Z", + "contributors": [ + "MerkUriy", + "iFeltz", + "kliuchyk", + "kkxley", + "coxdn", + "Sajag", + "animhotep", + "vibecode", + "Neiromaster", + "Siteograf", + "TotalAMD", + "bskydive", + "seriouslyfluffy", + "dst", + "vitya-ne", + "theViktor1990", + "uleming", + "kutase123", + "pashutk", + "dtretyakov" + ] + }, + "Web/JavaScript/Reference/Functions/Default_parameters": { + "modified": "2020-10-15T21:31:19.263Z", + "contributors": [ + "torbasow", + "ic8550", + "ekirpichyov", + "SphinxKnight", + "I-O", + "esusekov", + "dtretyakov" + ] + }, + "Web/JavaScript/Reference/Functions/Rest_parameters": { + "modified": "2020-11-24T01:31:54.419Z", + "contributors": [ + "almaceleste", + "CLoud-Maker", + "ekirpichyov", + "jt3k", + "IlyaMokin", + "forestbird", + "dtretyakov", + "fscholz", + "EgorSinitcin" + ] + }, + "Web/JavaScript/Reference/Functions/arguments": { + "modified": "2020-10-15T21:34:47.356Z", + "contributors": [ + "sashakrauzer", + "Ziserman", + "boxa6", + "dima74", + "KTatyana", + "Olovyanch", + "uleming", "BychekRU", - "Leo240", + "fscholz" + ] + }, + "Web/JavaScript/Reference/Functions/arguments/callee": { + "modified": "2020-03-12T19:44:41.002Z", + "contributors": [ + "madsps", + "lkazberova", + "In4in" + ] + }, + "Web/JavaScript/Reference/Functions/arguments/length": { + "modified": "2020-03-12T19:41:22.682Z", + "contributors": [ + "evgenevna22", + "BychekRU" + ] + }, + "Web/JavaScript/Reference/Functions/get": { + "modified": "2020-10-15T21:43:29.042Z", + "contributors": [ + "ankormoreankor", + "WinterSilence", + "YozhEzhi", + "ipoluhin", + "metelskiy", + "kukuruznik04", + "ArtyomGilevich", + "andrey-gnl", + "pierreneter", + "etokareva" + ] + }, + "Web/JavaScript/Reference/Functions/set": { + "modified": "2020-10-15T21:49:47.173Z", + "contributors": [ + "SerzN1", + "severin-d", + "PaulineNemchak", + "serzero2007", + "d4rkm3z" + ] + }, + "Web/JavaScript/Reference/Global_Objects": { + "modified": "2020-03-12T19:36:07.217Z", + "contributors": [ + "AynurShauerman", + "InoY", + "akrom123", + "Mingun", + "teoli", + "pashak" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array": { + "modified": "2020-10-15T21:21:43.377Z", + "contributors": [ + "wbamberg", + "geek10010", + "rinbik", + "dima74", + "Yumeiro", + "superpuper32", + "kdex", + "terranisu", + "Mingun", + "teoli", + "yakovlevigorek", + "icw82", + "BedyNN", + "dbruant" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/@@iterator": { + "modified": "2019-03-23T23:03:21.064Z", + "contributors": [ + "SphinxKnight", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/@@species": { + "modified": "2020-10-15T22:06:58.667Z", + "contributors": [ + "DwarfMason" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/@@unscopables": { + "modified": "2020-10-15T22:00:26.446Z", + "contributors": [ + "fax1ty" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/Reduce": { + "modified": "2020-10-15T21:28:31.597Z", + "contributors": [ + "sborenko", + "nikolai-shabalin", + "likerRr", + "Ant-VAV", + "Metotron", + "fxrbfg", + "Ohar", + "slavablind91", + "AliaksandrSith", + "Riim", + "Mingun", + "NikitaK", + "Anton_Arestov" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/concat": { + "modified": "2020-10-15T21:29:20.106Z", + "contributors": [ + "rookhive", + "nikolai-shabalin", + "AlekseiTarasov", + "KTatyana", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/copyWithin": { + "modified": "2019-03-23T23:11:15.223Z", + "contributors": [ + "burashka", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/entries": { + "modified": "2019-09-20T08:30:17.656Z", + "contributors": [ + "burashka", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/every": { + "modified": "2020-10-15T21:22:11.253Z", + "contributors": [ + "VovanR", + "YozhEzhi", + "burashka", + "Mingun", + "teoli", + "hel-galdr" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/fill": { + "modified": "2020-10-15T21:29:20.455Z", + "contributors": [ + "iandr", + "nakhodkiin", + "nikolai-shabalin", + "alt-j", + "dima74", + "burashka", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/filter": { + "modified": "2020-10-15T21:29:22.486Z", + "contributors": [ + "almaceleste", + "Darth-pioner", + "nikolai-shabalin", + "Sinfiotli", + "burashka", + "Aleksej", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/find": { + "modified": "2020-10-15T21:29:21.073Z", + "contributors": [ + "tcheburator", + "drunk", + "matveyson", + "JorJeG", + "Metotron", + "sv-kozlov", + "OksanaKaragicheva", + "AlexeyMM", + "burashka", + "torbasow", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/findIndex": { + "modified": "2020-10-15T21:29:19.823Z", + "contributors": [ + "zhvirblis", + "S-le", + "burashka", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/flat": { + "modified": "2020-12-06T17:04:44.757Z", + "contributors": [ + "PaulineNemchak", + "ekirpichyov", + "geekjob", + "Akh-rman", + "Fellzo", + "vjachet" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/flatMap": { + "modified": "2020-10-15T22:10:06.829Z", + "contributors": [ + "dsrtF0x-git", + "InoY", + "taxidermic", + "Akh-rman", + "eof273", + "etroynov", + "dood" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/forEach": { + "modified": "2020-10-15T21:21:41.065Z", + "contributors": [ + "almaceleste", + "nikolai-shabalin", + "JorJeG", + "paulvoloschuk", + "kusonka", + "Mingun", + "Ajooluz", + "teoli", + "dunmaksim", + "IgorKlopov", + "ipetropolsky", + "John Wehin" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/from": { + "modified": "2020-10-15T21:28:50.020Z", + "contributors": [ + "ekirpichyov", + "drwatson1", + "JorJeG", + "kdex", + "Sergey.Stolnikov", + "burashka", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/includes": { + "modified": "2020-10-15T21:30:12.634Z", + "contributors": [ + "Yialo", + "Hronex", + "nikolai-shabalin", + "dima74", + "Setol", + "burashka", + "jwhitlock", + "dema", + "Mingun", + "fscholz" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/indexOf": { + "modified": "2020-10-15T21:29:27.163Z", + "contributors": [ + "zhvirblis", + "vlad-vorontsov", + "burashka", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/isArray": { + "modified": "2020-10-15T21:29:00.463Z", + "contributors": [ + "dudd1ts", + "JorJeG", + "Mingun", + "ivan_k" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/join": { + "modified": "2020-10-15T21:29:17.685Z", + "contributors": [ + "pk.prog", + "AlexeyOm", + "IslamA", + "Radiansz", + "mshykov", + "Mingun", + "teoli", + "Ajooluz" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/keys": { + "modified": "2020-10-15T21:29:27.000Z", + "contributors": [ + "nikolai-shabalin", + "burashka", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/lastIndexOf": { + "modified": "2020-10-15T21:29:27.046Z", + "contributors": [ + "nikolai-shabalin", + "burashka", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/length": { + "modified": "2020-10-15T21:29:17.654Z", + "contributors": [ + "ierehon1905", + "smlkA", + "Roman-Kosov", + "JorJeG", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/map": { + "modified": "2020-10-15T21:25:02.588Z", + "contributors": [ + "Dvash", + "nikolai-shabalin", + "JorJeG", + "ZeroUnderscoreOu", + "Jemdo", + "torbasow", + "Mingun", + "teoli", + "ilyamilosevic", + "Vhornets" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/of": { + "modified": "2020-10-15T21:29:22.065Z", + "contributors": [ + "ekirpichyov", + "Natalya_Surikova", + "burashka", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/pop": { + "modified": "2020-10-15T21:29:28.268Z", + "contributors": [ + "art-gur", + "KTatyana", + "torbasow", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/push": { + "modified": "2020-10-15T21:29:29.342Z", + "contributors": [ + "art-gur", "roma-derski", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/reduceRight": { + "modified": "2019-03-23T23:10:37.299Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/reverse": { + "modified": "2020-10-15T21:29:30.196Z", + "contributors": [ + "nikolai-shabalin", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/shift": { + "modified": "2019-03-18T21:11:15.103Z", + "contributors": [ + "UriShlomov", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/slice": { + "modified": "2020-11-30T07:23:00.434Z", + "contributors": [ + "chmsv", + "rulevadim", + "nikolai-shabalin", + "GraceAredel", + "Ollemesh", + "kdex", + "xaosxaos", + "Mol4ok", + "BychekRU", + "kroleg", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/some": { + "modified": "2020-10-15T21:22:10.601Z", + "contributors": [ + "ekirpichyov", + "VovanR", + "zhvirblis", + "Mingun", + "teoli", + "hel-galdr" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/sort": { + "modified": "2020-11-19T16:34:13.947Z", + "contributors": [ + "deepdarkness", + "YozhEzhi", + "dmivtr", + "JorJeG", + "Denis-Yeromenko", + "borm", + "vlad-vorontsov", + "grabus", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/splice": { + "modified": "2020-12-02T07:24:33.321Z", + "contributors": [ + "inva8de", + "Eskinnikita", + "zhvirblis", + "dimaqw", + "JohnnyJustDo", + "mshipov", + "terranisu", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/toLocaleString": { + "modified": "2019-03-23T23:10:25.595Z", + "contributors": [ + "IvanMorkva", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/toSource": { + "modified": "2019-03-23T23:10:31.696Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/toString": { + "modified": "2019-09-15T17:12:05.770Z", + "contributors": [ + "Glazomer", + "Ilya33", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/unshift": { + "modified": "2020-10-15T21:29:32.715Z", + "contributors": [ + "muxmux.ryzhinskiy", + "YozhEzhi", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Array/values": { + "modified": "2019-03-23T23:07:58.684Z", + "contributors": [ + "nakhodkiin", + "burashka", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/ArrayBuffer": { + "modified": "2019-04-21T10:54:59.612Z", + "contributors": [ + "solncebro", + "Bargamut", + "PaulShestakov", + "pashutk" + ] + }, + "Web/JavaScript/Reference/Global_Objects/ArrayBuffer/isView": { + "modified": "2020-10-15T22:21:50.519Z", + "contributors": [ + "shmel3" + ] + }, + "Web/JavaScript/Reference/Global_Objects/ArrayBuffer/slice": { + "modified": "2019-03-23T22:15:54.709Z", + "contributors": [ + "lazyexpert" + ] + }, + "Web/JavaScript/Reference/Global_Objects/AsyncFunction": { + "modified": "2019-03-23T22:09:52.218Z", + "contributors": [ + "Saiberbest" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Atomics": { + "modified": "2019-03-23T22:09:35.332Z", + "contributors": [ + "Kazakoff", + "Exseption", + "curdwithraisins" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Atomics/add": { + "modified": "2019-03-23T22:09:42.443Z", + "contributors": [ + "curdwithraisins" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Atomics/sub": { + "modified": "2019-03-23T22:09:32.642Z", + "contributors": [ + "curdwithraisins" + ] + }, + "Web/JavaScript/Reference/Global_Objects/BigInt": { + "modified": "2020-10-15T22:19:09.504Z", + "contributors": [ + "art-gur", + "bm12", + "sh7dm", + "3bl3gamer", + "Anna-Myzukina" + ] + }, + "Web/JavaScript/Reference/Global_Objects/BigInt/asIntN": { + "modified": "2020-10-15T22:20:36.621Z", + "contributors": [ + "faramozzayw" + ] + }, + "Web/JavaScript/Reference/Global_Objects/BigInt/asUintN": { + "modified": "2020-10-15T22:31:22.153Z", + "contributors": [ + "ascker0087" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Boolean": { + "modified": "2019-07-22T13:06:53.919Z", + "contributors": [ + "wbamberg", + "Denis-Yeromenko", + "villager", + "Aleksej", + "AlexChuev", + "Mingun", + "Troynov" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Boolean/toSource": { + "modified": "2019-03-23T23:08:31.932Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Boolean/toString": { + "modified": "2019-03-23T23:08:25.305Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Boolean/valueOf": { + "modified": "2019-03-23T23:08:35.008Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/DataView": { + "modified": "2020-10-15T22:07:01.854Z", + "contributors": [ + "MuradAz" + ] + }, + "Web/JavaScript/Reference/Global_Objects/DataView/setInt16": { + "modified": "2020-10-15T22:26:51.553Z", + "contributors": [ + "A-Zalt" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date": { + "modified": "2020-10-15T21:21:23.873Z", + "contributors": [ + "Lutsko.Aleksandr", + "sashakrauzer", + "denis_dubovitskiy", + "prinze77", + "boxa6", + "wbamberg", + "MerkUriy", + "dvapelnik", + "lanedis", + "Mingun", + "zasipin", + "liloi", + "teoli", + "Funkill", + "bvc3at" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/UTC": { + "modified": "2020-10-15T21:30:36.314Z", + "contributors": [ + "art-gur", + "Kogoruhn", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/getDate": { + "modified": "2020-11-23T09:29:17.949Z", + "contributors": [ + "Thr0TT1e", + "YozhEzhi", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/getDay": { + "modified": "2020-11-23T09:40:35.418Z", + "contributors": [ + "Thr0TT1e", + "YozhEzhi", + "pushandplay", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/getFullYear": { + "modified": "2020-11-23T09:25:53.294Z", + "contributors": [ + "Thr0TT1e", + "YozhEzhi", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/getHours": { + "modified": "2020-11-23T09:42:06.437Z", + "contributors": [ + "Thr0TT1e", + "YozhEzhi", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/getMilliseconds": { + "modified": "2020-11-23T09:43:47.925Z", + "contributors": [ + "Thr0TT1e", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/getMinutes": { + "modified": "2020-11-23T09:46:11.501Z", + "contributors": [ + "Thr0TT1e", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/getMonth": { + "modified": "2020-11-23T09:48:49.474Z", + "contributors": [ + "Thr0TT1e", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/getSeconds": { + "modified": "2020-11-23T09:50:13.502Z", + "contributors": [ + "Thr0TT1e", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/getTime": { + "modified": "2020-11-23T10:07:21.665Z", + "contributors": [ + "Thr0TT1e", + "YozhEzhi", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset": { + "modified": "2019-03-23T23:08:01.324Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/getUTCDate": { + "modified": "2019-03-23T23:07:51.614Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/getUTCDay": { + "modified": "2019-03-23T23:07:47.611Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/getUTCFullYear": { + "modified": "2019-03-23T23:07:46.134Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/getUTCHours": { + "modified": "2019-03-23T23:07:53.266Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/getUTCMilliseconds": { + "modified": "2019-03-23T23:07:39.074Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/getUTCMinutes": { + "modified": "2019-03-23T23:07:42.061Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/getUTCMonth": { + "modified": "2019-03-23T23:07:45.367Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/getUTCSeconds": { + "modified": "2019-03-23T23:07:43.174Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/getYear": { + "modified": "2020-10-15T21:30:40.324Z", + "contributors": [ + "YozhEzhi", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/now": { + "modified": "2020-10-15T21:30:36.867Z", + "contributors": [ + "art-gur", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/parse": { + "modified": "2019-10-24T09:44:34.488Z", + "contributors": [ + "alx-khramov", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/setDate": { + "modified": "2020-10-15T21:30:41.423Z", + "contributors": [ + "YozhEzhi", + "webkumo", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/setFullYear": { + "modified": "2019-03-23T23:07:39.254Z", + "contributors": [ + "kirilloid", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/setHours": { + "modified": "2019-03-23T23:07:43.801Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/setMilliseconds": { + "modified": "2019-03-23T23:07:39.901Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/setMinutes": { + "modified": "2019-03-23T23:07:42.239Z", + "contributors": [ + "Grundy", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/setMonth": { + "modified": "2019-08-28T08:27:33.855Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/setSeconds": { + "modified": "2019-03-23T23:07:43.395Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/setTime": { + "modified": "2019-03-23T23:07:49.178Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/setUTCDate": { + "modified": "2019-03-23T23:07:49.535Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/setUTCFullYear": { + "modified": "2019-03-23T23:07:46.690Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/setUTCHours": { + "modified": "2019-03-23T23:07:41.747Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/setUTCMilliseconds": { + "modified": "2019-03-23T23:07:43.019Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/setUTCMinutes": { + "modified": "2019-03-23T23:07:52.228Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/setUTCMonth": { + "modified": "2019-03-23T23:07:49.014Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/setUTCSeconds": { + "modified": "2019-03-23T23:07:49.949Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/setYear": { + "modified": "2020-10-15T21:30:50.607Z", + "contributors": [ + "YozhEzhi", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/toDateString": { + "modified": "2019-03-23T23:07:29.510Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/toGMTString": { + "modified": "2019-03-23T23:07:35.386Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/toISOString": { + "modified": "2019-03-23T23:07:33.750Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/toJSON": { + "modified": "2019-03-23T23:07:37.415Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString": { + "modified": "2019-03-18T21:14:44.198Z", + "contributors": [ + "Mingun", + "teoli", + "kup" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/toLocaleString": { + "modified": "2019-04-25T06:23:31.086Z", + "contributors": [ + "Ferguse", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/toLocaleTimeString": { + "modified": "2019-03-23T23:07:26.983Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/toSource": { + "modified": "2019-03-23T23:07:30.899Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/toString": { + "modified": "2019-03-23T23:07:27.147Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/toTimeString": { + "modified": "2020-10-15T21:30:50.319Z", + "contributors": [ + "art-gur", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/toUTCString": { + "modified": "2019-03-23T23:07:27.719Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Date/valueOf": { + "modified": "2019-03-23T23:07:24.461Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Error": { + "modified": "2020-10-15T21:30:29.342Z", + "contributors": [ + "Bakosa666", + "boxa6", + "mshutov", + "ZeroUnderscoreOu", + "Drugak", + "KTatyana", + "pk.prog", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Error/Stack": { + "modified": "2019-03-23T23:08:35.216Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Error/columnNumber": { + "modified": "2019-03-23T23:08:51.041Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Error/fileName": { + "modified": "2019-03-23T23:08:50.913Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Error/lineNumber": { + "modified": "2019-03-18T21:16:24.987Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Error/message": { + "modified": "2019-03-23T23:08:49.501Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Error/name": { + "modified": "2019-03-23T23:08:51.293Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Error/toSource": { + "modified": "2019-03-23T23:08:35.807Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Error/toString": { + "modified": "2019-03-23T23:08:36.104Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/EvalError": { + "modified": "2019-03-23T23:08:30.186Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Float32Array": { + "modified": "2020-10-15T21:41:15.793Z", + "contributors": [ + "av-dev", + "pk.prog", + "usernameak", + "savelichalex" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Float64Array": { + "modified": "2020-10-15T21:59:37.641Z", + "contributors": [ + "pk.prog" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Function": { + "modified": "2020-10-15T21:14:32.042Z", + "contributors": [ + "benzin_kanister", + "Yialo", + "CROGOT", + "boxa6", + "Mingun", + "teoli", + "Skorney" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Function/apply": { + "modified": "2020-03-13T10:22:12.516Z", + "contributors": [ + "rookhive", + "EVRUSIN", + "NovikovViktor", + "Natalya_Surikova", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Function/arguments": { + "modified": "2019-03-23T23:08:58.338Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Function/bind": { + "modified": "2019-03-23T23:11:14.089Z", + "contributors": [ + "vlad-vorontsov", + "alfaslash", + "IPri", + "mxxn", + "nikbelikov", + "rmaksim", + "Mingun", + "im7mortal", + "teoli", + "AlexyAV" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Function/call": { + "modified": "2019-10-11T04:40:04.178Z", + "contributors": [ + "vitaminX", + "Natalya_Surikova", + "Mingun", + "teoli", + "fscholz" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Function/caller": { + "modified": "2019-05-06T13:11:25.305Z", + "contributors": [ + "Neitrin", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Function/displayName": { + "modified": "2019-03-23T23:08:57.657Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Function/length": { + "modified": "2019-03-23T23:33:11.930Z", + "contributors": [ + "Mingun", + "teoli", + "maxmaximov" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Function/name": { + "modified": "2020-10-15T21:28:28.242Z", + "contributors": [ + "Simaleon", + "sashakrauzer", + "MerkUriy", + "volokolamskspb", + "Yialo", + "nakhodkiin", + "SphinxKnight", + "Mingun", + "teoli", + "Lord_Howe" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Function/toSource": { + "modified": "2019-03-23T23:08:53.546Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Function/toString": { + "modified": "2019-03-23T23:08:47.306Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Generator": { + "modified": "2020-12-08T04:46:07.883Z", + "contributors": [ + "bskydive", + "ahtohbi4", + "ygkorea" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Generator/next": { + "modified": "2020-10-15T22:22:50.166Z", + "contributors": [ + "ekirpichyov" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Generator/return": { + "modified": "2020-10-15T22:22:51.474Z", + "contributors": [ + "ekirpichyov" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Generator/throw": { + "modified": "2019-03-23T22:14:35.937Z", + "contributors": [ + "deman" + ] + }, + "Web/JavaScript/Reference/Global_Objects/GeneratorFunction": { + "modified": "2020-10-15T21:58:16.652Z", + "contributors": [ + "tilin97" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Infinity": { + "modified": "2020-10-15T21:29:55.866Z", + "contributors": [ + "boxa6", + "SphinxKnight", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Int16Array": { + "modified": "2020-10-15T21:59:37.929Z", + "contributors": [ + "pk.prog" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Int32Array": { + "modified": "2020-10-15T21:59:37.998Z", + "contributors": [ + "sh13max", + "pk.prog" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Int8Array": { + "modified": "2020-10-15T21:57:33.561Z", + "contributors": [ + "Glazomer", + "iliatcymbal" + ] + }, + "Web/JavaScript/Reference/Global_Objects/InternalError": { + "modified": "2019-03-23T23:08:28.849Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Intl": { + "modified": "2020-10-15T21:30:32.813Z", + "contributors": [ + "kserbez", + "boxa6", + "nrvru", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Intl/Collator": { + "modified": "2020-04-21T07:27:03.712Z", + "contributors": [ + "fscholz", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Intl/Collator/compare": { + "modified": "2020-04-21T07:27:03.594Z", + "contributors": [ + "fscholz", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Intl/Collator/resolvedOptions": { + "modified": "2020-04-21T07:27:03.396Z", + "contributors": [ + "fscholz", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Intl/Collator/supportedLocalesOf": { + "modified": "2020-04-21T07:27:03.568Z", + "contributors": [ + "fscholz", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat": { + "modified": "2020-11-07T18:13:37.841Z", + "contributors": [ + "Vladiatro", + "fscholz", + "Forshortmrmeth", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/format": { + "modified": "2020-04-21T09:00:46.926Z", + "contributors": [ + "fscholz", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/formatToParts": { + "modified": "2020-10-15T22:22:57.636Z", + "contributors": [ + "fscholz", + "ekirpichyov" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/resolvedOptions": { + "modified": "2020-04-21T09:00:46.731Z", + "contributors": [ + "fscholz", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/supportedLocalesOf": { + "modified": "2020-04-21T09:00:46.824Z", + "contributors": [ + "fscholz", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Intl/ListFormat": { + "modified": "2020-04-21T09:04:29.446Z", + "contributors": [ + "fscholz", + "Autapomorph" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat": { + "modified": "2020-10-15T21:30:31.049Z", + "contributors": [ + "fscholz", + "DmitryMakhnev", + "RUVATA", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/format": { + "modified": "2020-04-21T09:08:24.301Z", + "contributors": [ + "fscholz", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/resolvedOptions": { + "modified": "2020-04-21T09:08:24.157Z", + "contributors": [ + "fscholz", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/supportedLocalesOf": { + "modified": "2020-04-21T09:08:24.144Z", + "contributors": [ + "fscholz", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Intl/getCanonicalLocales": { + "modified": "2020-10-15T22:22:33.577Z", + "contributors": [ + "ekirpichyov" + ] + }, + "Web/JavaScript/Reference/Global_Objects/JSON": { + "modified": "2020-02-26T09:34:47.437Z", + "contributors": [ + "alexandersolovyov", + "deman", + "Mingun", + "fscholz" + ] + }, + "Web/JavaScript/Reference/Global_Objects/JSON/parse": { + "modified": "2019-10-04T12:11:00.231Z", + "contributors": [ + "catsAND", + "Mingun", + "teoli", + "Grundy" + ] + }, + "Web/JavaScript/Reference/Global_Objects/JSON/stringify": { + "modified": "2020-10-15T21:31:10.984Z", + "contributors": [ + "art-gur", + "alerkesi", + "brykov", + "a-tarasyuk", + "Mingun", + "igorklopov84", + "fullfs" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Map": { + "modified": "2020-10-15T21:31:18.471Z", + "contributors": [ + "altpoint", + "AndreyGlyan", + "fanich37", + "Dzvonek", + "teryaew", + "xobotyi", + "akmil", + "SphinxKnight", + "WispProxy", + "dtretyakov" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Map/@@species": { + "modified": "2019-03-23T22:09:16.930Z", + "contributors": [ + "WispProxy", + "ahtohbi4" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Map/clear": { + "modified": "2019-03-23T22:11:36.456Z", + "contributors": [ + "thepocp" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Map/delete": { + "modified": "2020-10-15T21:50:15.883Z", + "contributors": [ + "xobotyi", + "ahtohbi4", + "vesai" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Map/entries": { + "modified": "2019-09-29T09:44:45.397Z", + "contributors": [ + "evvs", + "rsarov", + "ahtohbi4" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Map/forEach": { + "modified": "2020-10-15T21:49:44.007Z", + "contributors": [ + "swa1ps", + "trueanqu", + "SomeoneDeployMe" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Map/get": { + "modified": "2020-10-15T21:55:36.338Z", + "contributors": [ + "dimon4ezzz", + "AndreyLipin", + "ahtohbi4" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Map/has": { + "modified": "2019-03-23T22:18:58.841Z", + "contributors": [ + "Ignat86" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Map/keys": { + "modified": "2019-03-23T22:09:06.332Z", + "contributors": [ + "ahtohbi4" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Map/set": { + "modified": "2019-07-08T16:59:23.175Z", + "contributors": [ + "elrostov", + "InoY", + "ahtohbi4" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Map/size": { + "modified": "2020-11-28T13:51:01.575Z", + "contributors": [ + "ialexi-bl", + "Yumeiro", + "reilag" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Map/values": { + "modified": "2019-03-23T22:09:12.314Z", + "contributors": [ + "ahtohbi4" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Math": { + "modified": "2020-10-15T21:26:14.248Z", + "contributors": [ + "sashakrauzer", + "S-le", + "Sliokkory", + "KSH-audibene", + "boxa6", + "Nexmean", + "MrEfrem", + "Mingun", + "teoli", + "kolyuchii", + "Ladislas", + "fscholz" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Math/E": { + "modified": "2019-03-23T23:02:51.965Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Math/LN10": { + "modified": "2019-03-23T23:06:02.231Z", + "contributors": [ + "Mingun", + "RyvkinSergey" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Math/LN2": { + "modified": "2019-03-23T23:02:57.181Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Math/LOG10E": { + "modified": "2019-03-23T23:02:52.129Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Math/LOG2E": { + "modified": "2019-03-23T23:03:01.940Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Math/PI": { + "modified": "2019-03-23T23:03:00.693Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Math/SQRT1_2": { + "modified": "2019-03-23T23:03:03.049Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Math/SQRT2": { + "modified": "2019-03-23T23:03:04.344Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Math/abs": { + "modified": "2020-10-15T21:26:16.639Z", + "contributors": [ + "KiraTheFirebird", + "YozhEzhi", + "Mingun", + "teoli", + "Ladislas" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Math/acos": { + "modified": "2019-03-23T23:21:02.503Z", + "contributors": [ + "Mingun", + "teoli", + "Ladislas" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Math/acosh": { + "modified": "2019-03-23T23:20:43.526Z", + "contributors": [ + "SphinxKnight", + "Mingun", + "teoli", + "Ladislas" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Math/asin": { + "modified": "2019-03-23T23:20:44.722Z", + "contributors": [ + "Mingun", + "teoli", + "Ladislas" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Math/asinh": { + "modified": "2019-03-23T23:20:44.301Z", + "contributors": [ + "SphinxKnight", + "Mingun", + "teoli", + "Ladislas" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Math/atan": { + "modified": "2019-03-23T23:20:39.232Z", + "contributors": [ + "Mingun", + "teoli", + "Ladislas" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Math/atan2": { + "modified": "2019-03-23T23:02:49.535Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Math/atanh": { + "modified": "2019-03-23T23:02:48.791Z", + "contributors": [ + "SphinxKnight", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Math/cbrt": { + "modified": "2019-11-18T17:15:18.856Z", + "contributors": [ + "Yaffle", + "SphinxKnight", + "Mingun", + "teoli", + "Ladislas" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Math/ceil": { + "modified": "2019-04-20T08:11:10.933Z", + "contributors": [ + "YozhEzhi", + "Minstel", + "kontimir", + "slollo", + "vysheradugi4", + "oPOCCOMAXAo", + "MrEfrem", + "Mingun", + "vskopuk", + "js-user" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Math/clz32": { + "modified": "2019-03-23T23:02:49.692Z", + "contributors": [ + "SphinxKnight", + "Yaffle", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Math/cos": { + "modified": "2019-03-23T23:02:49.360Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Math/cosh": { + "modified": "2019-03-23T23:02:45.491Z", + "contributors": [ + "SphinxKnight", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Math/exp": { + "modified": "2019-03-23T23:02:39.529Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Math/expm1": { + "modified": "2019-03-23T23:02:41.113Z", + "contributors": [ + "SphinxKnight", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Math/floor": { + "modified": "2019-10-07T20:49:57.401Z", + "contributors": [ + "sashakrauzer", + "long76", + "Soheevich", + "oPOCCOMAXAo", + "MrEfrem", + "Mingun", + "sovietmagic" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Math/fround": { + "modified": "2019-03-18T20:50:54.153Z", + "contributors": [ + "SphinxKnight", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Math/hypot": { + "modified": "2019-03-23T23:21:18.612Z", + "contributors": [ + "SphinxKnight", + "Mingun", + "teoli", + "Ladislas" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Math/imul": { + "modified": "2019-03-23T23:02:47.878Z", + "contributors": [ + "SphinxKnight", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Math/log": { + "modified": "2019-03-23T23:02:39.934Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Math/log10": { + "modified": "2019-03-23T23:02:40.124Z", + "contributors": [ + "SphinxKnight", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Math/log1p": { + "modified": "2019-03-23T23:02:43.071Z", + "contributors": [ + "SphinxKnight", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Math/log2": { + "modified": "2020-10-15T21:32:32.809Z", + "contributors": [ + "art-gur", + "SphinxKnight", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Math/max": { + "modified": "2020-01-23T12:52:57.037Z", + "contributors": [ + "Elivin", + "torbasow", + "Mingun", + "teoli", + "Ladislas" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Math/min": { + "modified": "2020-08-04T11:38:28.510Z", + "contributors": [ + "sergey.karavaev", + "Mingun", + "teoli", + "Ladislas" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Math/pow": { + "modified": "2019-03-23T23:02:42.644Z", + "contributors": [ "fscholz", - "denise", - "Corba" + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Math/random": { + "modified": "2020-10-15T21:30:33.217Z", + "contributors": [ + "ekirpichyov", + "Mitrr", + "Byte968", + "Flex301", + "Mingun", + "SandStorm" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Math/round": { + "modified": "2019-10-03T16:35:58.416Z", + "contributors": [ + "YozhEzhi", + "it4joy", + "Mingun", + "bungu" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Math/sign": { + "modified": "2019-03-23T23:21:05.525Z", + "contributors": [ + "SphinxKnight", + "Mingun", + "teoli", + "Ladislas" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Math/sin": { + "modified": "2019-03-23T23:02:45.848Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Math/sinh": { + "modified": "2019-03-23T23:02:41.582Z", + "contributors": [ + "SphinxKnight", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Math/sqrt": { + "modified": "2019-03-23T23:21:16.252Z", + "contributors": [ + "Maxim-Bernashevsky", + "Mingun", + "teoli", + "Ladislas" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Math/tan": { + "modified": "2019-03-23T23:02:44.705Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Math/tanh": { + "modified": "2019-03-23T23:02:37.791Z", + "contributors": [ + "SphinxKnight", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Math/trunc": { + "modified": "2020-10-15T21:32:38.007Z", + "contributors": [ + "opereverzeva", + "dkireev", + "SphinxKnight", + "vitaliylag", + "Danakt", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/NaN": { + "modified": "2020-10-15T21:29:55.593Z", + "contributors": [ + "kss555", + "boxa6", + "Gamesurf", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Number": { + "modified": "2020-10-15T21:26:52.210Z", + "contributors": [ + "chrisdavidmills", + "boxa6", + "wbamberg", + "peremenov", + "Mingun", + "teoli", + "Softarius" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Number/EPSILON": { + "modified": "2019-08-25T14:04:12.302Z", + "contributors": [ + "Yialo", + "biggieman", + "nakhodkiin", + "msalv", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER": { + "modified": "2020-10-15T21:30:30.029Z", + "contributors": [ + "bm12", + "art-gur", + "Yialo", + "SphinxKnight", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Number/MAX_VALUE": { + "modified": "2019-03-23T23:08:20.580Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Number/MIN_SAFE_INTEGER": { + "modified": "2019-08-25T14:03:53.234Z", + "contributors": [ + "Yialo", + "SphinxKnight", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Number/MIN_VALUE": { + "modified": "2019-03-23T23:08:15.441Z", + "contributors": [ + "evheniy", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Number/NEGATIVE_INFINITY": { + "modified": "2019-03-23T23:08:17.933Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Number/NaN": { + "modified": "2019-03-23T23:08:14.519Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Number/POSITIVE_INFINITY": { + "modified": "2019-03-23T23:08:18.273Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Number/isFinite": { + "modified": "2019-03-23T23:08:18.639Z", + "contributors": [ + "SphinxKnight", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Number/isInteger": { + "modified": "2020-10-15T21:30:30.076Z", + "contributors": [ + "art-gur", + "Yialo", + "SphinxKnight", + "parzhitsky", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Number/isNaN": { + "modified": "2020-10-15T21:30:30.857Z", + "contributors": [ + "JorJeG", + "Mingun" ] }, - "Web/JavaScript/Guide/Functions": { - "modified": "2020-04-18T01:17:09.834Z", + "Web/JavaScript/Reference/Global_Objects/Number/isSafeInteger": { + "modified": "2020-10-19T11:46:39.542Z", "contributors": [ - "Nevelskoy", - "shevchenko", - "trman", - "pirimow", - "BulavkinNN", - "kkxley", - "mikhail.makarov", - "Aparin", - "imalyavskiy", - "KoS57", - "prometium", - "jsteacat", - "yankovskiy", - "osmaav", - "postwj", - "d.zheleznov", - "kan.a", - "Sajag", - "sirkon", - "pathliving", - "thepocp", - "ValdemarTerte", - "GoliafRS", - "AlexeySuprun", - "Mainstand", - "Grumvol", - "DeekHalden", - "alitskevich", - "keffidesign", - "JuGeer", - "serhiyv", - "pashutk", - "roma-derski", + "alekskos", + "art-gur", + "Yialo", + "SphinxKnight", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Number/parseFloat": { + "modified": "2019-08-25T14:06:12.145Z", + "contributors": [ + "Yialo", + "SphinxKnight", + "KP0H", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Number/parseInt": { + "modified": "2020-10-15T21:30:29.202Z", + "contributors": [ + "Yialo", + "Fantomhaiv", + "SphinxKnight", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Number/toExponential": { + "modified": "2020-12-14T05:16:23.222Z", + "contributors": [ + "YozhEzhi", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Number/toFixed": { + "modified": "2020-12-14T05:15:41.289Z", + "contributors": [ + "YozhEzhi", + "ch-ms", + "stravin", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Number/toLocaleString": { + "modified": "2020-10-15T21:30:32.073Z", + "contributors": [ + "vanyaErohin", + "mois-ilya", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Number/toPrecision": { + "modified": "2020-12-14T05:16:55.908Z", + "contributors": [ + "YozhEzhi", + "Yialo", + "while0pass", + "nakhodkiin", + "ZeroUnderscoreOu", + "KiraGolub", + "an2323", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Number/toSource": { + "modified": "2019-08-25T13:48:33.955Z", + "contributors": [ + "Yialo", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Number/toString": { + "modified": "2020-12-14T05:17:27.925Z", + "contributors": [ + "YozhEzhi", + "Yialo", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Number/valueOf": { + "modified": "2019-03-23T23:08:15.896Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Object": { + "modified": "2019-08-26T11:37:18.396Z", + "contributors": [ + "Yialo", + "wbamberg", + "Natalya_Surikova", + "Mingun", + "teoli", + "pashak" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Object/__defineGetter__": { + "modified": "2019-03-23T23:11:22.223Z", + "contributors": [ + "Mingun", + "OleksandrPapchenko" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Object/__defineSetter__": { + "modified": "2019-03-23T23:10:17.035Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Object/__lookupGetter__": { + "modified": "2019-03-23T23:10:22.177Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Object/__lookupSetter__": { + "modified": "2019-03-23T23:10:20.796Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Object/assign": { + "modified": "2020-10-15T21:29:38.981Z", + "contributors": [ + "YozhEzhi", + "GraceAredel", + "icw82", + "chulanovskyi", + "BaNru", + "e-omo", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Object/constructor": { + "modified": "2019-03-23T23:10:17.901Z", + "contributors": [ + "Natalya_Surikova", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Object/create": { + "modified": "2020-10-15T21:28:49.512Z", + "contributors": [ + "dmarkin", + "Simaleon", + "Akh-rman", + "yedyharova", + "workonika", + "vinogradov", + "Aleksej", + "RinatMullayanov", + "vvwind", + "Mingun", + "SnowLeo" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Object/defineProperties": { + "modified": "2019-03-23T23:09:30.861Z", + "contributors": [ + "tankakatan", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Object/defineProperty": { + "modified": "2019-03-23T23:37:49.274Z", + "contributors": [ + "tourman", + "iSokrat", + "gibson", + "RumyantsevMichael", + "uniqueusr", + "Mingun", + "Natalya_Surikova", + "Anton_Arestov", + "akhabibullina", + "teoli", + "dunmaksim", + "my8bit", + "Selvatico" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Object/entries": { + "modified": "2020-10-15T21:41:30.272Z", + "contributors": [ + "cloudofgeorge", + "KolesnikovR", + "SpawnLeon", + "YozhEzhi", + "Akh-rman", "fscholz", - "andrcmdr", - "dixon2002", + "bobberr", + "XaveScor", + "uazure", + "curdwithraisins", + "risentveber", + "Grinv" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Object/freeze": { + "modified": "2020-10-15T21:30:06.043Z", + "contributors": [ + "YozhEzhi", + "WispProxy", + "kdex", + "pk.prog", + "chayn1k", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Object/fromEntries": { + "modified": "2020-10-15T22:14:28.772Z", + "contributors": [ + "ekirpichyov", + "Autapomorph", + "Akh-rman" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptor": { + "modified": "2019-03-24T00:14:06.824Z", + "contributors": [ + "Mingun", "teoli", - "uleming" + "pashak" ] }, - "Web/JavaScript/Guide/Grammar_and_types": { - "modified": "2020-03-12T19:37:57.624Z", + "Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptors": { + "modified": "2020-10-15T22:14:28.295Z", "contributors": [ - "kkxley", - "device25", - "pk.prog", - "rus11", - "xkha", - "Grumvol", - "DeekHalden", - "BychekRU", - "JuGeer", - "fscholz", - "IgorGilyazov", - "ph1ex0n", - "Corba", - "teoli", - "uleming" + "Akh-rman" ] }, - "Web/JavaScript/Guide/Indexed_collections": { - "modified": "2020-03-12T19:41:25.167Z", + "Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyNames": { + "modified": "2020-10-15T21:30:07.880Z", "contributors": [ - "prometium", - "yankovskiy", - "postwj", - "v.bilinskyi", - "pk.prog", - "sergeymakoveev", - "Megabyteceer", - "a302379333", - "Grumvol", - "blitzkrieg393", - "ignusin", - "magetor" + "YozhEzhi", + "nakhodkiin", + "tourman", + "VsevolodTrofimov", + "Mingun" ] }, - "Web/JavaScript/Guide/Ispolzovanie_promisov": { - "modified": "2020-03-12T19:47:08.646Z", + "Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertySymbols": { + "modified": "2020-10-15T21:30:06.924Z", "contributors": [ - "EgrorBs", - "FrancoisVongue", - "kkxley", - "indalive", - "VitalyTartynov", - "joisadler", - "Lunatic174", - "kefir266", - "yojeek", - "djigach", - "Airomad", - "winexy", - "Geloosa" + "nakhodkiin", + "SphinxKnight", + "Mingun", + "schyzoo" ] }, - "Web/JavaScript/Guide/Iterators_and_Generators": { - "modified": "2020-03-12T19:42:16.480Z", + "Web/JavaScript/Reference/Global_Objects/Object/getPrototypeOf": { + "modified": "2019-03-23T23:09:23.592Z", "contributors": [ - "AlexanderShushunov", - "rinbik", - "sivashev", - "deman", - "Megabyteceer", - "pashutk", - "kav137", - "zgordan-vv", - "danratnikov", - "djsuprin", - "uhomira" + "tonyganch", + "Mingun", + "Natalya_Surikova" ] }, - "Web/JavaScript/Guide/JavaScript_Overview": { - "modified": "2019-05-16T14:33:41.396Z", + "Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty": { + "modified": "2020-10-15T21:21:02.788Z", "contributors": [ - "wbamberg", - "ivan.p", - "fscholz", + "Roman-Kosov", + "ihoru", + "Mingun", "teoli", - "smfd", - "uleming" + "Nick_Pershin", + "nurbek.ab" ] }, - "Web/JavaScript/Guide/Keyed_collections": { - "modified": "2020-03-12T19:43:04.309Z", + "Web/JavaScript/Reference/Global_Objects/Object/is": { + "modified": "2020-10-15T21:26:43.137Z", "contributors": [ - "iameax", - "callisto1337", - "pathliving", - "Megabyteceer", - "alitskevich" + "YozhEzhi", + "SphinxKnight", + "Mingun", + "teoli", + "Romanzes", + "franza" ] }, - "Web/JavaScript/Guide/Meta_programming": { - "modified": "2020-03-12T19:45:39.027Z", + "Web/JavaScript/Reference/Global_Objects/Object/isExtensible": { + "modified": "2019-10-09T12:01:13.252Z", "contributors": [ - "E-Fir", - "T1mL3arn", - "TotalAMD", - "Dominionys", - "NickTaporuk", - "Megabyteceer" + "Mingun" ] }, - "Web/JavaScript/Guide/Modules": { - "modified": "2020-11-22T19:25:09.183Z", + "Web/JavaScript/Reference/Global_Objects/Object/isFrozen": { + "modified": "2020-10-15T21:30:08.003Z", "contributors": [ - "rsvato" + "YozhEzhi", + "Mingun" ] }, - "Web/JavaScript/Guide/Numbers_and_dates": { - "modified": "2020-03-12T19:42:19.176Z", + "Web/JavaScript/Reference/Global_Objects/Object/isPrototypeOf": { + "modified": "2020-02-04T15:23:51.484Z", "contributors": [ - "pirimow", - "myszkowski", - "Aparin", - "imalyavskiy", - "lemehovskiy", - "yankovskiy", - "rinbik", - "morpharc", - "Sparks", - "TemmyR", - "Megabyteceer", - "Mavricus", - "Letis-1987", - "OojSmile", - "Grumvol", - "serik1987", - "roma-derski" + "bagau", + "Mingun" ] }, - "Web/JavaScript/Guide/Predefined_Core_Objects": { - "modified": "2019-03-23T23:06:22.825Z", + "Web/JavaScript/Reference/Global_Objects/Object/isSealed": { + "modified": "2019-10-09T11:11:04.447Z", "contributors": [ - "wbamberg", - "warsan", - "AlexChuev", - "razarusu" + "Mingun" ] }, - "Web/JavaScript/Guide/Regular_Expressions": { - "modified": "2020-07-27T10:18:25.178Z", + "Web/JavaScript/Reference/Global_Objects/Object/keys": { + "modified": "2020-10-15T21:30:08.678Z", "contributors": [ - "touze147", - "SphinxKnight", - "DASenkiv", - "qqwweeaassdd", - "rinbik", - "Katarzina", - "laion220995", - "kzotoff", - "WispProxy", - "KysaKey", - "Reiider", - "Grumvol", - "indiefishman", - "romannebesny", - "dstereo", - "rin-nas", - "fscholz", - "keika", - "teoli", - "wilddeer", - "uleming", - "Odysseus" + "zhvirblis", + "kdex", + "Mingun" ] }, - "Web/JavaScript/Guide/Regular_Expressions/Assertions": { - "modified": "2020-03-12T19:49:10.003Z", + "Web/JavaScript/Reference/Global_Objects/Object/preventExtensions": { + "modified": "2020-10-15T21:30:08.070Z", "contributors": [ - "AliaksandrZahorski" + "YozhEzhi", + "serzero2007", + "nakhodkiin", + "Mingun" ] }, - "Web/JavaScript/Guide/Regular_Expressions/Character_Classes": { - "modified": "2020-06-17T18:30:16.759Z", + "Web/JavaScript/Reference/Global_Objects/Object/propertyIsEnumerable": { + "modified": "2019-03-23T23:09:13.597Z", "contributors": [ - "dknight" + "Mingun" ] }, - "Web/JavaScript/Guide/Text_formatting": { - "modified": "2020-03-12T19:42:07.543Z", + "Web/JavaScript/Reference/Global_Objects/Object/proto": { + "modified": "2020-10-15T21:29:34.357Z", "contributors": [ - "pirimow", - "Aparin", - "drugoi", - "Grumvol", - "redishko", - "PavelG94", - "Prographer" + "YozhEzhi", + "Sajag", + "Mingun" ] }, - "Web/JavaScript/Guide/Working_with_Objects": { - "modified": "2020-03-12T19:37:53.984Z", + "Web/JavaScript/Reference/Global_Objects/Object/seal": { + "modified": "2020-10-15T21:30:09.594Z", "contributors": [ - "mikhail.makarov", - "dyaroman", - "alex_wert_and", - "logty3", - "tonkushin", - "m0nclous", - "secretarius", - "rinbik", - "injashkin", - "alyokhander", - "pathliving", - "Siteograf", - "Matters", - "Megabyteceer", - "atlonis", - "agrygoriev", - "hawkridge", - "NobbsNobby", - "Grumvol", - "TrigDevelopment", - "jigs12", - "vzhikness", - "fscholz", - "walkman2058", - "yekver", - "teoli", - "Mxtnr", - "dimko_desu", - "Vlad.Abdullin", - "uleming" + "YozhEzhi", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Object/setPrototypeOf": { + "modified": "2019-09-11T03:19:06.537Z", + "contributors": [ + "Ichiru123", + "SphinxKnight", + "oziian", + "Mingun" ] }, - "Web/JavaScript/Guide/Введение_в_JavaScript": { - "modified": "2020-03-12T19:40:55.089Z", + "Web/JavaScript/Reference/Global_Objects/Object/toLocaleString": { + "modified": "2019-09-20T08:30:13.696Z", + "contributors": [ + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Object/toSource": { + "modified": "2020-10-15T21:30:13.861Z", "contributors": [ - "xxphantom", - "device25", "boxa6", - "rinbik", - "vladPovalii", - "IgorGilyazov" + "Mingun" ] }, - "Web/JavaScript/Guide/Об_этом_руководстве": { - "modified": "2019-03-24T00:13:23.720Z", + "Web/JavaScript/Reference/Global_Objects/Object/toString": { + "modified": "2020-10-15T21:30:10.362Z", + "contributors": [ + "ekirpichyov", + "IvanMorkva", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Object/valueOf": { + "modified": "2019-03-23T23:15:16.213Z", "contributors": [ + "Haosik", + "Natalya_Surikova", + "Mingun", "teoli", - "danielgn96" + "mixture" ] }, - "Web/JavaScript/Guide/Циклы_и_итерации": { - "modified": "2020-03-12T19:42:44.557Z", + "Web/JavaScript/Reference/Global_Objects/Object/values": { + "modified": "2020-10-15T21:50:11.196Z", "contributors": [ - "Aparin", - "Costigans", - "Zinger1988", - "miirinjej", - "bad4iz", - "pathliving", - "EduardKuzhir", - "DeekHalden", - "BychekRU", - "Dvakseno", - "TARTIGA" + "ekirpichyov", + "Yialo", + "XaveScor", + "Biblbrox", + "nllsdfx", + "ozknemoy" ] }, - "Web/JavaScript/Inheritance_and_the_prototype_chain": { - "modified": "2020-08-29T20:34:02.593Z", + "Web/JavaScript/Reference/Global_Objects/Promise": { + "modified": "2020-10-15T21:29:45.619Z", "contributors": [ - "sozdanbogom40", - "shevchenko", - "SadTomCat", - "Nick_Pershin", - "dudinsky", - "Shemil95", - "SedovDP", - "aliaksandr-s", - "ChesterFobitt", - "Saviloff", - "Kapiroska", - "fscholz", - "xxxxx0438", - "SRastrigin", - "Natalya_Surikova", - "Rast1234", - "teoli" + "YuriSn", + "gudkovdanila", + "YozhEzhi", + "alok1", + "AliaksandrZahorski", + "jwhitlock", + "ugncry", + "Geloosa", + "RinatMullayanov", + "AlexKhram", + "applicab", + "prettyGoo", + "dtretyakov", + "Chudesnov" ] }, - "Web/JavaScript/Introduction_to_Object-Oriented_JavaScript": { - "modified": "2019-06-04T15:16:30.349Z", + "Web/JavaScript/Reference/Global_Objects/Promise/all": { + "modified": "2020-10-15T21:33:26.483Z", "contributors": [ - "MiishaG", - "Trubochkin", - "MefistofelUgur", - "rockad", - "susov", - "movasyl", - "forestbird", - "hydrognomik", - "RayzRazko", - "Leo240", - "impetuhant", - "Saviloff", - "VolodymyrKr", - "iegik" + "BakrID", + "YozhEzhi", + "nudaworks", + "rutsky", + "NikIvan", + "AlexKhram", + "Crazymax11", + "f0rmat1k", + "axilirator" ] }, - "Web/JavaScript/JavaScript_technologies_overview": { - "modified": "2020-03-12T19:37:57.231Z", + "Web/JavaScript/Reference/Global_Objects/Promise/allSettled": { + "modified": "2020-10-15T22:22:39.384Z", "contributors": [ - "jynweythek", - "chrisdavidmills", - "miirinjej", - "kulakowka", - "curdwithraisins", - "sersalex", - "fscholz", - "kichik", - "askhat", - "ixidor", - "uleming" + "Neiromaster", + "ekirpichyov" ] }, - "Web/JavaScript/JavaScript_шеллы": { - "modified": "2020-05-02T11:17:13.805Z", + "Web/JavaScript/Reference/Global_Objects/Promise/any": { + "modified": "2020-10-15T22:27:25.562Z", "contributors": [ - "RenJeka", - "helenasilkina", - "fscholz", - "Alex_Howlett", - "teoli", - "Millionnaire" + "ArkadiiRaih" ] }, - "Web/JavaScript/Language_Resources": { - "modified": "2020-03-12T19:37:58.256Z", + "Web/JavaScript/Reference/Global_Objects/Promise/catch": { + "modified": "2020-10-15T21:48:47.444Z", "contributors": [ - "nnragmailcom", + "IgorCH", + "tirli", + "vitya-ne", + "torbasow", + "sergey-shambir", + "LopatkinEvgeniy", + "AlexKhram" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Promise/finally": { + "modified": "2020-10-15T22:01:51.236Z", + "contributors": [ + "kir.gimranov", + "mshipov", + "RussianPhotoGraf", + "IhnatsiS", + "NoviceBlunderer", + "Zudwa", + "x1unix" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Promise/race": { + "modified": "2020-10-15T21:39:40.095Z", + "contributors": [ + "asamofal", + "nakhodkiin", "fscholz", - "teoli", - "uleming" + "nudaworks", + "hawker000", + "thedoctorde", + "AlexKhram", + "forsage" ] }, - "Web/JavaScript/Memory_Management": { - "modified": "2020-07-14T20:08:19.176Z", + "Web/JavaScript/Reference/Global_Objects/Promise/reject": { + "modified": "2020-10-15T21:39:33.387Z", "contributors": [ - "irustm", - "ZeroUnderscoreOu", - "nikolaifedorov", - "vaeum", - "sashashakun", + "sergey-shambir", "fscholz", - "vitkarpov", - "teoli", - "Nick_Pershin", - "nurbek.ab" + "Buggytheclown", + "0xff00ff", + "AlexKhram", + "UnikZ" ] }, - "Web/JavaScript/Reference": { - "modified": "2020-03-12T19:36:05.593Z", + "Web/JavaScript/Reference/Global_Objects/Promise/resolve": { + "modified": "2020-10-15T21:48:52.330Z", "contributors": [ - "Aleksej", - "Mingun", - "teoli", - "Ladislas", - "pashak" + "gusakmarina", + "nudaworks", + "AlexKhram", + "ball00n" ] }, - "Web/JavaScript/Reference/Classes": { - "modified": "2020-11-02T03:27:06.842Z", + "Web/JavaScript/Reference/Global_Objects/Promise/then": { + "modified": "2020-11-03T18:52:52.359Z", "contributors": [ - "ITheCorgi", - "blackbrain2009", - "denys.marytchak", - "PaulineNemchak", - "SphinxKnight", - "AnarhistMS", + "fanich37", + "smlkA", "YozhEzhi", - "sahmildzhakeev", - "jainashur", - "CaptainCrocus", - "domstrueboy", - "Muffassa", - "Sajag", - "Gamesurf", - "Piterden", - "pathliving", - "alienalien13", - "DyckGerman", - "animhotep", - "feonit", - "zasipin", - "InsidiousClu", - "KTatyana", - "ViZhe", - "sergeymakoveev", - "PinkaminaDianePie", - "RoM4iK", - "sasd97", - "seedofjoy", - "torbasow", - "krest88", - "fscholz" + "Kesantielu", + "andreymir", + "AlexKhram", + "LeoVS09", + "ksladkov" ] }, - "Web/JavaScript/Reference/Classes/Class_fields": { - "modified": "2020-11-17T02:37:33.218Z", + "Web/JavaScript/Reference/Global_Objects/Proxy": { + "modified": "2020-11-17T05:36:00.208Z", "contributors": [ "kosarev_va", - "warsambin", - "shmel3" + "sivashev", + "xurshidbekjonwin", + "lmjavascriptprogrammer", + "boxa6", + "DonikaV", + "nakhodkiin", + "Andrey-Bushman", + "kdex", + "torbasow", + "dtretyakov", + "im7mortal" ] }, - "Web/JavaScript/Reference/Classes/constructor": { - "modified": "2020-11-02T06:02:34.419Z", + "Web/JavaScript/Reference/Global_Objects/Proxy/Proxy": { + "modified": "2020-11-16T16:36:02.171Z", "contributors": [ - "ITheCorgi", - "S25AI", - "Bobsans", - "Paul_Yuhnovich", - "galynag", - "dood" + "mfuji09" ] }, - "Web/JavaScript/Reference/Classes/extends": { - "modified": "2020-03-12T19:46:03.525Z", + "Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/apply": { + "modified": "2020-11-18T06:41:35.789Z", "contributors": [ - "Nexwich", - "Vlad160", - "Piterden", - "meridos", - "Halkyon", - "Kozhemyak", - "slayermass" + "kosarev_va" ] }, - "Web/JavaScript/Reference/Classes/static": { - "modified": "2020-10-15T21:34:19.682Z", + "Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/get": { + "modified": "2020-11-17T05:45:02.908Z", "contributors": [ - "vydayko", - "Bobsans", - "evilive3000", - "andrey-gnl", - "Hydrock", - "Dmitrii_Aleksandrov", - "torbasow", - "terranisu", - "Witadol" + "kosarev_va" ] }, - "Web/JavaScript/Reference/Classes/Приватные_поля_класса": { - "modified": "2020-10-15T22:33:38.348Z", + "Web/JavaScript/Reference/Global_Objects/Proxy/revocable": { + "modified": "2020-10-15T22:01:47.719Z", "contributors": [ - "cliggen", - "DarkExodusXX" + "HarmlessEvil" ] }, - "Web/JavaScript/Reference/Deprecated_and_obsolete_features": { - "modified": "2020-03-12T19:48:57.173Z", + "Web/JavaScript/Reference/Global_Objects/RangeError": { + "modified": "2019-03-23T23:08:28.070Z", "contributors": [ - "boxa6" + "Mingun", + "fscholz" ] }, - "Web/JavaScript/Reference/Errors": { - "modified": "2020-03-12T19:44:11.764Z", + "Web/JavaScript/Reference/Global_Objects/ReferenceError": { + "modified": "2020-10-15T21:30:26.550Z", "contributors": [ - "superpuper32", - "fscholz" + "dima74", + "Mingun" ] }, - "Web/JavaScript/Reference/Errors/Already_has_pragma": { - "modified": "2020-03-12T19:48:44.607Z", + "Web/JavaScript/Reference/Global_Objects/Reflect": { + "modified": "2020-11-08T07:48:53.681Z", "contributors": [ - "MakarovDs777" + "parabolabam", + "bakugod", + "Chank1e", + "SphinxKnight", + "Synthesize", + "rajdee", + "C`est la vie" ] }, - "Web/JavaScript/Reference/Errors/Array_sort_argument": { - "modified": "2020-03-12T19:48:40.421Z", + "Web/JavaScript/Reference/Global_Objects/Reflect/apply": { + "modified": "2020-10-15T22:01:47.478Z", "contributors": [ - "MakarovDs777" + "HarmlessEvil" ] }, - "Web/JavaScript/Reference/Errors/Bad_octal": { - "modified": "2020-03-12T19:46:46.233Z", + "Web/JavaScript/Reference/Global_Objects/Reflect/construct": { + "modified": "2020-10-15T22:19:59.737Z", "contributors": [ - "Pandemoniumus" + "bakugod" ] }, - "Web/JavaScript/Reference/Errors/Bad_radix": { - "modified": "2020-03-12T19:47:16.966Z", + "Web/JavaScript/Reference/Global_Objects/Reflect/defineProperty": { + "modified": "2020-10-15T22:19:53.301Z", "contributors": [ - "KTatyana", - "varyag01" + "bakugod" ] }, - "Web/JavaScript/Reference/Errors/Bad_regexp_flag": { - "modified": "2020-03-12T19:47:09.430Z", + "Web/JavaScript/Reference/Global_Objects/Reflect/deleteProperty": { + "modified": "2020-10-15T22:19:49.053Z", "contributors": [ - "hahanova" + "bakugod" ] }, - "Web/JavaScript/Reference/Errors/Bad_return_or_yield": { - "modified": "2020-03-12T19:48:14.916Z", + "Web/JavaScript/Reference/Global_Objects/Reflect/get": { + "modified": "2020-10-15T22:01:46.509Z", "contributors": [ - "KTatyana" + "HarmlessEvil" ] }, - "Web/JavaScript/Reference/Errors/Called_on_incompatible_type": { - "modified": "2020-03-12T19:48:52.848Z", + "Web/JavaScript/Reference/Global_Objects/Reflect/ownKeys": { + "modified": "2020-10-15T22:05:30.827Z", "contributors": [ - "palpich", - "MakarovDs777", - "Toshakins" + "ArturJS" ] }, - "Web/JavaScript/Reference/Errors/Cant_access_lexical_declaration_before_init": { - "modified": "2020-03-12T19:47:46.173Z", + "Web/JavaScript/Reference/Global_Objects/RegExp": { + "modified": "2020-08-25T20:36:26.657Z", "contributors": [ - "rsvato" + "duduindo", + "etonomick", + "needpower", + "username1565", + "PavelKoroteev", + "Zizes", + "kaifonaft", + "wbamberg", + "Express2000", + "WispProxy", + "bobanko", + "sashatexb", + "Grundy", + "dstereo", + "socketpair", + "Hulio", + "Mingun", + "KiraAndMaxim", + "rhyne24" ] }, - "Web/JavaScript/Reference/Errors/Cant_access_property": { - "modified": "2020-03-12T19:48:40.635Z", + "Web/JavaScript/Reference/Global_Objects/RegExp/@@search": { + "modified": "2020-10-15T22:00:22.795Z", "contributors": [ - "MakarovDs777" + "fax1ty" ] }, - "Web/JavaScript/Reference/Errors/Cant_assign_to_property": { - "modified": "2020-11-09T16:55:40.780Z", + "Web/JavaScript/Reference/Global_Objects/RegExp/@@split": { + "modified": "2020-10-15T22:05:39.755Z", "contributors": [ - "tukumann" + "0x0071" ] }, - "Web/JavaScript/Reference/Errors/Cant_define_property_object_not_extensible": { - "modified": "2020-03-12T19:48:37.533Z", + "Web/JavaScript/Reference/Global_Objects/RegExp/exec": { + "modified": "2019-10-03T07:10:20.564Z", "contributors": [ - "Zulcom", - "MakarovDs777" + "Haosik", + "Mingun" ] }, - "Web/JavaScript/Reference/Errors/Cant_delete": { - "modified": "2020-03-12T19:48:41.016Z", + "Web/JavaScript/Reference/Global_Objects/RegExp/flags": { + "modified": "2019-03-23T23:03:48.545Z", "contributors": [ - "MakarovDs777" + "SphinxKnight", + "Mingun" ] }, - "Web/JavaScript/Reference/Errors/Cant_redefine_property": { - "modified": "2020-03-12T19:48:43.526Z", + "Web/JavaScript/Reference/Global_Objects/RegExp/global": { + "modified": "2019-03-23T23:03:48.212Z", "contributors": [ - "MakarovDs777" + "Mingun" ] }, - "Web/JavaScript/Reference/Errors/Cyclic_object_value": { - "modified": "2020-10-19T11:06:58.196Z", + "Web/JavaScript/Reference/Global_Objects/RegExp/ignoreCase": { + "modified": "2019-03-23T23:03:53.037Z", "contributors": [ - "sovushka-utrom", - "MakarovDs777" + "Mingun" ] }, - "Web/JavaScript/Reference/Errors/Dead_object": { - "modified": "2020-03-12T19:48:38.148Z", + "Web/JavaScript/Reference/Global_Objects/RegExp/input": { + "modified": "2020-10-15T22:21:51.345Z", "contributors": [ - "MakarovDs777" + "gudkovdanila" ] }, - "Web/JavaScript/Reference/Errors/Delete_in_strict_mode": { - "modified": "2020-03-12T19:48:34.125Z", + "Web/JavaScript/Reference/Global_Objects/RegExp/lastIndex": { + "modified": "2019-03-23T23:03:47.604Z", "contributors": [ - "Akh-rman", - "MakarovDs777" + "Mingun" ] }, - "Web/JavaScript/Reference/Errors/Deprecated_String_generics": { - "modified": "2020-03-12T19:48:16.347Z", + "Web/JavaScript/Reference/Global_Objects/RegExp/lastMatch": { + "modified": "2020-10-15T22:21:50.708Z", "contributors": [ - "KTatyana" + "zoodogood", + "gudkovdanila" ] }, - "Web/JavaScript/Reference/Errors/Deprecated_caller_or_arguments_usage": { - "modified": "2020-03-12T19:48:07.207Z", + "Web/JavaScript/Reference/Global_Objects/RegExp/multiline": { + "modified": "2019-03-23T23:03:46.419Z", "contributors": [ - "simonprod", - "MakarovDs777", - "Akh-rman" + "Mingun" ] }, - "Web/JavaScript/Reference/Errors/Deprecated_expression_closures": { - "modified": "2020-03-12T19:48:53.985Z", + "Web/JavaScript/Reference/Global_Objects/RegExp/n": { + "modified": "2020-10-15T21:54:34.887Z", "contributors": [ - "MakarovDs777" + "ekirpichyov", + "teoli", + "yulllll", + "Mihail15", + "KamilOcean" ] }, - "Web/JavaScript/Reference/Errors/Deprecated_octal": { - "modified": "2020-03-12T19:48:36.042Z", + "Web/JavaScript/Reference/Global_Objects/RegExp/source": { + "modified": "2020-05-04T10:45:02.263Z", "contributors": [ - "MakarovDs777", - "ialexi-bl" + "ellizii", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/RegExp/sticky": { + "modified": "2019-03-23T23:03:51.760Z", + "contributors": [ + "SphinxKnight", + "serj-by", + "WispProxy", + "Mingun" + ] + }, + "Web/JavaScript/Reference/Global_Objects/RegExp/test": { + "modified": "2020-05-25T03:11:01.471Z", + "contributors": [ + "SphinxKnight", + "pohuyebawtak", + "Glazomer", + "waterplea", + "Mingun", + "InoY" ] }, - "Web/JavaScript/Reference/Errors/Deprecated_source_map_pragma": { - "modified": "2020-03-12T19:46:14.659Z", + "Web/JavaScript/Reference/Global_Objects/RegExp/toSource": { + "modified": "2019-08-27T16:00:03.262Z", "contributors": [ - "medianex" + "Yialo", + "Mingun" ] }, - "Web/JavaScript/Reference/Errors/Deprecated_toLocaleFormat": { - "modified": "2020-03-12T19:48:53.962Z", + "Web/JavaScript/Reference/Global_Objects/RegExp/toString": { + "modified": "2019-03-23T23:03:38.400Z", "contributors": [ - "MakarovDs777" + "Mingun" ] }, - "Web/JavaScript/Reference/Errors/Equal_as_assign": { - "modified": "2020-03-12T19:48:37.445Z", + "Web/JavaScript/Reference/Global_Objects/RegExp/unicode": { + "modified": "2020-10-15T22:03:35.958Z", "contributors": [ - "MakarovDs777" + "PROPHESSOR" ] }, - "Web/JavaScript/Reference/Errors/For-each-in_loops_are_deprecated": { - "modified": "2020-03-12T19:48:56.664Z", + "Web/JavaScript/Reference/Global_Objects/Set": { + "modified": "2020-10-15T21:31:17.149Z", "contributors": [ - "MakarovDs777" + "andrew_shr", + "YozhEzhi", + "kan.a", + "SphinxKnight", + "dima74", + "papadima", + "vibecode", + "ViZhe", + "dtretyakov" ] }, - "Web/JavaScript/Reference/Errors/Getter_only": { - "modified": "2020-03-12T19:48:43.409Z", + "Web/JavaScript/Reference/Global_Objects/Set/Set": { + "modified": "2020-12-07T09:25:28.434Z", "contributors": [ - "MakarovDs777" + "SphinxKnight", + "knatysik" ] }, - "Web/JavaScript/Reference/Errors/Identifier_after_number": { - "modified": "2020-03-12T19:48:34.042Z", + "Web/JavaScript/Reference/Global_Objects/Set/add": { + "modified": "2020-10-15T22:03:24.314Z", "contributors": [ - "MakarovDs777" + "Siteograf" ] }, - "Web/JavaScript/Reference/Errors/Illegal_character": { - "modified": "2020-03-12T19:46:55.549Z", + "Web/JavaScript/Reference/Global_Objects/Set/clear": { + "modified": "2020-10-15T21:58:59.279Z", "contributors": [ - "Agaff.fm", - "milothea" + "dima74" ] }, - "Web/JavaScript/Reference/Errors/Invalid_array_length": { - "modified": "2020-03-12T19:46:53.627Z", + "Web/JavaScript/Reference/Global_Objects/Set/delete": { + "modified": "2020-10-15T22:04:59.296Z", "contributors": [ - "xenikopa" + "ekirpichyov", + "ArmoGidec" ] }, - "Web/JavaScript/Reference/Errors/Invalid_assignment_left-hand_side": { - "modified": "2020-03-12T19:46:49.095Z", + "Web/JavaScript/Reference/Global_Objects/Set/entries": { + "modified": "2020-10-15T22:22:34.627Z", "contributors": [ - "KTatyana", - "evmnn" + "ekirpichyov" ] }, - "Web/JavaScript/Reference/Errors/Invalid_const_assignment": { - "modified": "2020-03-12T19:48:42.020Z", + "Web/JavaScript/Reference/Global_Objects/Set/forEach": { + "modified": "2020-10-15T22:18:01.267Z", "contributors": [ - "MakarovDs777" + "TatarovAE", + "boulderboy" ] }, - "Web/JavaScript/Reference/Errors/Invalid_date": { - "modified": "2020-03-12T19:47:15.198Z", + "Web/JavaScript/Reference/Global_Objects/Set/has": { + "modified": "2020-10-15T22:10:52.073Z", "contributors": [ - "Logiiiin", - "Cronofaq" + "raylyanway" ] }, - "Web/JavaScript/Reference/Errors/Invalid_for-in_initializer": { - "modified": "2020-03-12T19:48:36.053Z", + "Web/JavaScript/Reference/Global_Objects/Set/size": { + "modified": "2020-10-15T22:22:51.490Z", "contributors": [ - "Akh-rman", - "MakarovDs777" + "ekirpichyov" ] }, - "Web/JavaScript/Reference/Errors/Invalid_for-of_initializer": { - "modified": "2020-03-12T19:47:46.050Z", + "Web/JavaScript/Reference/Global_Objects/Set/values": { + "modified": "2020-10-15T22:22:36.094Z", "contributors": [ - "Akh-rman", - "rsvato" + "ekirpichyov" ] }, - "Web/JavaScript/Reference/Errors/JSON_bad_parse": { - "modified": "2020-03-12T19:47:51.119Z", + "Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer": { + "modified": "2019-03-23T22:09:27.484Z", "contributors": [ - "Akh-rman", - "djigach" + "nikolaysalinder", + "scilganon", + "curdwithraisins" ] }, - "Web/JavaScript/Reference/Errors/Malformed_URI": { - "modified": "2020-03-12T19:47:10.234Z", + "Web/JavaScript/Reference/Global_Objects/String": { + "modified": "2020-11-19T06:55:56.629Z", "contributors": [ - "Logiiiin", - "hunty" + "liubov", + "mangl-auf", + "boxa6", + "wbamberg", + "an2323", + "IvanMorkva", + "Mingun", + "fobo66", + "teoli", + "ethertank" ] }, - "Web/JavaScript/Reference/Errors/Malformed_formal_parameter": { - "modified": "2020-03-12T19:47:59.198Z", + "Web/JavaScript/Reference/Global_Objects/String/@@iterator": { + "modified": "2020-10-14T10:03:26.063Z", "contributors": [ - "KTatyana" + "scrum", + "SphinxKnight", + "Mingun" ] }, - "Web/JavaScript/Reference/Errors/Missing_bracket_after_list": { - "modified": "2020-03-12T19:47:12.419Z", + "Web/JavaScript/Reference/Global_Objects/String/Trim": { + "modified": "2019-03-23T23:11:20.382Z", "contributors": [ - "KTatyana", - "kolyuchii" + "KiraAndMaxim", + "Mingun", + "Ajooluz" ] }, - "Web/JavaScript/Reference/Errors/Missing_colon_after_property_id": { - "modified": "2020-03-12T19:47:16.697Z", + "Web/JavaScript/Reference/Global_Objects/String/anchor": { + "modified": "2019-03-18T20:48:46.079Z", "contributors": [ - "Logiiiin" + "risenforces", + "DenVdmj", + "Mingun" ] }, - "Web/JavaScript/Reference/Errors/Missing_curly_after_function_body": { - "modified": "2020-03-12T19:48:03.575Z", + "Web/JavaScript/Reference/Global_Objects/String/big": { + "modified": "2019-03-23T23:06:53.527Z", "contributors": [ - "KTatyana" + "Mingun" ] }, - "Web/JavaScript/Reference/Errors/Missing_curly_after_property_list": { - "modified": "2020-03-12T19:47:15.796Z", + "Web/JavaScript/Reference/Global_Objects/String/blink": { + "modified": "2019-03-23T23:06:56.834Z", "contributors": [ - "KTatyana", - "varyag01" + "Mingun" ] }, - "Web/JavaScript/Reference/Errors/Missing_formal_parameter": { - "modified": "2020-03-12T19:48:33.984Z", + "Web/JavaScript/Reference/Global_Objects/String/bold": { + "modified": "2019-03-23T23:06:52.878Z", "contributors": [ - "MakarovDs777" + "Mingun" ] }, - "Web/JavaScript/Reference/Errors/Missing_initializer_in_const": { - "modified": "2020-03-12T19:47:18.266Z", + "Web/JavaScript/Reference/Global_Objects/String/charAt": { + "modified": "2019-09-05T08:52:29.623Z", "contributors": [ - "Logiiiin" + "Mingun" ] }, - "Web/JavaScript/Reference/Errors/Missing_name_after_dot_operator": { - "modified": "2020-03-12T19:48:36.581Z", + "Web/JavaScript/Reference/Global_Objects/String/charCodeAt": { + "modified": "2019-10-10T16:47:08.723Z", "contributors": [ - "MakarovDs777" + "WispProxy", + "Mingun" ] }, - "Web/JavaScript/Reference/Errors/Missing_parenthesis_after_argument_list": { - "modified": "2020-03-12T19:45:27.217Z", + "Web/JavaScript/Reference/Global_Objects/String/codePointAt": { + "modified": "2019-03-23T23:06:49.782Z", "contributors": [ - "richandhandsomeman" + "SphinxKnight", + "Mingun" ] }, - "Web/JavaScript/Reference/Errors/Missing_parenthesis_after_condition": { - "modified": "2020-03-12T19:47:08.319Z", + "Web/JavaScript/Reference/Global_Objects/String/concat": { + "modified": "2019-03-23T23:06:50.258Z", "contributors": [ - "thepocp" + "Mingun" ] }, - "Web/JavaScript/Reference/Errors/Missing_semicolon_before_statement": { - "modified": "2020-03-12T19:46:03.538Z", + "Web/JavaScript/Reference/Global_Objects/String/endsWith": { + "modified": "2020-11-30T13:19:02.930Z", "contributors": [ - "KTatyana", - "SedovDP", - "Sparks" + "vedmaque", + "viktishchenko", + "SphinxKnight", + "burashka", + "Mingun" ] }, - "Web/JavaScript/Reference/Errors/More_arguments_needed": { - "modified": "2020-03-12T19:46:14.923Z", + "Web/JavaScript/Reference/Global_Objects/String/fixed": { + "modified": "2019-03-23T23:06:56.996Z", "contributors": [ - "thepocp" + "Mingun" ] }, - "Web/JavaScript/Reference/Errors/Negative_repetition_count": { - "modified": "2020-03-12T19:47:21.952Z", + "Web/JavaScript/Reference/Global_Objects/String/fontcolor": { + "modified": "2019-03-23T23:06:53.696Z", "contributors": [ - "Logiiiin" + "Mingun" ] }, - "Web/JavaScript/Reference/Errors/No_non-null_object": { - "modified": "2020-03-12T19:48:41.071Z", + "Web/JavaScript/Reference/Global_Objects/String/fontsize": { + "modified": "2019-03-23T23:06:55.867Z", "contributors": [ - "MakarovDs777" + "Mingun" ] }, - "Web/JavaScript/Reference/Errors/No_properties": { - "modified": "2020-03-12T19:48:10.284Z", + "Web/JavaScript/Reference/Global_Objects/String/fromCharCode": { + "modified": "2020-02-26T00:26:26.501Z", "contributors": [ - "KTatyana" + "kurbanovjasur", + "Mingun" ] }, - "Web/JavaScript/Reference/Errors/No_variable_name": { - "modified": "2020-03-12T19:47:58.181Z", + "Web/JavaScript/Reference/Global_Objects/String/fromCodePoint": { + "modified": "2019-03-23T23:07:12.216Z", "contributors": [ - "KTatyana" + "SphinxKnight", + "Mingun" ] }, - "Web/JavaScript/Reference/Errors/Non_configurable_array_element": { - "modified": "2020-03-12T19:48:37.262Z", + "Web/JavaScript/Reference/Global_Objects/String/includes": { + "modified": "2020-10-15T21:31:11.231Z", "contributors": [ - "MakarovDs777" + "Therrance", + "fscholz", + "dima74", + "PetrBorisov", + "kdex", + "burashka", + "Mingun" ] }, - "Web/JavaScript/Reference/Errors/Not_a_codepoint": { - "modified": "2020-03-12T19:47:08.221Z", + "Web/JavaScript/Reference/Global_Objects/String/indexOf": { + "modified": "2019-04-10T16:45:26.467Z", "contributors": [ - "KTatyana", - "milothea" + "danielvinogradov", + "expeerd", + "Mingun" ] }, - "Web/JavaScript/Reference/Errors/Not_a_constructor": { - "modified": "2020-03-12T19:48:26.755Z", + "Web/JavaScript/Reference/Global_Objects/String/italics": { + "modified": "2019-03-23T23:06:57.747Z", "contributors": [ - "grebenyukov" + "Mingun" ] }, - "Web/JavaScript/Reference/Errors/Not_a_function": { - "modified": "2020-03-12T19:44:14.870Z", + "Web/JavaScript/Reference/Global_Objects/String/lastIndexOf": { + "modified": "2019-03-23T23:06:47.724Z", "contributors": [ - "merelj", - "elscept", - "winvano", - "vladyslavnes", - "MonX94", - "eedmast", - "s1lver" + "expeerd", + "Mingun" ] }, - "Web/JavaScript/Reference/Errors/Not_defined": { - "modified": "2020-03-12T19:45:01.771Z", + "Web/JavaScript/Reference/Global_Objects/String/length": { + "modified": "2019-03-23T23:07:11.163Z", "contributors": [ - "Nik1tasm", - "irodger", - "MrDaedra", - "KurumiToki", - "alexfromvl", - "topcomfort" + "Mingun" ] }, - "Web/JavaScript/Reference/Errors/Precision_range": { - "modified": "2020-03-12T19:46:12.947Z", + "Web/JavaScript/Reference/Global_Objects/String/link": { + "modified": "2019-03-23T23:06:52.727Z", "contributors": [ - "KTatyana", - "rbetristha" + "RumyantsevMichael", + "Mingun" ] }, - "Web/JavaScript/Reference/Errors/Property_access_denied": { - "modified": "2020-03-12T19:46:14.706Z", + "Web/JavaScript/Reference/Global_Objects/String/localeCompare": { + "modified": "2019-03-23T23:06:31.683Z", "contributors": [ - "thepocp" + "ovvn", + "Mingun" ] }, - "Web/JavaScript/Reference/Errors/Read-only": { - "modified": "2020-03-12T19:48:38.316Z", + "Web/JavaScript/Reference/Global_Objects/String/match": { + "modified": "2019-08-27T15:10:06.292Z", "contributors": [ - "MakarovDs777" + "Yialo", + "ArmoGidec", + "Mingun" ] }, - "Web/JavaScript/Reference/Errors/Redeclared_parameter": { - "modified": "2020-03-12T19:48:00.985Z", + "Web/JavaScript/Reference/Global_Objects/String/matchAll": { + "modified": "2020-10-15T22:15:55.263Z", "contributors": [ - "KTatyana" + "atmobox66", + "Yialo", + "nakhodkiin" ] }, - "Web/JavaScript/Reference/Errors/Reduce_of_empty_array_with_no_initial_value": { - "modified": "2020-03-12T19:48:40.523Z", + "Web/JavaScript/Reference/Global_Objects/String/normalize": { + "modified": "2019-08-27T15:13:41.527Z", "contributors": [ - "MakarovDs777" + "Yialo", + "Seresigo", + "borschsergey", + "SphinxKnight", + "Metotron", + "Mingun", + "dtretyakov" ] }, - "Web/JavaScript/Reference/Errors/Reserved_identifier": { - "modified": "2020-03-12T19:48:30.540Z", + "Web/JavaScript/Reference/Global_Objects/String/padEnd": { + "modified": "2019-08-27T15:13:11.473Z", "contributors": [ - "FromQwghlm" + "Yialo", + "teoli", + "a-chepugov" ] }, - "Web/JavaScript/Reference/Errors/Resulting_string_too_large": { - "modified": "2020-03-12T19:47:15.830Z", + "Web/JavaScript/Reference/Global_Objects/String/padStart": { + "modified": "2020-10-15T21:55:08.745Z", "contributors": [ - "Logiiiin" + "Yialo", + "vladimircreative", + "wa-Nadoo", + "timbset" ] }, - "Web/JavaScript/Reference/Errors/Stmt_after_return": { - "modified": "2020-03-12T19:44:12.151Z", + "Web/JavaScript/Reference/Global_Objects/String/raw": { + "modified": "2019-03-23T23:06:30.098Z", "contributors": [ - "Logiiiin", - "pk.prog", - "naudachu", - "s1lver" + "SphinxKnight", + "oleg_s", + "Mingun", + "dtretyakov" ] }, - "Web/JavaScript/Reference/Errors/Strict_Non_Simple_Params": { - "modified": "2020-03-12T19:48:33.429Z", + "Web/JavaScript/Reference/Global_Objects/String/repeat": { + "modified": "2020-10-15T21:31:18.222Z", "contributors": [ - "ialexi-bl", - "MakarovDs777" + "KTatyana", + "Mingun", + "dtretyakov" ] }, - "Web/JavaScript/Reference/Errors/Too_much_recursion": { - "modified": "2020-03-12T19:46:15.435Z", + "Web/JavaScript/Reference/Global_Objects/String/replace": { + "modified": "2020-10-15T21:24:19.735Z", "contributors": [ - "thepocp" + "YozhEzhi", + "dimakovalevskyi", + "igorkusoff", + "Mingun", + "Lambrusco.pro", + "teoli", + "andrey_d" ] }, - "Web/JavaScript/Reference/Errors/Typed_array_invalid_arguments": { - "modified": "2020-03-12T19:48:42.436Z", + "Web/JavaScript/Reference/Global_Objects/String/replaceAll": { + "modified": "2020-10-15T22:34:38.094Z", "contributors": [ - "fuggy", - "MakarovDs777" + "GuyFox70" ] }, - "Web/JavaScript/Reference/Errors/Undeclared_var": { - "modified": "2020-03-12T19:47:38.776Z", + "Web/JavaScript/Reference/Global_Objects/String/search": { + "modified": "2019-10-03T07:09:20.235Z", "contributors": [ - "Akh-rman", - "Matthew11770" + "Glazomer", + "nakhodkiin", + "atna", + "Mingun" ] }, - "Web/JavaScript/Reference/Errors/Undefined_prop": { - "modified": "2020-03-12T19:47:58.221Z", + "Web/JavaScript/Reference/Global_Objects/String/slice": { + "modified": "2020-12-02T04:52:58.834Z", "contributors": [ - "KTatyana" + "inva8de", + "bestwebdeveloper", + "Andrii-Oleksyshyn", + "Mingun" ] }, - "Web/JavaScript/Reference/Errors/Unexpected_token": { - "modified": "2020-03-12T19:46:02.532Z", + "Web/JavaScript/Reference/Global_Objects/String/small": { + "modified": "2019-03-23T23:06:51.754Z", "contributors": [ - "KTatyana", - "NemchinovSergey", - "Sparks" + "Mingun" ] }, - "Web/JavaScript/Reference/Errors/Unexpected_type": { - "modified": "2020-03-12T19:45:23.586Z", + "Web/JavaScript/Reference/Global_Objects/String/split": { + "modified": "2020-11-30T06:21:03.966Z", "contributors": [ - "DanyaSWorlD" + "DarkGoanna", + "Ect0PzG4m1ng", + "IgorSkvortsov", + "bruha", + "terranisu", + "Mingun", + "FRiMN" ] }, - "Web/JavaScript/Reference/Errors/Unnamed_function_statement": { - "modified": "2020-03-12T19:48:37.361Z", + "Web/JavaScript/Reference/Global_Objects/String/startsWith": { + "modified": "2020-10-15T21:31:11.246Z", "contributors": [ - "Akh-rman", - "MakarovDs777" + "ilyasidorchik", + "viktishchenko", + "Simaleon", + "dmitryorly", + "SphinxKnight", + "AtataUruru", + "burashka", + "Mingun" ] }, - "Web/JavaScript/Reference/Errors/Unterminated_string_literal": { - "modified": "2020-03-12T19:48:38.047Z", + "Web/JavaScript/Reference/Global_Objects/String/strike": { + "modified": "2019-09-05T08:52:44.580Z", "contributors": [ - "MakarovDs777" + "Mingun" ] }, - "Web/JavaScript/Reference/Errors/in_operator_no_object": { - "modified": "2020-03-12T19:48:40.403Z", + "Web/JavaScript/Reference/Global_Objects/String/sub": { + "modified": "2019-03-23T23:07:01.566Z", "contributors": [ - "MakarovDs777" + "Mingun" ] }, - "Web/JavaScript/Reference/Errors/invalid_right_hand_side_instanceof_operand": { - "modified": "2020-03-12T19:48:41.158Z", + "Web/JavaScript/Reference/Global_Objects/String/substr": { + "modified": "2020-10-15T21:31:19.515Z", "contributors": [ - "MakarovDs777" + "art-gur", + "lugovov", + "Halkyon", + "fscholz", + "Mingun" ] }, - "Web/JavaScript/Reference/Errors/is_not_iterable": { - "modified": "2020-03-12T19:48:36.606Z", + "Web/JavaScript/Reference/Global_Objects/String/substring": { + "modified": "2019-03-23T23:06:24.574Z", "contributors": [ - "MakarovDs777" + "Barkhat26", + "Mingun" ] }, - "Web/JavaScript/Reference/Errors/Переменные_скрывают_аргумент": { - "modified": "2020-03-12T19:48:55.415Z", + "Web/JavaScript/Reference/Global_Objects/String/sup": { + "modified": "2019-03-23T23:06:59.702Z", "contributors": [ - "MakarovDs777" + "Mingun" ] }, - "Web/JavaScript/Reference/Functions": { - "modified": "2020-03-12T19:39:49.358Z", + "Web/JavaScript/Reference/Global_Objects/String/toLocaleLowerCase": { + "modified": "2019-03-23T23:06:20.649Z", "contributors": [ - "KoS57", - "nikbelikov", - "SmogHard", - "forestbird", - "teoli", - "dtretyakov" + "Mingun" ] }, - "Web/JavaScript/Reference/Functions/Arrow_functions": { - "modified": "2020-10-15T21:31:20.608Z", + "Web/JavaScript/Reference/Global_Objects/String/toLocaleUpperCase": { + "modified": "2019-03-23T23:06:18.129Z", "contributors": [ - "MerkUriy", - "iFeltz", - "kliuchyk", - "kkxley", - "coxdn", - "Sajag", - "animhotep", - "vibecode", - "Neiromaster", - "Siteograf", - "TotalAMD", - "bskydive", - "seriouslyfluffy", - "dst", - "vitya-ne", - "theViktor1990", - "uleming", - "kutase123", - "pashutk", - "dtretyakov" + "Mingun" ] }, - "Web/JavaScript/Reference/Functions/Default_parameters": { - "modified": "2020-10-15T21:31:19.263Z", + "Web/JavaScript/Reference/Global_Objects/String/toLowerCase": { + "modified": "2019-03-23T23:06:20.814Z", "contributors": [ - "torbasow", - "ic8550", - "ekirpichyov", - "SphinxKnight", - "I-O", - "esusekov", - "dtretyakov" + "Mingun" ] }, - "Web/JavaScript/Reference/Functions/Rest_parameters": { - "modified": "2020-11-24T01:31:54.419Z", + "Web/JavaScript/Reference/Global_Objects/String/toSource": { + "modified": "2019-03-23T23:06:17.942Z", "contributors": [ - "almaceleste", - "CLoud-Maker", - "ekirpichyov", - "jt3k", - "IlyaMokin", - "forestbird", - "dtretyakov", - "fscholz", - "EgorSinitcin" + "Mingun" ] }, - "Web/JavaScript/Reference/Functions/arguments": { - "modified": "2020-10-15T21:34:47.356Z", + "Web/JavaScript/Reference/Global_Objects/String/toString": { + "modified": "2019-03-23T23:06:15.157Z", "contributors": [ - "sashakrauzer", - "Ziserman", - "boxa6", - "dima74", - "KTatyana", - "Olovyanch", - "uleming", - "BychekRU", - "fscholz" + "Mingun" ] }, - "Web/JavaScript/Reference/Functions/arguments/callee": { - "modified": "2020-03-12T19:44:41.002Z", + "Web/JavaScript/Reference/Global_Objects/String/toUpperCase": { + "modified": "2019-03-23T23:06:22.989Z", "contributors": [ - "madsps", - "lkazberova", - "In4in" + "Mingun" ] }, - "Web/JavaScript/Reference/Functions/arguments/length": { - "modified": "2020-03-12T19:41:22.682Z", + "Web/JavaScript/Reference/Global_Objects/String/valueOf": { + "modified": "2019-05-17T04:11:09.851Z", "contributors": [ - "evgenevna22", - "BychekRU" + "dankochetov", + "Mingun" ] }, - "Web/JavaScript/Reference/Functions/get": { - "modified": "2020-10-15T21:43:29.042Z", + "Web/JavaScript/Reference/Global_Objects/Symbol": { + "modified": "2020-10-15T21:30:42.254Z", "contributors": [ - "ankormoreankor", - "WinterSilence", - "YozhEzhi", - "ipoluhin", - "metelskiy", - "kukuruznik04", - "ArtyomGilevich", - "andrey-gnl", - "pierreneter", - "etokareva" + "mux-mux", + "boxa6", + "pk.prog", + "smurf", + "neutral", + "schyzoo" ] }, - "Web/JavaScript/Reference/Functions/set": { - "modified": "2020-10-15T21:49:47.173Z", + "Web/JavaScript/Reference/Global_Objects/Symbol/@@toPrimitive": { + "modified": "2020-10-15T22:24:20.085Z", "contributors": [ - "SerzN1", - "severin-d", - "PaulineNemchak", - "serzero2007", - "d4rkm3z" + "faramozzayw" ] }, - "Web/JavaScript/Reference/Functions/Определиние_методов": { - "modified": "2020-03-12T19:41:39.567Z", + "Web/JavaScript/Reference/Global_Objects/Symbol/for": { + "modified": "2019-03-23T22:50:59.073Z", "contributors": [ "SphinxKnight", - "sergeymakoveev", - "BatenkovT" + "neutral" ] }, - "Web/JavaScript/Reference/Global_Objects": { - "modified": "2020-03-12T19:36:07.217Z", + "Web/JavaScript/Reference/Global_Objects/Symbol/hasInstance": { + "modified": "2020-10-15T21:56:25.834Z", "contributors": [ - "AynurShauerman", - "InoY", - "akrom123", - "Mingun", - "teoli", - "pashak" + "boxa6", + "vitaliylag", + "shlangus" ] }, - "Web/JavaScript/Reference/Global_Objects/Array": { - "modified": "2020-10-15T21:21:43.377Z", + "Web/JavaScript/Reference/Global_Objects/Symbol/isConcatSpreadable": { + "modified": "2019-03-23T22:10:03.691Z", "contributors": [ - "wbamberg", - "geek10010", - "rinbik", - "dima74", - "Yumeiro", - "superpuper32", - "kdex", - "terranisu", - "Mingun", - "teoli", - "yakovlevigorek", - "icw82", - "BedyNN", - "dbruant" + "Samotugo" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/@@iterator": { - "modified": "2019-03-23T23:03:21.064Z", + "Web/JavaScript/Reference/Global_Objects/Symbol/iterator": { + "modified": "2019-03-23T22:50:51.621Z", "contributors": [ "SphinxKnight", - "Mingun" + "neutral" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/@@species": { - "modified": "2020-10-15T22:06:58.667Z", + "Web/JavaScript/Reference/Global_Objects/Symbol/keyFor": { + "modified": "2020-10-15T21:50:47.387Z", "contributors": [ - "DwarfMason" + "boxa6", + "nakhodkiin", + "Ohar" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/@@unscopables": { - "modified": "2020-10-15T22:00:26.446Z", + "Web/JavaScript/Reference/Global_Objects/Symbol/match": { + "modified": "2019-03-23T22:50:55.400Z", "contributors": [ - "fax1ty" + "SphinxKnight", + "neutral" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/Reduce": { - "modified": "2020-10-15T21:28:31.597Z", + "Web/JavaScript/Reference/Global_Objects/Symbol/replace": { + "modified": "2019-04-02T08:34:58.523Z", "contributors": [ - "sborenko", - "nikolai-shabalin", - "likerRr", - "Ant-VAV", - "Metotron", - "fxrbfg", - "Ohar", - "slavablind91", - "AliaksandrSith", - "Riim", - "Mingun", - "NikitaK", - "Anton_Arestov" + "shlangus" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/concat": { - "modified": "2020-10-15T21:29:20.106Z", + "Web/JavaScript/Reference/Global_Objects/Symbol/search": { + "modified": "2020-10-15T22:00:25.665Z", "contributors": [ - "rookhive", - "nikolai-shabalin", - "AlekseiTarasov", - "KTatyana", - "Mingun" + "fax1ty" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/copyWithin": { - "modified": "2019-03-23T23:11:15.223Z", + "Web/JavaScript/Reference/Global_Objects/Symbol/species": { + "modified": "2019-03-23T22:50:55.253Z", "contributors": [ - "burashka", - "Mingun" + "nakhodkiin", + "pk.prog", + "neutral" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/entries": { - "modified": "2019-09-20T08:30:17.656Z", + "Web/JavaScript/Reference/Global_Objects/Symbol/split": { + "modified": "2020-10-15T22:05:40.003Z", "contributors": [ - "burashka", - "Mingun" + "0x0071" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/every": { - "modified": "2020-10-15T21:22:11.253Z", + "Web/JavaScript/Reference/Global_Objects/Symbol/toPrimitive": { + "modified": "2020-10-15T21:55:06.866Z", "contributors": [ - "VovanR", - "YozhEzhi", - "burashka", - "Mingun", - "teoli", - "hel-galdr" + "boxa6", + "nakhodkiin", + "gibson" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/fill": { - "modified": "2020-10-15T21:29:20.455Z", + "Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag": { + "modified": "2020-10-15T22:22:55.953Z", "contributors": [ - "iandr", - "nakhodkiin", - "nikolai-shabalin", - "alt-j", - "dima74", - "burashka", - "Mingun" + "vkorzhova" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/filter": { - "modified": "2020-10-15T21:29:22.486Z", + "Web/JavaScript/Reference/Global_Objects/Symbol/unscopables": { + "modified": "2020-10-15T22:00:25.901Z", "contributors": [ - "almaceleste", - "Darth-pioner", - "nikolai-shabalin", - "Sinfiotli", - "burashka", - "Aleksej", - "Mingun" + "fax1ty" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/find": { - "modified": "2020-10-15T21:29:21.073Z", + "Web/JavaScript/Reference/Global_Objects/Symbol/valueOf": { + "modified": "2019-03-23T22:50:49.481Z", "contributors": [ - "tcheburator", - "drunk", - "matveyson", - "JorJeG", - "Metotron", - "sv-kozlov", - "OksanaKaragicheva", - "AlexeyMM", - "burashka", - "torbasow", + "SphinxKnight", + "neutral" + ] + }, + "Web/JavaScript/Reference/Global_Objects/SyntaxError": { + "modified": "2019-03-23T23:08:27.309Z", + "contributors": [ + "VladimirDeminenko", "Mingun" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/findIndex": { - "modified": "2020-10-15T21:29:19.823Z", + "Web/JavaScript/Reference/Global_Objects/TypeError": { + "modified": "2020-10-15T21:30:28.885Z", "contributors": [ - "zhvirblis", - "S-le", - "burashka", + "Roman-Kosov", "Mingun" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/flat": { - "modified": "2020-12-06T17:04:44.757Z", + "Web/JavaScript/Reference/Global_Objects/TypedArray": { + "modified": "2020-10-15T21:48:29.544Z", "contributors": [ - "PaulineNemchak", - "ekirpichyov", - "geekjob", - "Akh-rman", - "Fellzo", - "vjachet" + "pk.prog", + "arai" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/flatMap": { - "modified": "2020-10-15T22:10:06.829Z", + "Web/JavaScript/Reference/Global_Objects/TypedArray/@@species": { + "modified": "2019-03-23T22:25:44.388Z", "contributors": [ - "dsrtF0x-git", - "InoY", - "taxidermic", - "Akh-rman", - "eof273", - "etroynov", - "dood" + "pk.prog" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/forEach": { - "modified": "2020-10-15T21:21:41.065Z", + "Web/JavaScript/Reference/Global_Objects/TypedArray/BYTES_PER_ELEMENT": { + "modified": "2019-03-23T22:25:40.817Z", "contributors": [ - "almaceleste", - "nikolai-shabalin", - "JorJeG", - "paulvoloschuk", - "kusonka", - "Mingun", - "Ajooluz", - "teoli", - "dunmaksim", - "IgorKlopov", - "ipetropolsky", - "John Wehin" + "pk.prog" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/from": { - "modified": "2020-10-15T21:28:50.020Z", + "Web/JavaScript/Reference/Global_Objects/TypedArray/join": { + "modified": "2019-03-23T22:26:41.183Z", "contributors": [ - "ekirpichyov", - "drwatson1", - "JorJeG", - "kdex", - "Sergey.Stolnikov", - "burashka", - "Mingun" + "pk.prog" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/includes": { - "modified": "2020-10-15T21:30:12.634Z", + "Web/JavaScript/Reference/Global_Objects/TypedArray/set": { + "modified": "2019-03-23T22:28:36.546Z", "contributors": [ - "Yialo", - "Hronex", - "nikolai-shabalin", - "dima74", - "Setol", - "burashka", - "jwhitlock", - "dema", - "Mingun", - "fscholz" + "Mototroller", + "dickclaus" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/indexOf": { - "modified": "2020-10-15T21:29:27.163Z", + "Web/JavaScript/Reference/Global_Objects/URIError": { + "modified": "2019-03-23T23:08:25.974Z", "contributors": [ - "zhvirblis", - "vlad-vorontsov", - "burashka", "Mingun" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/isArray": { - "modified": "2020-10-15T21:29:00.463Z", + "Web/JavaScript/Reference/Global_Objects/Uint16Array": { + "modified": "2020-10-15T21:59:37.871Z", "contributors": [ - "dudd1ts", - "JorJeG", - "Mingun", - "ivan_k" + "pk.prog" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/join": { - "modified": "2020-10-15T21:29:17.685Z", + "Web/JavaScript/Reference/Global_Objects/Uint32Array": { + "modified": "2020-10-15T21:59:38.707Z", "contributors": [ - "pk.prog", - "AlexeyOm", - "IslamA", - "Radiansz", - "mshykov", - "Mingun", - "teoli", - "Ajooluz" + "pk.prog" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/keys": { - "modified": "2020-10-15T21:29:27.000Z", + "Web/JavaScript/Reference/Global_Objects/Uint8Array": { + "modified": "2020-10-15T21:59:38.914Z", "contributors": [ - "nikolai-shabalin", - "burashka", - "Mingun" + "MuradAz", + "pk.prog" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/lastIndexOf": { - "modified": "2020-10-15T21:29:27.046Z", + "Web/JavaScript/Reference/Global_Objects/Uint8ClampedArray": { + "modified": "2019-03-18T21:10:47.382Z", "contributors": [ - "nikolai-shabalin", - "burashka", - "Mingun" + "InoY", + "tz4678" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/length": { - "modified": "2020-10-15T21:29:17.654Z", + "Web/JavaScript/Reference/Global_Objects/WeakMap": { + "modified": "2020-10-15T21:33:46.571Z", "contributors": [ - "ierehon1905", - "smlkA", - "Roman-Kosov", - "JorJeG", - "Mingun" + "oleksandrstarov", + "altpoint", + "lexxl", + "YozhEzhi", + "kan.a", + "icw82", + "zamuka", + "RumyantsevMichael", + "casfcitizen", + "restrry", + "shvaikalesh", + "hellboy81" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/map": { - "modified": "2020-10-15T21:25:02.588Z", + "Web/JavaScript/Reference/Global_Objects/WeakMap/clear": { + "modified": "2019-03-23T22:45:00.856Z", "contributors": [ - "Dvash", - "nikolai-shabalin", - "JorJeG", - "ZeroUnderscoreOu", - "Jemdo", - "torbasow", - "Mingun", "teoli", - "ilyamilosevic", - "Vhornets" + "WispProxy", + "casfcitizen" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/of": { - "modified": "2020-10-15T21:29:22.065Z", + "Web/JavaScript/Reference/Global_Objects/WeakMap/delete": { + "modified": "2019-03-23T22:44:55.757Z", "contributors": [ - "ekirpichyov", - "Natalya_Surikova", - "burashka", - "Mingun" + "SphinxKnight", + "casfcitizen" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/pop": { - "modified": "2020-10-15T21:29:28.268Z", + "Web/JavaScript/Reference/Global_Objects/WeakMap/get": { + "modified": "2019-03-23T22:44:52.022Z", "contributors": [ - "art-gur", - "KTatyana", - "torbasow", - "Mingun" + "SphinxKnight", + "casfcitizen" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/prototype": { - "modified": "2020-10-15T21:23:46.631Z", + "Web/JavaScript/Reference/Global_Objects/WeakMap/has": { + "modified": "2019-03-23T22:44:53.494Z", "contributors": [ - "boxa6", - "Mingun", - "teoli", - "BedyNN" + "SphinxKnight", + "casfcitizen" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/push": { - "modified": "2020-10-15T21:29:29.342Z", + "Web/JavaScript/Reference/Global_Objects/WeakMap/set": { + "modified": "2019-03-23T22:44:54.866Z", "contributors": [ - "art-gur", - "roma-derski", - "Mingun" + "SphinxKnight", + "casfcitizen" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/reduceRight": { - "modified": "2019-03-23T23:10:37.299Z", + "Web/JavaScript/Reference/Global_Objects/WeakSet": { + "modified": "2020-10-15T21:46:04.634Z", "contributors": [ - "Mingun" + "YozhEzhi", + "stRavens", + "fscholz" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/reverse": { - "modified": "2020-10-15T21:29:30.196Z", + "Web/JavaScript/Reference/Global_Objects/WeakSet/add": { + "modified": "2020-10-15T21:46:05.423Z", "contributors": [ - "nikolai-shabalin", - "Mingun" + "YozhEzhi", + "stRavens" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/shift": { - "modified": "2019-03-18T21:11:15.103Z", + "Web/JavaScript/Reference/Global_Objects/WeakSet/delete": { + "modified": "2019-03-23T22:33:36.783Z", "contributors": [ - "UriShlomov", - "Mingun" + "stRavens" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/slice": { - "modified": "2020-11-30T07:23:00.434Z", + "Web/JavaScript/Reference/Global_Objects/WeakSet/has": { + "modified": "2019-03-23T22:33:37.092Z", "contributors": [ - "chmsv", - "rulevadim", - "nikolai-shabalin", - "GraceAredel", - "Ollemesh", - "kdex", - "xaosxaos", - "Mol4ok", - "BychekRU", - "kroleg", - "Mingun" + "stRavens" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/some": { - "modified": "2020-10-15T21:22:10.601Z", + "Web/JavaScript/Reference/Global_Objects/WebAssembly": { + "modified": "2019-03-23T22:09:24.539Z", "contributors": [ - "ekirpichyov", - "VovanR", - "zhvirblis", - "Mingun", - "teoli", - "hel-galdr" + "warsan", + "Fingasss", + "curdwithraisins" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/sort": { - "modified": "2020-11-19T16:34:13.947Z", + "Web/JavaScript/Reference/Global_Objects/WebAssembly/Table": { + "modified": "2020-10-15T22:28:03.728Z", "contributors": [ - "deepdarkness", - "YozhEzhi", - "dmivtr", - "JorJeG", - "Denis-Yeromenko", - "borm", - "vlad-vorontsov", - "grabus", - "Mingun" + "amuzalevskiy" + ] + }, + "Web/JavaScript/Reference/Global_Objects/WebAssembly/compile": { + "modified": "2020-10-15T22:05:22.747Z", + "contributors": [ + "warsan" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/splice": { - "modified": "2020-12-02T07:24:33.321Z", + "Web/JavaScript/Reference/Global_Objects/WebAssembly/compileStreaming": { + "modified": "2020-10-15T22:05:24.687Z", "contributors": [ - "inva8de", - "Eskinnikita", - "zhvirblis", - "dimaqw", - "JohnnyJustDo", - "mshipov", - "terranisu", - "Mingun" + "warsan" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/toLocaleString": { - "modified": "2019-03-23T23:10:25.595Z", + "Web/JavaScript/Reference/Global_Objects/decodeURI": { + "modified": "2020-10-15T21:36:41.028Z", "contributors": [ - "IvanMorkva", - "Mingun" + "boxa6", + "KTatyana", + "dimon.durak" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/toSource": { - "modified": "2019-03-23T23:10:31.696Z", + "Web/JavaScript/Reference/Global_Objects/decodeURIComponent": { + "modified": "2020-10-15T21:32:41.332Z", "contributors": [ - "Mingun" + "boxa6", + "KTatyana", + "hellboy81" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/toString": { - "modified": "2019-09-15T17:12:05.770Z", + "Web/JavaScript/Reference/Global_Objects/encodeURI": { + "modified": "2020-10-15T21:32:41.734Z", "contributors": [ - "Glazomer", - "Ilya33", - "Mingun" + "CoruNethron", + "boxa6", + "gvammer", + "RuslanKurtjanyk", + "BychekRU", + "johniek" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/unshift": { - "modified": "2020-10-15T21:29:32.715Z", + "Web/JavaScript/Reference/Global_Objects/encodeURIComponent": { + "modified": "2020-03-12T19:42:09.083Z", "contributors": [ - "muxmux.ryzhinskiy", - "YozhEzhi", - "Mingun" + "ivanson", + "SlavaJan", + "alx-khramov", + "redveronika", + "BychekRU" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/values": { - "modified": "2019-03-23T23:07:58.684Z", + "Web/JavaScript/Reference/Global_Objects/escape": { + "modified": "2020-03-12T19:42:22.847Z", "contributors": [ - "nakhodkiin", - "burashka", - "Mingun" + "L-st" ] }, - "Web/JavaScript/Reference/Global_Objects/ArrayBuffer": { - "modified": "2019-04-21T10:54:59.612Z", + "Web/JavaScript/Reference/Global_Objects/eval": { + "modified": "2020-10-15T21:36:50.892Z", "contributors": [ - "solncebro", - "Bargamut", - "PaulShestakov", - "pashutk" + "teleskop150750", + "rookhive", + "nochnoy", + "boxa6", + "Kassaila", + "Mumin0v", + "Stejok", + "lazy-code", + "Kesantielu", + "pankov", + "BychekRU", + "KTatyana", + "Bogdan92" ] }, - "Web/JavaScript/Reference/Global_Objects/ArrayBuffer/isView": { - "modified": "2020-10-15T22:21:50.519Z", + "Web/JavaScript/Reference/Global_Objects/globalThis": { + "modified": "2020-10-15T22:22:38.335Z", "contributors": [ - "shmel3" + "almaceleste", + "ekirpichyov" ] }, - "Web/JavaScript/Reference/Global_Objects/ArrayBuffer/slice": { - "modified": "2019-03-23T22:15:54.709Z", + "Web/JavaScript/Reference/Global_Objects/isFinite": { + "modified": "2020-10-15T21:34:22.861Z", "contributors": [ - "lazyexpert" + "boxa6", + "pk.prog", + "keepon99", + "RinatMullayanov" ] }, - "Web/JavaScript/Reference/Global_Objects/AsyncFunction": { - "modified": "2019-03-23T22:09:52.218Z", + "Web/JavaScript/Reference/Global_Objects/isNaN": { + "modified": "2020-10-15T21:18:00.962Z", "contributors": [ - "Saiberbest" + "boxa6", + "deadem", + "arogachev", + "DrTantal", + "toxahak", + "igor4949i", + "torbasow", + "SphinxKnight", + "fscholz", + "Troynov", + "teoli", + "Dionys", + "Sheppy" ] }, - "Web/JavaScript/Reference/Global_Objects/AsyncFunction/prototype": { - "modified": "2020-10-15T22:21:51.709Z", + "Web/JavaScript/Reference/Global_Objects/null": { + "modified": "2020-10-15T21:29:52.036Z", "contributors": [ - "AliaksandrZahorski" + "yar85", + "YozhEzhi", + "boxa6", + "SphinxKnight", + "Mingun" ] }, - "Web/JavaScript/Reference/Global_Objects/Atomics": { - "modified": "2019-03-23T22:09:35.332Z", + "Web/JavaScript/Reference/Global_Objects/parseFloat": { + "modified": "2020-10-15T21:31:40.524Z", "contributors": [ - "Kazakoff", - "Exseption", - "curdwithraisins" + "boxa6", + "iota77", + "zhvirblis", + "pk.prog", + "KTatyana", + "schoonc", + "PC-Contra" ] }, - "Web/JavaScript/Reference/Global_Objects/Atomics/add": { - "modified": "2019-03-23T22:09:42.443Z", + "Web/JavaScript/Reference/Global_Objects/parseInt": { + "modified": "2020-10-15T21:31:24.544Z", "contributors": [ - "curdwithraisins" + "boxa6", + "pk.prog", + "Natalya_Surikova", + "KTatyana", + "Acknowhow", + "oshilan", + "raspberry59" ] }, - "Web/JavaScript/Reference/Global_Objects/Atomics/sub": { - "modified": "2019-03-23T22:09:32.642Z", + "Web/JavaScript/Reference/Global_Objects/undefined": { + "modified": "2020-10-15T21:29:55.851Z", "contributors": [ - "curdwithraisins" + "almaceleste", + "boxa6", + "YozhEzhi", + "sasd97", + "SphinxKnight", + "Mingun" ] }, - "Web/JavaScript/Reference/Global_Objects/BigInt": { - "modified": "2020-10-15T22:19:09.504Z", + "Web/JavaScript/Reference/Global_Objects/unescape": { + "modified": "2020-03-12T19:40:42.425Z", "contributors": [ - "art-gur", - "bm12", - "sh7dm", - "3bl3gamer", - "Anna-Myzukina" + "Mishman" ] }, - "Web/JavaScript/Reference/Global_Objects/BigInt/asIntN": { - "modified": "2020-10-15T22:20:36.621Z", + "Web/JavaScript/Reference/Global_Objects/uneval": { + "modified": "2020-10-15T21:32:06.154Z", "contributors": [ - "faramozzayw" + "boxa6", + "teoli", + "maxbarbul", + "fscholz", + "Correcter" ] }, - "Web/JavaScript/Reference/Global_Objects/BigInt/asUintN": { - "modified": "2020-10-15T22:31:22.153Z", + "Web/JavaScript/Reference/Iteration_protocols": { + "modified": "2020-03-12T19:40:23.617Z", "contributors": [ - "ascker0087" + "Ostanioni", + "AliaksandrZahorski", + "nikolai-shabalin", + "SphinxKnight", + "asaskevich", + "petanisimov", + "fscholz", + "hindmost" ] }, - "Web/JavaScript/Reference/Global_Objects/Boolean": { - "modified": "2019-07-22T13:06:53.919Z", + "Web/JavaScript/Reference/Lexical_grammar": { + "modified": "2020-10-09T04:21:50.644Z", "contributors": [ - "wbamberg", - "Denis-Yeromenko", - "villager", - "Aleksej", - "AlexChuev", + "demid.kopan", + "salaiyuliya", + "almaceleste", + "uxenus", + "Vukto", + "maxno62", + "Pandemoniumus", + "AlexeyVasilievE", + "glum-psyche", + "ValdemarTerte", + "kdex", + "pk.prog", + "Frenk1", + "MichaelBag", + "gremlinLee" + ] + }, + "Web/JavaScript/Reference/Operators": { + "modified": "2020-03-12T19:38:03.910Z", + "contributors": [ + "the-toxic", + "pk.prog", + "SphinxKnight", + "teoli", "Mingun", - "Troynov" + "ethertank" ] }, - "Web/JavaScript/Reference/Global_Objects/Boolean/prototype": { - "modified": "2019-03-23T23:08:22.785Z", + "Web/JavaScript/Reference/Operators/Addition": { + "modified": "2020-10-15T22:31:44.228Z", "contributors": [ - "Mingun" + "DarkExodusXX", + "Lifamen" ] }, - "Web/JavaScript/Reference/Global_Objects/Boolean/toSource": { - "modified": "2019-03-23T23:08:31.932Z", + "Web/JavaScript/Reference/Operators/Addition_assignment": { + "modified": "2020-10-15T22:33:40.126Z", "contributors": [ - "Mingun" + "DarkExodusXX" ] }, - "Web/JavaScript/Reference/Global_Objects/Boolean/toString": { - "modified": "2019-03-23T23:08:25.305Z", + "Web/JavaScript/Reference/Operators/Bitwise_AND": { + "modified": "2020-10-19T04:55:04.550Z", + "contributors": [ + "elkabelaya" + ] + }, + "Web/JavaScript/Reference/Operators/Decrement": { + "modified": "2020-10-15T22:35:06.680Z", "contributors": [ - "Mingun" + "dikovinki" ] }, - "Web/JavaScript/Reference/Global_Objects/Boolean/valueOf": { - "modified": "2019-03-23T23:08:35.008Z", + "Web/JavaScript/Reference/Operators/Destructuring_assignment": { + "modified": "2019-03-18T20:41:31.882Z", "contributors": [ - "Mingun" + "zziger", + "Beliarh", + "InoY", + "kdex", + "shapkarin", + "he11b0rn", + "wa-Nadoo", + "e-omo", + "y.ivashchenko", + "SphinxKnight", + "dtretyakov" ] }, - "Web/JavaScript/Reference/Global_Objects/DataView": { - "modified": "2020-10-15T22:07:01.854Z", + "Web/JavaScript/Reference/Operators/Nullish_coalescing_operator": { + "modified": "2020-11-06T20:31:05.880Z", "contributors": [ - "MuradAz" + "qwerty.wasd.dev", + "notacircle" ] }, - "Web/JavaScript/Reference/Global_Objects/DataView/setInt16": { - "modified": "2020-10-15T22:26:51.553Z", + "Web/JavaScript/Reference/Operators/Object_initializer": { + "modified": "2020-03-12T19:46:20.455Z", "contributors": [ - "A-Zalt" + "EduardBedratyi", + "Nymph", + "severn101", + "curdwithraisins" ] }, - "Web/JavaScript/Reference/Global_Objects/Date": { - "modified": "2020-10-15T21:21:23.873Z", + "Web/JavaScript/Reference/Operators/Operator_Precedence": { + "modified": "2020-06-21T17:36:11.552Z", "contributors": [ - "Lutsko.Aleksandr", - "sashakrauzer", - "denis_dubovitskiy", - "prinze77", - "boxa6", - "wbamberg", - "MerkUriy", - "dvapelnik", - "lanedis", - "Mingun", - "zasipin", - "liloi", + "Yialo", + "nakhodkiin", + "synth", + "Ihor92", + "BychekRU", + "Aleksej", + "fscholz", + "mcmimik", "teoli", - "Funkill", - "bvc3at" + "TotalAMD", + "hazestalker" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/UTC": { - "modified": "2020-10-15T21:30:36.314Z", + "Web/JavaScript/Reference/Operators/Optional_chaining": { + "modified": "2020-10-15T22:22:53.487Z", "contributors": [ - "art-gur", - "Kogoruhn", - "Mingun" + "InoY", + "rookhive", + "Kassaila", + "Dimon24021993" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/getDate": { - "modified": "2020-11-23T09:29:17.949Z", + "Web/JavaScript/Reference/Operators/Property_Accessors": { + "modified": "2020-11-28T14:23:33.816Z", "contributors": [ - "Thr0TT1e", - "YozhEzhi", - "Mingun" + "ialexi-bl", + "injashkin", + "sbadulin", + "karatheodory", + "BychekRU" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/getDay": { - "modified": "2020-11-23T09:40:35.418Z", + "Web/JavaScript/Reference/Operators/Spread_syntax": { + "modified": "2020-10-15T22:09:59.030Z", "contributors": [ - "Thr0TT1e", - "YozhEzhi", - "pushandplay", - "Mingun" + "Next-Ra", + "khikmat1970", + "s0da", + "AliaksandrZahorski", + "svezr", + "Ostanioni", + "Acrom7", + "R-Oscar", + "DenisIgnatchenko", + "dev1am", + "ue4prog" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/getFullYear": { - "modified": "2020-11-23T09:25:53.294Z", + "Web/JavaScript/Reference/Operators/async_function": { + "modified": "2020-03-12T19:46:03.207Z", "contributors": [ - "Thr0TT1e", - "YozhEzhi", - "Mingun" + "utlov", + "myscode", + "nakhodkiin", + "ahtohbi4" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/getHours": { - "modified": "2020-11-23T09:42:06.437Z", + "Web/JavaScript/Reference/Operators/await": { + "modified": "2020-03-12T19:46:19.108Z", "contributors": [ - "Thr0TT1e", - "YozhEzhi", - "Mingun" + "Ignat", + "nakhodkiin", + "Vladimir-Vinogradov", + "matvey-b", + "XaveScor", + "redishko" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/getMilliseconds": { - "modified": "2020-11-23T09:43:47.925Z", + "Web/JavaScript/Reference/Operators/class": { + "modified": "2020-10-07T05:22:57.052Z", "contributors": [ - "Thr0TT1e", - "Mingun" + "nikolasmelui", + "utlov", + "aliaksandr-s" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/getMinutes": { - "modified": "2020-11-23T09:46:11.501Z", + "Web/JavaScript/Reference/Operators/delete": { + "modified": "2020-03-12T19:38:01.140Z", "contributors": [ - "Thr0TT1e", - "Mingun" + "tarasovAG", + "nurbek-ab", + "fscholz", + "teoli", + "nurbek.ab" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/getMonth": { - "modified": "2020-11-23T09:48:49.474Z", + "Web/JavaScript/Reference/Operators/function": { + "modified": "2020-10-15T21:29:24.840Z", "contributors": [ - "Thr0TT1e", - "Mingun" + "utlov", + "aleksandrpnshkn", + "severyanov", + "KTatyana", + "SphinxKnight", + "teoli", + "AlexyAV" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/getSeconds": { - "modified": "2020-11-23T09:50:13.502Z", + "Web/JavaScript/Reference/Operators/function*": { + "modified": "2020-03-12T19:43:34.797Z", "contributors": [ - "Thr0TT1e", - "Mingun" + "utlov", + "KTatyana", + "nurbek-ab" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/getTime": { - "modified": "2020-11-23T10:07:21.665Z", + "Web/JavaScript/Reference/Operators/in": { + "modified": "2020-10-15T21:34:23.027Z", "contributors": [ - "Thr0TT1e", - "YozhEzhi", - "Mingun" + "ekirpichyov", + "utlov", + "Nvisual", + "vitaliylag", + "Natalya_Surikova", + "Frenk1" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset": { - "modified": "2019-03-23T23:08:01.324Z", + "Web/JavaScript/Reference/Operators/instanceof": { + "modified": "2020-10-15T21:42:40.346Z", "contributors": [ - "Mingun" + "iGanza429", + "dima74", + "vitaliylag", + "lenkasoft", + "c01nd01r", + "spmpl" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/getUTCDate": { - "modified": "2019-03-23T23:07:51.614Z", + "Web/JavaScript/Reference/Operators/new": { + "modified": "2020-03-12T19:42:17.777Z", "contributors": [ - "Mingun" + "mikhail.makarov", + "msherstobitow", + "FlashbangSW", + "pk.prog", + "Guria", + "svarnoi420", + "mazhuravlev" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/getUTCDay": { - "modified": "2019-03-23T23:07:47.611Z", + "Web/JavaScript/Reference/Operators/new.target": { + "modified": "2020-03-12T19:42:44.140Z", "contributors": [ - "Mingun" + "bakugod", + "vitaliylag", + "Isk1n", + "uleming" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/getUTCFullYear": { - "modified": "2019-03-23T23:07:46.134Z", + "Web/JavaScript/Reference/Operators/super": { + "modified": "2020-11-02T05:32:18.854Z", "contributors": [ - "Mingun" + "ITheCorgi", + "almaceleste", + "boxa6", + "chuckis", + "YozhEzhi", + "Eugene", + "Renay", + "Axepuff", + "rinbik", + "quassnoi", + "sgrogov", + "adamgrey28", + "loki2d", + "spmpl", + "uleming" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/getUTCHours": { - "modified": "2019-03-23T23:07:53.266Z", + "Web/JavaScript/Reference/Operators/this": { + "modified": "2020-10-15T21:34:17.291Z", "contributors": [ - "Mingun" + "almaceleste", + "dmarkin", + "HermesC", + "smlkA", + "JS_Johny", + "marinazareka", + "sbadulin", + "Stejok", + "aprostya", + "dChunikhin", + "DayFan", + "olegkarpovich", + "alexfromvl", + "Viktoria_Slesarchuk", + "eXukraine", + "AlexO", + "AliaksandrSith", + "AlexKhram", + "vovek", + "wertlex", + "Mary_Gorgol" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/getUTCMilliseconds": { - "modified": "2019-03-23T23:07:39.074Z", + "Web/JavaScript/Reference/Operators/typeof": { + "modified": "2020-10-15T21:29:57.988Z", "contributors": [ - "Mingun" + "Bonerdelli", + "dima74", + "Sergey.Vdovareize", + "Ohar", + "SphinxKnight", + "teoli", + "kvantor" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/getUTCMinutes": { - "modified": "2019-03-23T23:07:42.061Z", + "Web/JavaScript/Reference/Operators/void": { + "modified": "2020-03-12T19:40:33.655Z", "contributors": [ - "Mingun" + "artskar", + "hlomzik", + "AlexChuev" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/getUTCMonth": { - "modified": "2019-03-23T23:07:45.367Z", + "Web/JavaScript/Reference/Operators/yield": { + "modified": "2020-11-07T03:00:56.468Z", "contributors": [ - "Mingun" + "antonzahariev", + "ekirpichyov", + "YozhEzhi", + "dtretyakov" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/getUTCSeconds": { - "modified": "2019-03-23T23:07:43.174Z", + "Web/JavaScript/Reference/Operators/yield*": { + "modified": "2020-10-10T05:41:53.806Z", "contributors": [ - "Mingun" + "ialexi-bl", + "utlov", + "d4rkm3z" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/getYear": { - "modified": "2020-10-15T21:30:40.324Z", + "Web/JavaScript/Reference/Statements": { + "modified": "2020-03-12T19:38:08.960Z", "contributors": [ - "YozhEzhi", - "Mingun" + "SphinxKnight", + "teoli", + "Mingun", + "trevorh" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/now": { - "modified": "2020-10-15T21:30:36.867Z", + "Web/JavaScript/Reference/Statements/Empty": { + "modified": "2020-04-12T07:22:12.597Z", "contributors": [ - "art-gur", - "Mingun" + "arnoldovich", + "otj40", + "nakhodkiin", + "BychekRU" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/parse": { - "modified": "2019-10-24T09:44:34.488Z", + "Web/JavaScript/Reference/Statements/async_function": { + "modified": "2020-10-15T21:52:51.275Z", "contributors": [ - "alx-khramov", - "Mingun" + "AppleAlex", + "nikolai-shabalin", + "parusev", + "sazhnevdunice", + "mmameko", + "epodivilov", + "rsvato", + "glowlh", + "torbasow", + "nakhodkiin", + "BondarenkoAlex", + "tcheburator", + "curdwithraisins" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/prototype": { - "modified": "2020-02-07T02:50:13.993Z", + "Web/JavaScript/Reference/Statements/break": { + "modified": "2020-03-12T19:39:49.381Z", "contributors": [ - "alexbs", - "deepdarkness", - "Mingun" + "ConstantineZz", + "SphinxKnight", + "4eb0da" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/setDate": { - "modified": "2020-10-15T21:30:41.423Z", + "Web/JavaScript/Reference/Statements/class": { + "modified": "2020-10-07T05:30:01.345Z", "contributors": [ - "YozhEzhi", - "webkumo", - "Mingun" + "nikolasmelui", + "torbasow", + "utlov", + "curdwithraisins" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/setFullYear": { - "modified": "2019-03-23T23:07:39.254Z", + "Web/JavaScript/Reference/Statements/const": { + "modified": "2020-10-15T21:30:33.647Z", "contributors": [ - "kirilloid", - "Mingun" + "DASenkiv", + "pepelsbey", + "pk.prog", + "torbasow", + "WispProxy", + "Grumvol", + "xfg", + "gibson", + "crvst", + "SphinxKnight", + "KiraAndMaxim" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/setHours": { - "modified": "2019-03-23T23:07:43.801Z", + "Web/JavaScript/Reference/Statements/continue": { + "modified": "2020-04-11T02:20:58.132Z", "contributors": [ - "Mingun" + "pefbrute", + "alextretyak", + "SphinxKnight", + "4eb0da" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/setMilliseconds": { - "modified": "2019-03-23T23:07:39.901Z", + "Web/JavaScript/Reference/Statements/debugger": { + "modified": "2020-03-12T19:45:32.750Z", "contributors": [ - "Mingun" + "Svetzayats", + "david-baghdasaryan", + "paratagas" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/setMinutes": { - "modified": "2019-03-23T23:07:42.239Z", + "Web/JavaScript/Reference/Statements/do...while": { + "modified": "2020-10-15T21:50:00.301Z", "contributors": [ - "Grundy", - "Mingun" + "Kilzar", + "ekirpichyov", + "102" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/setMonth": { - "modified": "2019-08-28T08:27:33.855Z", + "Web/JavaScript/Reference/Statements/export": { + "modified": "2020-10-15T21:44:56.789Z", "contributors": [ - "Mingun" + "almaceleste", + "SphinxKnight", + "ravbetsky", + "Roman-Kosov", + "marat-curious", + "maksugr", + "HaffASE", + "Checkmatez", + "maxmind", + "M1rotvorez", + "sunsetninja", + "frodomogoni", + "jeneg" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/setSeconds": { - "modified": "2019-03-23T23:07:43.395Z", + "Web/JavaScript/Reference/Statements/for": { + "modified": "2020-03-12T19:40:21.266Z", "contributors": [ - "Mingun" + "farvater2", + "romankrru", + "BychekRU", + "ascheyloven" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/setTime": { - "modified": "2019-03-23T23:07:49.178Z", + "Web/JavaScript/Reference/Statements/for-await...of": { + "modified": "2020-10-15T22:21:30.706Z", "contributors": [ - "Mingun" + "imciflam" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/setUTCDate": { - "modified": "2019-03-23T23:07:49.535Z", + "Web/JavaScript/Reference/Statements/for...in": { + "modified": "2020-03-12T19:42:44.128Z", "contributors": [ - "Mingun" + "camelos", + "Miracle93", + "olvin-hh", + "AliaksandrZahorski", + "Jarith", + "UriShlomov", + "a1ia5", + "BychekRU" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/setUTCFullYear": { - "modified": "2019-03-23T23:07:46.690Z", + "Web/JavaScript/Reference/Statements/for...of": { + "modified": "2020-10-15T21:31:19.454Z", "contributors": [ - "Mingun" + "iacade", + "alx-khramov", + "rookhive", + "AliaksandrZahorski", + "becha", + "SphinxKnight", + "iomtt94", + "babichss", + "ZeroUnderscoreOu", + "BychekRU", + "dtretyakov" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/setUTCHours": { - "modified": "2019-03-23T23:07:41.747Z", + "Web/JavaScript/Reference/Statements/function": { + "modified": "2020-10-15T21:39:37.186Z", "contributors": [ - "Mingun" + "YozhEzhi", + "4rontender", + "KTatyana", + "forestbird", + "BychekRU" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/setUTCMilliseconds": { - "modified": "2019-03-23T23:07:43.019Z", + "Web/JavaScript/Reference/Statements/function*": { + "modified": "2020-03-12T19:39:52.436Z", "contributors": [ - "Mingun" + "SphinxKnight", + "Sajag", + "mrOrlando", + "MaksymI", + "kdex", + "deman", + "MalkavianMax", + "BychekRU", + "dtretyakov" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/setUTCMinutes": { - "modified": "2019-03-23T23:07:52.228Z", + "Web/JavaScript/Reference/Statements/if...else": { + "modified": "2020-03-12T19:42:47.988Z", "contributors": [ - "Mingun" + "satansdeer", + "GraceAredel", + "alexbaumgertner", + "ultrinnan" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/setUTCMonth": { - "modified": "2019-03-23T23:07:49.014Z", + "Web/JavaScript/Reference/Statements/import": { + "modified": "2020-10-15T21:32:02.235Z", "contributors": [ - "Mingun" + "Akmatworld", + "almaceleste", + "flancer64", + "Yialo", + "SphinxKnight", + "ZzDmitry", + "Reinerok", + "InoY", + "pibodi", + "torbasow", + "Ingverd", + "papadima", + "bad4iz", + "nikolaifedorov", + "maxmind", + "standy", + "vvalgis", + "sutangu", + "kurzgame" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/setUTCSeconds": { - "modified": "2019-03-23T23:07:49.949Z", + "Web/JavaScript/Reference/Statements/import.meta": { + "modified": "2020-10-15T22:22:14.576Z", "contributors": [ - "Mingun" + "Luanre" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/setYear": { - "modified": "2020-10-15T21:30:50.607Z", + "Web/JavaScript/Reference/Statements/label": { + "modified": "2020-10-15T21:30:43.430Z", "contributors": [ - "YozhEzhi", - "Mingun" + "ekirpichyov", + "SphinxKnight", + "4eb0da" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/toDateString": { - "modified": "2019-03-23T23:07:29.510Z", + "Web/JavaScript/Reference/Statements/let": { + "modified": "2020-03-12T19:38:07.887Z", "contributors": [ - "Mingun" + "DASenkiv", + "skrikl", + "rinbik", + "avernikoz", + "Stejok", + "Kostandy", + "GaidaiAndrii", + "kdex", + "Yumeiro", + "WispProxy", + "titanium-iridium", + "andbas", + "iseeyou911", + "smichrissoft", + "stek29", + "Tvortsa", + "fscholz", + "teoli", + "nurbek.ab" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/toGMTString": { - "modified": "2019-03-23T23:07:35.386Z", + "Web/JavaScript/Reference/Statements/return": { + "modified": "2020-10-15T21:38:04.879Z", "contributors": [ - "Mingun" + "ekirpichyov", + "KTatyana", + "Biosneakers", + "BychekRU", + "janemel", + "The-Raven" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/toISOString": { - "modified": "2019-03-23T23:07:33.750Z", + "Web/JavaScript/Reference/Statements/switch": { + "modified": "2020-10-15T21:31:26.209Z", "contributors": [ - "Mingun" + "almaceleste", + "alfill", + "Stejok", + "Natalya_Surikova", + "4eb0da" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/toJSON": { - "modified": "2019-03-23T23:07:37.415Z", + "Web/JavaScript/Reference/Statements/throw": { + "modified": "2020-03-12T19:39:43.115Z", "contributors": [ - "Mingun" + "albrin", + "Roovwhite", + "ZavodPodushek", + "Natalya_Surikova", + "sergey.bakaev", + "SphinxKnight", + "hellboy81" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString": { - "modified": "2019-03-18T21:14:44.198Z", + "Web/JavaScript/Reference/Statements/try...catch": { + "modified": "2020-05-24T09:50:11.525Z", "contributors": [ - "Mingun", - "teoli", - "kup" + "ialexi-bl", + "smitt14ua", + "DeekHalden", + "YaroslavSelevanov", + "illya-s", + "x1unix", + "DavidWebb", + "nikitaermishin", + "NikitaCoder" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/toLocaleString": { - "modified": "2019-04-25T06:23:31.086Z", + "Web/JavaScript/Reference/Statements/var": { + "modified": "2020-10-15T21:40:16.057Z", "contributors": [ - "Ferguse", - "Mingun" + "ekirpichyov", + "letulip", + "AlexKhram", + "shalimski", + "Saviloff" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/toLocaleTimeString": { - "modified": "2019-03-23T23:07:26.983Z", + "Web/JavaScript/Reference/Statements/while": { + "modified": "2020-03-12T19:44:53.115Z", "contributors": [ - "Mingun" + "KTatyana" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/toSource": { - "modified": "2019-03-23T23:07:30.899Z", + "Web/JavaScript/Reference/Statements/with": { + "modified": "2020-03-12T19:46:20.775Z", "contributors": [ - "Mingun" + "asv7780", + "superpuper32", + "Waleron96", + "animhotep" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/toString": { - "modified": "2019-03-23T23:07:27.147Z", + "Web/JavaScript/Reference/Strict_mode": { + "modified": "2020-03-12T19:37:59.459Z", "contributors": [ - "Mingun" + "almaceleste", + "Yialo", + "alexbs", + "coxdn", + "randomnf", + "ris58h", + "spixe37", + "Sheppy", + "karmagood", + "alexdarc", + "egor-sorokin", + "hatroman", + "Megabyteceer", + "dimitryony", + "WispProxy", + "Natalya_Surikova", + "compsphere", + "Grumvol", + "torbasow", + "fscholz", + "zlumyo", + "akudiyar", + "fvtsfedu", + "r00ger", + "egml", + "AntonBezrukov", + "uleming" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/toTimeString": { - "modified": "2020-10-15T21:30:50.319Z", + "Web/JavaScript/Reference/Strict_mode/Transitioning_to_strict_mode": { + "modified": "2020-03-12T19:42:24.126Z", "contributors": [ - "art-gur", - "Mingun" + "almaceleste", + "coxdn", + "nakhodkiin", + "akmil", + "tselishev-semen" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/toUTCString": { - "modified": "2019-03-23T23:07:27.719Z", + "Web/JavaScript/Reference/Trailing_commas": { + "modified": "2020-10-15T22:22:53.977Z", "contributors": [ - "Mingun" + "leshkin", + "ekirpichyov" ] }, - "Web/JavaScript/Reference/Global_Objects/Date/valueOf": { - "modified": "2019-03-23T23:07:24.461Z", + "Web/JavaScript/Typed_arrays": { + "modified": "2020-03-12T19:45:54.627Z", "contributors": [ - "Mingun" + "shevchenko", + "Imperat", + "Bargamut", + "redishko", + "WispProxy", + "Anomeon", + "some_vlad", + "Megabyteceer" ] }, - "Web/JavaScript/Reference/Global_Objects/Error": { - "modified": "2020-10-15T21:30:29.342Z", + "Web/Manifest": { + "modified": "2020-10-15T21:52:44.707Z", "contributors": [ - "Bakosa666", - "boxa6", - "mshutov", - "ZeroUnderscoreOu", - "Drugak", - "KTatyana", - "pk.prog", - "Mingun" + "almaceleste", + "chrisdavidmills", + "bershanskiy", + "ZolotoArtem", + "Encamy", + "SergeyMirvoda", + "Eugeno", + "Katarzina", + "Kidsman", + "suncitygirl", + "curdwithraisins" ] }, - "Web/JavaScript/Reference/Global_Objects/Error/Stack": { - "modified": "2019-03-23T23:08:35.216Z", + "Web/Manifest/background_color": { + "modified": "2020-10-15T22:28:08.267Z", "contributors": [ - "Mingun" + "almaceleste", + "chrisdavidmills" ] }, - "Web/JavaScript/Reference/Global_Objects/Error/columnNumber": { - "modified": "2019-03-23T23:08:51.041Z", + "Web/Manifest/categories": { + "modified": "2020-10-15T22:28:07.809Z", "contributors": [ - "Mingun" + "almaceleste", + "chrisdavidmills" ] }, - "Web/JavaScript/Reference/Global_Objects/Error/fileName": { - "modified": "2019-03-23T23:08:50.913Z", + "Web/Manifest/description": { + "modified": "2020-10-15T22:28:07.733Z", "contributors": [ - "Mingun" + "almaceleste", + "chrisdavidmills" ] }, - "Web/JavaScript/Reference/Global_Objects/Error/lineNumber": { - "modified": "2019-03-18T21:16:24.987Z", + "Web/Manifest/dir": { + "modified": "2020-10-15T22:28:08.586Z", "contributors": [ - "Mingun" + "almaceleste", + "chrisdavidmills" ] }, - "Web/JavaScript/Reference/Global_Objects/Error/message": { - "modified": "2019-03-23T23:08:49.501Z", + "Web/Manifest/display": { + "modified": "2020-10-15T22:28:07.850Z", "contributors": [ - "Mingun" + "almaceleste", + "chrisdavidmills" ] }, - "Web/JavaScript/Reference/Global_Objects/Error/name": { - "modified": "2019-03-23T23:08:51.293Z", + "Web/Manifest/iarc_rating_id": { + "modified": "2020-10-15T22:28:08.596Z", "contributors": [ - "Mingun" + "almaceleste", + "chrisdavidmills" ] }, - "Web/JavaScript/Reference/Global_Objects/Error/prototype": { - "modified": "2019-03-23T23:08:50.114Z", - "contributors": [ - "rinbik", - "Mingun" + "Web/Manifest/icons": { + "modified": "2020-10-15T22:28:09.358Z", + "contributors": [ + "almaceleste", + "chrisdavidmills" ] }, - "Web/JavaScript/Reference/Global_Objects/Error/toSource": { - "modified": "2019-03-23T23:08:35.807Z", + "Web/Manifest/lang": { + "modified": "2020-10-15T22:28:09.577Z", "contributors": [ - "Mingun" + "almaceleste", + "chrisdavidmills" ] }, - "Web/JavaScript/Reference/Global_Objects/Error/toString": { - "modified": "2019-03-23T23:08:36.104Z", + "Web/Manifest/name": { + "modified": "2020-10-15T22:28:09.359Z", "contributors": [ - "Mingun" + "almaceleste", + "chrisdavidmills" ] }, - "Web/JavaScript/Reference/Global_Objects/EvalError": { - "modified": "2019-03-23T23:08:30.186Z", + "Web/Manifest/orientation": { + "modified": "2020-10-15T22:28:08.826Z", "contributors": [ - "Mingun" + "almaceleste", + "chrisdavidmills" ] }, - "Web/JavaScript/Reference/Global_Objects/EvalError/prototype": { - "modified": "2019-03-23T23:08:32.207Z", + "Web/Manifest/prefer_related_applications": { + "modified": "2020-10-15T22:28:08.735Z", "contributors": [ - "Mingun" + "almaceleste", + "chrisdavidmills" ] }, - "Web/JavaScript/Reference/Global_Objects/Float32Array": { - "modified": "2020-10-15T21:41:15.793Z", + "Web/Manifest/related_applications": { + "modified": "2020-10-15T22:28:09.294Z", "contributors": [ - "av-dev", - "pk.prog", - "usernameak", - "savelichalex" + "almaceleste", + "chrisdavidmills" ] }, - "Web/JavaScript/Reference/Global_Objects/Float64Array": { - "modified": "2020-10-15T21:59:37.641Z", + "Web/Manifest/scope": { + "modified": "2020-10-15T22:28:09.050Z", "contributors": [ - "pk.prog" + "almaceleste", + "chrisdavidmills" ] }, - "Web/JavaScript/Reference/Global_Objects/Function": { - "modified": "2020-10-15T21:14:32.042Z", + "Web/Manifest/screenshots": { + "modified": "2020-10-15T22:28:09.543Z", "contributors": [ - "benzin_kanister", - "Yialo", - "CROGOT", - "boxa6", - "Mingun", - "teoli", - "Skorney" + "almaceleste", + "chrisdavidmills" ] }, - "Web/JavaScript/Reference/Global_Objects/Function/apply": { - "modified": "2020-03-13T10:22:12.516Z", + "Web/Manifest/short_name": { + "modified": "2020-10-15T22:21:30.619Z", "contributors": [ - "rookhive", - "EVRUSIN", - "NovikovViktor", - "Natalya_Surikova", - "Mingun" + "almaceleste", + "chrisdavidmills", + "bershanskiy" ] }, - "Web/JavaScript/Reference/Global_Objects/Function/arguments": { - "modified": "2019-03-23T23:08:58.338Z", + "Web/Manifest/start_url": { + "modified": "2020-10-15T22:28:10.438Z", "contributors": [ - "Mingun" + "almaceleste", + "chrisdavidmills" ] }, - "Web/JavaScript/Reference/Global_Objects/Function/bind": { - "modified": "2019-03-23T23:11:14.089Z", + "Web/Manifest/theme_color": { + "modified": "2020-10-15T22:28:10.250Z", "contributors": [ - "vlad-vorontsov", - "alfaslash", - "IPri", - "mxxn", - "nikbelikov", - "rmaksim", - "Mingun", - "im7mortal", - "teoli", - "AlexyAV" + "almaceleste", + "chrisdavidmills" ] }, - "Web/JavaScript/Reference/Global_Objects/Function/call": { - "modified": "2019-10-11T04:40:04.178Z", + "Web/MathML": { + "modified": "2019-10-06T11:07:41.869Z", "contributors": [ - "vitaminX", - "Natalya_Surikova", - "Mingun", - "teoli", - "fscholz" + "valtaranets", + "bsergey", + "fider", + "koska", + "joemix" ] }, - "Web/JavaScript/Reference/Global_Objects/Function/caller": { - "modified": "2019-05-06T13:11:25.305Z", + "Web/MathML/Authoring": { + "modified": "2019-03-23T22:08:43.986Z", "contributors": [ - "Neitrin", - "Mingun" + "bsergey", + "kimesik" ] }, - "Web/JavaScript/Reference/Global_Objects/Function/displayName": { - "modified": "2019-03-23T23:08:57.657Z", + "Web/MathML/Element": { + "modified": "2019-03-23T23:02:16.227Z", "contributors": [ - "Mingun" + "bsergey", + "splewako" ] }, - "Web/JavaScript/Reference/Global_Objects/Function/length": { - "modified": "2019-03-23T23:33:11.930Z", + "Web/MathML/Element/maction": { + "modified": "2020-10-15T22:14:19.571Z", "contributors": [ - "Mingun", - "teoli", - "maxmaximov" + "bsergey" ] }, - "Web/JavaScript/Reference/Global_Objects/Function/name": { - "modified": "2020-10-15T21:28:28.242Z", + "Web/MathML/Element/math": { + "modified": "2019-03-23T23:02:16.927Z", "contributors": [ - "Simaleon", - "sashakrauzer", - "MerkUriy", - "volokolamskspb", - "Yialo", - "nakhodkiin", - "SphinxKnight", - "Mingun", - "teoli", - "Lord_Howe" + "Sykoku" ] }, - "Web/JavaScript/Reference/Global_Objects/Function/prototype": { - "modified": "2019-03-24T00:03:59.291Z", + "Web/MathML/Element/menclose": { + "modified": "2020-10-15T22:15:07.763Z", "contributors": [ - "Devinora", - "pk.prog", - "Mingun", - "teoli", - "fscholz", - "Skorney" + "bsergey" ] }, - "Web/JavaScript/Reference/Global_Objects/Function/toSource": { - "modified": "2019-03-23T23:08:53.546Z", + "Web/MathML/Element/merror": { + "modified": "2020-10-15T22:15:45.168Z", "contributors": [ - "Mingun" + "bsergey" ] }, - "Web/JavaScript/Reference/Global_Objects/Function/toString": { - "modified": "2019-03-23T23:08:47.306Z", + "Web/MathML/Element/mfenced": { + "modified": "2020-10-15T22:16:56.742Z", "contributors": [ - "Mingun" + "bsergey" ] }, - "Web/JavaScript/Reference/Global_Objects/Generator": { - "modified": "2020-12-08T04:46:07.883Z", + "Web/MathML/Element/mglyph": { + "modified": "2020-10-30T16:27:27.508Z", "contributors": [ - "bskydive", - "ahtohbi4", - "ygkorea" + "d0rj" ] }, - "Web/JavaScript/Reference/Global_Objects/Generator/next": { - "modified": "2020-10-15T22:22:50.166Z", + "Web/MathML/Element/mn": { + "modified": "2020-10-30T16:23:01.293Z", "contributors": [ - "ekirpichyov" + "d0rj" ] }, - "Web/JavaScript/Reference/Global_Objects/Generator/return": { - "modified": "2020-10-15T22:22:51.474Z", + "Web/MathML/Element/mover": { + "modified": "2020-12-10T17:16:05.910Z", "contributors": [ - "ekirpichyov" + "d0rj" ] }, - "Web/JavaScript/Reference/Global_Objects/Generator/throw": { - "modified": "2019-03-23T22:14:35.937Z", + "Web/MathML/Element/mstyle": { + "modified": "2020-10-30T15:38:27.824Z", "contributors": [ - "deman" + "d0rj" ] }, - "Web/JavaScript/Reference/Global_Objects/GeneratorFunction": { - "modified": "2020-10-15T21:58:16.652Z", + "Web/Media": { + "modified": "2020-02-16T05:07:41.773Z", "contributors": [ - "tilin97" + "Sheppy" ] }, - "Web/JavaScript/Reference/Global_Objects/GeneratorFunction/prototype": { - "modified": "2020-10-15T22:22:51.990Z", + "Web/Media/Formats": { + "modified": "2020-02-16T05:07:42.083Z", "contributors": [ - "ekirpichyov" + "Sheppy" ] }, - "Web/JavaScript/Reference/Global_Objects/Infinity": { - "modified": "2020-10-15T21:29:55.866Z", + "Web/Media/Formats/codecs_parameter": { + "modified": "2020-03-16T06:34:09.362Z", "contributors": [ - "boxa6", - "SphinxKnight", - "Mingun" + "mechtool" ] }, - "Web/JavaScript/Reference/Global_Objects/Int16Array": { - "modified": "2020-10-15T21:59:37.929Z", + "Web/Performance": { + "modified": "2020-04-21T12:10:15.645Z", "contributors": [ - "pk.prog" + "D.Lesnik", + "chrisdavidmills" ] }, - "Web/JavaScript/Reference/Global_Objects/Int32Array": { - "modified": "2020-10-15T21:59:37.998Z", + "Web/Performance/CSS_JavaScript_animation_performance": { + "modified": "2020-04-02T11:47:32.867Z", "contributors": [ - "sh13max", - "pk.prog" + "D.Lesnik" ] }, - "Web/JavaScript/Reference/Global_Objects/Int8Array": { - "modified": "2020-10-15T21:57:33.561Z", + "Web/Performance/Critical_rendering_path": { + "modified": "2020-03-30T19:35:11.484Z", "contributors": [ - "Glazomer", - "iliatcymbal" + "D.Lesnik" ] }, - "Web/JavaScript/Reference/Global_Objects/InternalError": { - "modified": "2019-03-23T23:08:28.849Z", + "Web/Performance/How_browsers_work": { + "modified": "2020-12-07T17:11:39.900Z", "contributors": [ - "Mingun" + "SamTLT", + "vlad-vorontsov", + "D.Lesnik" ] }, - "Web/JavaScript/Reference/Global_Objects/InternalError/prototype": { - "modified": "2019-03-23T23:08:27.124Z", + "Web/Performance/How_long_is_too_long": { + "modified": "2020-05-15T10:59:03.931Z", "contributors": [ - "Mingun" + "D.Lesnik" ] }, - "Web/JavaScript/Reference/Global_Objects/Intl": { - "modified": "2020-10-15T21:30:32.813Z", - "contributors": [ - "kserbez", - "boxa6", - "nrvru", - "Mingun" + "Web/Performance/Lazy_loading": { + "modified": "2020-05-23T10:12:03.445Z", + "contributors": [ + "mfranzke", + "D.Lesnik" ] }, - "Web/JavaScript/Reference/Global_Objects/Intl/Collator": { - "modified": "2020-04-21T07:27:03.712Z", + "Web/Performance/Navigation_and_resource_timings": { + "modified": "2020-04-02T11:43:41.543Z", "contributors": [ - "fscholz", - "Mingun" + "D.Lesnik" ] }, - "Web/JavaScript/Reference/Global_Objects/Intl/Collator/compare": { - "modified": "2020-04-21T07:27:03.594Z", + "Web/Performance/Optimizing_startup_performance": { + "modified": "2020-04-03T10:03:42.671Z", "contributors": [ - "fscholz", - "Mingun" + "D.Lesnik" ] }, - "Web/JavaScript/Reference/Global_Objects/Intl/Collator/prototype": { - "modified": "2020-04-21T07:27:03.529Z", + "Web/Performance/Performance_budgets": { + "modified": "2020-04-06T12:41:24.362Z", "contributors": [ - "fscholz", - "Mingun" + "D.Lesnik" ] }, - "Web/JavaScript/Reference/Global_Objects/Intl/Collator/resolvedOptions": { - "modified": "2020-04-21T07:27:03.396Z", + "Web/Performance/Rum-vs-Synthetic": { + "modified": "2020-04-17T19:39:30.304Z", "contributors": [ - "fscholz", - "Mingun" + "D.Lesnik" ] }, - "Web/JavaScript/Reference/Global_Objects/Intl/Collator/supportedLocalesOf": { - "modified": "2020-04-21T07:27:03.568Z", + "Web/Performance/Understanding_latency": { + "modified": "2020-05-28T07:49:08.019Z", "contributors": [ - "fscholz", - "Mingun" + "D.Lesnik" ] }, - "Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat": { - "modified": "2020-11-07T18:13:37.841Z", + "Web/Performance/dns-prefetch": { + "modified": "2020-12-13T17:12:00.849Z", "contributors": [ - "Vladiatro", - "fscholz", - "Forshortmrmeth", - "Mingun" + "iozee", + "it4joy", + "D.Lesnik" ] }, - "Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/format": { - "modified": "2020-04-21T09:00:46.926Z", + "Web/Progressive_web_apps": { + "modified": "2019-04-20T03:25:44.859Z", "contributors": [ - "fscholz", - "Mingun" + "webmaxru", + "chrisdavidmills", + "ruslan_g02" ] }, - "Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/formatToParts": { - "modified": "2020-10-15T22:22:57.636Z", + "Web/Progressive_web_apps/Installable_PWAs": { + "modified": "2020-05-31T18:38:14.629Z", "contributors": [ - "fscholz", - "ekirpichyov" + "AlexandrKoliukh", + "chrisdavidmills", + "WhiteApfel" ] }, - "Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/prototype": { - "modified": "2020-04-21T09:00:46.875Z", + "Web/Reference": { + "modified": "2019-03-18T20:37:11.659Z", "contributors": [ - "fscholz", - "Mingun" + "mmbl", + "Shychara", + "vostvesh", + "AlexLog", + "uri-uri222", + "slaykovsky", + "Nuzland" ] }, - "Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/resolvedOptions": { - "modified": "2020-04-21T09:00:46.731Z", + "Web/Reference/API": { + "modified": "2019-03-23T23:10:40.925Z", "contributors": [ - "fscholz", - "Mingun" + "olyaknyaz", + "filutkie", + "dimFora", + "BychekRU", + "varstt", + "uleming", + "AlexLog", + "eb-gh-cr", + "ARleKino", + "Tihoem", + "takto", + "bariys18" ] }, - "Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/supportedLocalesOf": { - "modified": "2020-04-21T09:00:46.824Z", + "Web/SVG": { + "modified": "2019-11-01T15:48:17.103Z", "contributors": [ - "fscholz", - "Mingun" + "hisbvdis", + "AdelNorberg", + "Solj", + "Roman-Kosov", + "warsan", + "dima74", + "AlexeyFedotof", + "romanalesenkov", + "sputnik1986", + "Mingun", + "Dyvik" ] }, - "Web/JavaScript/Reference/Global_Objects/Intl/ListFormat": { - "modified": "2020-04-21T09:04:29.446Z", + "Web/SVG/Applying_SVG_effects_to_HTML_content": { + "modified": "2019-04-10T04:51:15.356Z", "contributors": [ - "fscholz", - "Autapomorph" + "warsan" ] }, - "Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat": { - "modified": "2020-10-15T21:30:31.049Z", + "Web/SVG/Attribute": { + "modified": "2019-03-23T23:20:13.909Z", "contributors": [ - "fscholz", - "DmitryMakhnev", - "RUVATA", - "Mingun" + "Solj", + "Vasiliy.Poddubny", + "BychekRU", + "kscarfone" ] }, - "Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/format": { - "modified": "2020-04-21T09:08:24.301Z", + "Web/SVG/Attribute/Core": { + "modified": "2020-10-15T22:34:58.576Z", "contributors": [ - "fscholz", - "Mingun" + "osipov_s" ] }, - "Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/prototype": { - "modified": "2020-04-21T09:08:23.861Z", + "Web/SVG/Attribute/additive": { + "modified": "2019-03-23T22:07:14.939Z", "contributors": [ - "fscholz", - "Mingun" + "Solj", + "warsan", + "Vasiliy.Poddubny" ] }, - "Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/resolvedOptions": { - "modified": "2020-04-21T09:08:24.157Z", + "Web/SVG/Attribute/attributeName": { + "modified": "2019-09-17T04:44:27.460Z", "contributors": [ - "fscholz", - "Mingun" + "ekirpichyov", + "Solj", + "warsan", + "theykillimmortal" ] }, - "Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/supportedLocalesOf": { - "modified": "2020-04-21T09:08:24.144Z", + "Web/SVG/Attribute/attributeType": { + "modified": "2019-03-23T22:07:14.824Z", "contributors": [ - "fscholz", - "Mingun" + "Solj", + "warsan", + "theykillimmortal", + "Vasiliy.Poddubny" ] }, - "Web/JavaScript/Reference/Global_Objects/Intl/getCanonicalLocales": { - "modified": "2020-10-15T22:22:33.577Z", + "Web/SVG/Attribute/class": { + "modified": "2019-03-23T22:24:12.240Z", "contributors": [ - "ekirpichyov" + "Vitaligo", + "dmitron1036" ] }, - "Web/JavaScript/Reference/Global_Objects/JSON": { - "modified": "2020-02-26T09:34:47.437Z", + "Web/SVG/Attribute/cx": { + "modified": "2019-03-18T21:39:26.378Z", "contributors": [ - "alexandersolovyov", - "deman", - "Mingun", - "fscholz" + "Solj", + "AlexandrNikolaichev" ] }, - "Web/JavaScript/Reference/Global_Objects/JSON/parse": { - "modified": "2019-10-04T12:11:00.231Z", + "Web/SVG/Attribute/cy": { + "modified": "2019-03-18T21:39:30.503Z", "contributors": [ - "catsAND", - "Mingun", - "teoli", - "Grundy" + "Solj", + "AlexandrNikolaichev" ] }, - "Web/JavaScript/Reference/Global_Objects/JSON/stringify": { - "modified": "2020-10-15T21:31:10.984Z", + "Web/SVG/Attribute/d": { + "modified": "2019-10-17T06:49:06.860Z", "contributors": [ - "art-gur", - "alerkesi", - "brykov", - "a-tarasyuk", - "Mingun", - "igorklopov84", - "fullfs" + "andruhovski", + "warsan", + "vKuka", + "annaSchugay" ] }, - "Web/JavaScript/Reference/Global_Objects/Map": { - "modified": "2020-10-15T21:31:18.471Z", + "Web/SVG/Attribute/dur": { + "modified": "2020-10-15T21:56:33.845Z", "contributors": [ - "altpoint", - "AndreyGlyan", - "fanich37", - "Dzvonek", - "teryaew", - "xobotyi", - "akmil", - "SphinxKnight", - "WispProxy", - "dtretyakov" + "ekirpichyov", + "Solj", + "theykillimmortal", + "Vasiliy.Poddubny" ] }, - "Web/JavaScript/Reference/Global_Objects/Map/@@species": { - "modified": "2019-03-23T22:09:16.930Z", + "Web/SVG/Attribute/end": { + "modified": "2019-03-23T22:07:08.160Z", "contributors": [ - "WispProxy", - "ahtohbi4" + "Vasiliy.Poddubny" ] }, - "Web/JavaScript/Reference/Global_Objects/Map/clear": { - "modified": "2019-03-23T22:11:36.456Z", + "Web/SVG/Attribute/fill": { + "modified": "2019-03-28T08:38:38.419Z", "contributors": [ - "thepocp" + "boxa6", + "Solj", + "theykillimmortal", + "Vasiliy.Poddubny" ] }, - "Web/JavaScript/Reference/Global_Objects/Map/delete": { - "modified": "2020-10-15T21:50:15.883Z", + "Web/SVG/Attribute/fill-opacity": { + "modified": "2019-03-23T22:46:24.495Z", "contributors": [ - "xobotyi", - "ahtohbi4", - "vesai" + "Solj", + "Mikke" ] - }, - "Web/JavaScript/Reference/Global_Objects/Map/entries": { - "modified": "2019-09-29T09:44:45.397Z", + }, + "Web/SVG/Attribute/fill-rule": { + "modified": "2020-10-15T22:29:32.056Z", "contributors": [ - "evvs", - "rsarov", - "ahtohbi4" + "ellizii" ] }, - "Web/JavaScript/Reference/Global_Objects/Map/forEach": { - "modified": "2020-10-15T21:49:44.007Z", + "Web/SVG/Attribute/font-weight": { + "modified": "2020-10-15T21:59:48.037Z", "contributors": [ - "swa1ps", - "trueanqu", - "SomeoneDeployMe" + "boxa6", + "kasperyan" ] }, - "Web/JavaScript/Reference/Global_Objects/Map/get": { - "modified": "2020-10-15T21:55:36.338Z", + "Web/SVG/Attribute/id": { + "modified": "2020-10-24T12:47:37.053Z", "contributors": [ - "dimon4ezzz", - "AndreyLipin", - "ahtohbi4" + "osipov_s" ] }, - "Web/JavaScript/Reference/Global_Objects/Map/has": { - "modified": "2019-03-23T22:18:58.841Z", + "Web/SVG/Attribute/keyTimes": { + "modified": "2019-05-03T20:37:52.946Z", "contributors": [ - "Ignat86" + "DyominMV", + "zzzunyazz", + "Vasiliy.Poddubny" ] }, - "Web/JavaScript/Reference/Global_Objects/Map/keys": { - "modified": "2019-03-23T22:09:06.332Z", + "Web/SVG/Attribute/lang": { + "modified": "2020-10-24T13:21:41.808Z", "contributors": [ - "ahtohbi4" + "osipov_s" ] }, - "Web/JavaScript/Reference/Global_Objects/Map/prototype": { - "modified": "2019-04-17T08:32:17.620Z", + "Web/SVG/Attribute/lengthAdjust": { + "modified": "2019-03-23T22:04:51.651Z", "contributors": [ - "craby-c", - "SphinxKnight", - "Grinv" + "theykillimmortal" ] }, - "Web/JavaScript/Reference/Global_Objects/Map/set": { - "modified": "2019-07-08T16:59:23.175Z", + "Web/SVG/Attribute/letter-spacing": { + "modified": "2019-03-23T22:09:36.832Z", "contributors": [ - "elrostov", - "InoY", - "ahtohbi4" + "missis-sippi", + "Solj", + "theykillimmortal", + "alex7852" ] }, - "Web/JavaScript/Reference/Global_Objects/Map/size": { - "modified": "2020-11-28T13:51:01.575Z", + "Web/SVG/Attribute/lighting-color": { + "modified": "2019-03-23T22:04:44.084Z", "contributors": [ - "ialexi-bl", - "Yumeiro", - "reilag" + "Solj", + "theykillimmortal" ] }, - "Web/JavaScript/Reference/Global_Objects/Map/values": { - "modified": "2019-03-23T22:09:12.314Z", + "Web/SVG/Attribute/overflow": { + "modified": "2019-03-23T23:20:06.881Z", "contributors": [ - "ahtohbi4" + "Solj", + "glizer", + "torbasow" ] }, - "Web/JavaScript/Reference/Global_Objects/Math": { - "modified": "2020-10-15T21:26:14.248Z", + "Web/SVG/Attribute/patternContentUnits": { + "modified": "2019-03-23T22:06:23.667Z", "contributors": [ - "sashakrauzer", - "S-le", - "Sliokkory", - "KSH-audibene", - "boxa6", - "Nexmean", - "MrEfrem", - "Mingun", - "teoli", - "kolyuchii", - "Ladislas", - "fscholz" + "artemzwinger" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/E": { - "modified": "2019-03-23T23:02:51.965Z", + "Web/SVG/Attribute/r": { + "modified": "2019-03-18T21:29:41.005Z", "contributors": [ - "Mingun" + "igor-khramko" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/LN10": { - "modified": "2019-03-23T23:06:02.231Z", + "Web/SVG/Attribute/repeatCount": { + "modified": "2019-03-23T22:24:33.265Z", "contributors": [ - "Mingun", - "RyvkinSergey" + "Solj", + "VitaliiKotliar" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/LN2": { - "modified": "2019-03-23T23:02:57.181Z", + "Web/SVG/Attribute/rx": { + "modified": "2019-09-27T12:00:57.972Z", "contributors": [ - "Mingun" + "Solj" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/LOG10E": { - "modified": "2019-03-23T23:02:52.129Z", + "Web/SVG/Attribute/ry": { + "modified": "2019-09-27T12:42:00.928Z", "contributors": [ - "Mingun" + "Solj" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/LOG2E": { - "modified": "2019-03-23T23:03:01.940Z", + "Web/SVG/Attribute/shape-rendering": { + "modified": "2019-03-23T23:20:17.223Z", "contributors": [ - "Mingun" + "theykillimmortal", + "BaNru" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/PI": { - "modified": "2019-03-23T23:03:00.693Z", + "Web/SVG/Attribute/stop-color": { + "modified": "2019-03-23T22:04:50.665Z", "contributors": [ - "Mingun" + "theykillimmortal" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/SQRT1_2": { - "modified": "2019-03-23T23:03:03.049Z", + "Web/SVG/Attribute/stroke": { + "modified": "2019-03-23T22:07:06.951Z", "contributors": [ - "Mingun" + "Solj", + "Vasiliy.Poddubny" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/SQRT2": { - "modified": "2019-03-23T23:03:04.344Z", + "Web/SVG/Attribute/stroke-dashoffset": { + "modified": "2019-10-13T18:23:50.855Z", "contributors": [ - "Mingun" + "warsan", + "Solj", + "maxnnn1900" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/abs": { - "modified": "2020-10-15T21:26:16.639Z", + "Web/SVG/Attribute/stroke-linecap": { + "modified": "2020-10-15T22:14:34.059Z", "contributors": [ - "KiraTheFirebird", - "YozhEzhi", - "Mingun", - "teoli", - "Ladislas" + "warsan" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/acos": { - "modified": "2019-03-23T23:21:02.503Z", + "Web/SVG/Attribute/stroke-width": { + "modified": "2019-03-23T22:01:11.603Z", "contributors": [ - "Mingun", - "teoli", - "Ladislas" + "Solj", + "Snikard" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/acosh": { - "modified": "2019-03-23T23:20:43.526Z", + "Web/SVG/Attribute/text-anchor": { + "modified": "2020-10-15T21:56:48.973Z", "contributors": [ - "SphinxKnight", - "Mingun", - "teoli", - "Ladislas" + "mencerz", + "warsan", + "leonrom", + "theykillimmortal" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/asin": { - "modified": "2019-03-23T23:20:44.722Z", + "Web/SVG/Attribute/text-rendering": { + "modified": "2019-03-23T23:20:14.491Z", "contributors": [ - "Mingun", - "teoli", - "Ladislas" + "BaNru" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/asinh": { - "modified": "2019-03-23T23:20:44.301Z", + "Web/SVG/Attribute/transform": { + "modified": "2019-03-23T22:46:36.351Z", "contributors": [ - "SphinxKnight", - "Mingun", - "teoli", - "Ladislas" + "a1ip", + "Solj", + "Lexeii", + "antisergey", + "Aleksov" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/atan": { - "modified": "2019-03-23T23:20:39.232Z", + "Web/SVG/Attribute/values": { + "modified": "2019-03-23T22:06:49.462Z", "contributors": [ - "Mingun", - "teoli", - "Ladislas" + "Vasiliy.Poddubny" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/atan2": { - "modified": "2019-03-23T23:02:49.535Z", + "Web/SVG/Attribute/viewBox": { + "modified": "2020-07-17T23:39:00.663Z", "contributors": [ - "Mingun" + "ialexi-bl", + "dimitrius-brest", + "annekorti", + "pepsikat" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/atanh": { - "modified": "2019-03-23T23:02:48.791Z", + "Web/SVG/Attribute/width": { + "modified": "2019-05-12T12:39:52.350Z", "contributors": [ - "SphinxKnight", - "Mingun" + "opereverzeva" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/cbrt": { - "modified": "2019-11-18T17:15:18.856Z", + "Web/SVG/Attribute/x": { + "modified": "2019-03-23T22:05:16.429Z", "contributors": [ - "Yaffle", - "SphinxKnight", - "Mingun", - "teoli", - "Ladislas" + "Solj" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/ceil": { - "modified": "2019-04-20T08:11:10.933Z", + "Web/SVG/Attribute/xml:space": { + "modified": "2019-03-23T22:23:51.290Z", "contributors": [ - "YozhEzhi", - "Minstel", - "kontimir", - "slollo", - "vysheradugi4", - "oPOCCOMAXAo", - "MrEfrem", - "Mingun", - "vskopuk", - "js-user" + "lautsevich" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/clz32": { - "modified": "2019-03-23T23:02:49.692Z", + "Web/SVG/Attribute/y": { + "modified": "2019-03-23T22:05:20.840Z", "contributors": [ - "SphinxKnight", - "Yaffle", - "Mingun" + "Solj" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/cos": { - "modified": "2019-03-23T23:02:49.360Z", + "Web/SVG/SVG_1.1_Support_in_Firefox": { + "modified": "2019-03-18T21:33:59.744Z", "contributors": [ - "Mingun" + "warsan" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/cosh": { - "modified": "2019-03-23T23:02:45.491Z", + "Web/SVG/SVG_as_an_Image": { + "modified": "2019-04-24T01:52:04.782Z", "contributors": [ - "SphinxKnight", - "Mingun" + "opereverzeva" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/exp": { - "modified": "2019-03-23T23:02:39.529Z", + "Web/SVG/Tutorial": { + "modified": "2020-08-16T23:33:41.513Z", "contributors": [ - "Mingun" + "fqf", + "Ivan961", + "hisbvdis", + "theykillimmortal", + "dima74", + "mboris1", + "MaxManchak", + "Eugene_Ishchenko" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/expm1": { - "modified": "2019-03-23T23:02:41.113Z", + "Web/SVG/Tutorial/Clipping_and_masking": { + "modified": "2019-03-18T21:33:27.085Z", "contributors": [ - "SphinxKnight", - "Mingun" + "theykillimmortal" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/floor": { - "modified": "2019-10-07T20:49:57.401Z", + "Web/SVG/Tutorial/Fills_and_Strokes": { + "modified": "2019-11-05T15:39:42.604Z", "contributors": [ - "sashakrauzer", - "long76", - "Soheevich", - "oPOCCOMAXAo", - "MrEfrem", - "Mingun", - "sovietmagic" + "hisbvdis", + "valery-paschenkov", + "tavira" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/fround": { - "modified": "2019-03-18T20:50:54.153Z", + "Web/SVG/Tutorial/Filter_effects": { + "modified": "2019-03-18T21:33:29.713Z", "contributors": [ - "SphinxKnight", - "Mingun" + "theykillimmortal" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/hypot": { - "modified": "2019-03-23T23:21:18.612Z", + "Web/SVG/Tutorial/Getting_Started": { + "modified": "2019-11-04T17:28:30.391Z", "contributors": [ - "SphinxKnight", - "Mingun", - "teoli", - "Ladislas" + "hisbvdis", + "alexbs", + "warsan", + "komuroe", + "valery-paschenkov", + "tavira", + "mboris1", + "Eugene_Ishchenko" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/imul": { - "modified": "2019-03-23T23:02:47.878Z", + "Web/SVG/Tutorial/Gradients": { + "modified": "2020-08-11T09:48:48.660Z", "contributors": [ - "SphinxKnight", - "Mingun" + "wBureshGitHub", + "u.gantimurov", + "warsan", + "valery-paschenkov", + "tavira" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/log": { - "modified": "2019-03-23T23:02:39.934Z", + "Web/SVG/Tutorial/Other_content_in_SVG": { + "modified": "2019-12-31T04:23:04.282Z", "contributors": [ - "Mingun" + "ekirpichyov", + "warsan" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/log10": { - "modified": "2019-03-23T23:02:40.124Z", + "Web/SVG/Tutorial/Paths": { + "modified": "2019-10-08T05:57:38.968Z", "contributors": [ - "SphinxKnight", - "Mingun" + "hellvesper", + "red5tart", + "devfedorenko", + "komuroe", + "tavira", + "sonnenhaft", + "reflash", + "riseremi", + "mboris1", + "scaint" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/log1p": { - "modified": "2019-03-23T23:02:43.071Z", + "Web/SVG/Tutorial/Patterns": { + "modified": "2019-11-06T13:03:01.053Z", "contributors": [ - "SphinxKnight", - "Mingun" + "hisbvdis", + "warsan", + "valery-paschenkov" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/log2": { - "modified": "2020-10-15T21:32:32.809Z", + "Web/SVG/Tutorial/SVG_Image_Tag": { + "modified": "2019-03-23T22:09:37.959Z", "contributors": [ - "art-gur", - "SphinxKnight", - "Mingun" + "x-in" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/max": { - "modified": "2020-01-23T12:52:57.037Z", + "Web/SVG/Tutorial/SVG_In_HTML_Introduction": { + "modified": "2019-03-23T22:42:40.887Z", "contributors": [ - "Elivin", - "torbasow", - "Mingun", - "teoli", - "Ladislas" + "chrisdavidmills", + "warsan", + "karpulix" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/min": { - "modified": "2020-08-04T11:38:28.510Z", + "Web/SVG/Tutorial/SVG_fonts": { + "modified": "2019-03-18T21:33:26.235Z", "contributors": [ - "sergey.karavaev", - "Mingun", - "teoli", - "Ladislas" + "theykillimmortal" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/pow": { - "modified": "2019-03-23T23:02:42.644Z", + "Web/SVG/Tutorial/Texts": { + "modified": "2019-03-18T21:43:56.017Z", "contributors": [ - "fscholz", - "Mingun" + "theykillimmortal" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/random": { - "modified": "2020-10-15T21:30:33.217Z", + "Web/SVG/Tutorial/Tools_for_SVG": { + "modified": "2019-06-06T06:15:16.270Z", "contributors": [ - "ekirpichyov", - "Mitrr", - "Byte968", - "Flex301", - "Mingun", - "SandStorm" + "Evaphobia", + "Roman-Kosov" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/round": { - "modified": "2019-10-03T16:35:58.416Z", + "Web/Security": { + "modified": "2019-11-20T21:39:44.381Z", "contributors": [ - "YozhEzhi", - "it4joy", - "Mingun", - "bungu" + "wbamberg", + "SphinxKnight", + "pepelsbey", + "Tihoem", + "Sheppy" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/sign": { - "modified": "2019-03-23T23:21:05.525Z", + "Web/Security/Same-origin_policy": { + "modified": "2020-10-20T11:28:42.439Z", "contributors": [ - "SphinxKnight", - "Mingun", - "teoli", - "Ladislas" + "niklimoff01", + "hisbvdis", + "WhiteApfel", + "iamvector", + "vladlipski", + "ZVanoZ" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/sin": { - "modified": "2019-03-23T23:02:45.848Z", + "Web/Security/Securing_your_site": { + "modified": "2019-12-18T06:44:18.277Z", "contributors": [ - "Mingun" + "mfuji09" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/sinh": { - "modified": "2019-03-23T23:02:41.582Z", + "Web/Security/Securing_your_site/Turning_off_form_autocompletion": { + "modified": "2019-12-18T06:44:21.121Z", "contributors": [ - "SphinxKnight", - "Mingun" + "KolesnikovR" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/sqrt": { - "modified": "2019-03-23T23:21:16.252Z", + "Web/Tutorials": { + "modified": "2019-10-02T16:11:49.043Z", "contributors": [ - "Maxim-Bernashevsky", - "Mingun", - "teoli", - "Ladislas" + "Termaro", + "mmbl", + "ukrlex01", + "rhiter", + "anastasiya-solodkaya", + "GraceAredel", + "Tihoem", + "uleming", + "Steln", + "aleks_root" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/tan": { - "modified": "2019-03-23T23:02:44.705Z", + "Web/Web_Components": { + "modified": "2020-09-03T10:16:00.956Z", "contributors": [ - "Mingun" + "m.tven18", + "Loosefer", + "Akh-rman", + "shmel115", + "newbornfrontender", + "Peccansy", + "alinofka", + "curdwithraisins", + "dmitrykurmanov", + "Kalita-Roman" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/tanh": { - "modified": "2019-03-23T23:02:37.791Z", + "Web/Web_Components/HTML_Imports": { + "modified": "2019-03-18T21:40:10.986Z", "contributors": [ - "SphinxKnight", - "Mingun" + "PaulineNemchak" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/trunc": { - "modified": "2020-10-15T21:32:38.007Z", + "Web/XML": { + "modified": "2019-03-24T13:24:33.354Z" + }, + "Web/XML/XML_introduction": { + "modified": "2019-03-25T08:08:08.506Z", "contributors": [ - "opereverzeva", - "dkireev", - "SphinxKnight", - "vitaliylag", - "Danakt", - "Mingun" + "boxa6" ] }, - "Web/JavaScript/Reference/Global_Objects/Math/Метод_Math.max()_": { - "modified": "2019-03-23T22:37:24.165Z", + "Web/XPath": { + "modified": "2019-01-16T14:55:34.456Z", "contributors": [ - "srvoland" + "ExE-Boss", + "wbamberg", + "teoli", + "Android" ] }, - "Web/JavaScript/Reference/Global_Objects/NaN": { - "modified": "2020-10-15T21:29:55.593Z", + "Web/XSLT": { + "modified": "2019-03-23T23:58:47.674Z", "contributors": [ - "kss555", - "boxa6", - "Gamesurf", - "Mingun" + "niktariy", + "ExE-Boss", + "teoli", + "iliacmd" ] }, - "Web/JavaScript/Reference/Global_Objects/Number": { - "modified": "2020-10-15T21:26:52.210Z", + "WebAssembly": { + "modified": "2020-10-15T22:05:07.172Z", "contributors": [ - "chrisdavidmills", - "boxa6", - "wbamberg", - "peremenov", - "Mingun", - "teoli", - "Softarius" + "sharpist", + "deadblackclover", + "vkorniiko", + "warsan", + "thatlldo" ] }, - "Web/JavaScript/Reference/Global_Objects/Number/EPSILON": { - "modified": "2019-08-25T14:04:12.302Z", + "WebAssembly/C_to_wasm": { + "modified": "2019-03-18T21:33:56.809Z", "contributors": [ - "Yialo", - "biggieman", - "nakhodkiin", - "msalv", - "Mingun" + "thatlldo" ] }, - "Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER": { - "modified": "2020-10-15T21:30:30.029Z", + "WebAssembly/Concepts": { + "modified": "2019-03-18T21:10:19.900Z", "contributors": [ - "bm12", - "art-gur", - "Yialo", - "SphinxKnight", - "Mingun" + "vkorniiko" ] }, - "Web/JavaScript/Reference/Global_Objects/Number/MAX_VALUE": { - "modified": "2019-03-23T23:08:20.580Z", + "WebAssembly/Exported_functions": { + "modified": "2020-03-04T19:06:28.386Z", "contributors": [ - "Mingun" + "amuzalevskiy", + "thatlldo" ] }, - "Web/JavaScript/Reference/Global_Objects/Number/MIN_SAFE_INTEGER": { - "modified": "2019-08-25T14:03:53.234Z", + "WebAssembly/Loading_and_running": { + "modified": "2019-06-12T11:14:54.085Z", "contributors": [ - "Yialo", - "SphinxKnight", - "Mingun" + "deadblackclover" ] }, - "Web/JavaScript/Reference/Global_Objects/Number/MIN_VALUE": { - "modified": "2019-03-23T23:08:15.441Z", + "WebAssembly/Rust_to_wasm": { + "modified": "2020-06-11T14:27:31.970Z", "contributors": [ - "evheniy", - "Mingun" + "DuckerMan", + "idkravitz", + "dlukanin", + "curdwithraisins", + "VLDSLW" ] }, - "Web/JavaScript/Reference/Global_Objects/Number/NEGATIVE_INFINITY": { - "modified": "2019-03-23T23:08:17.933Z", + "WebAssembly/Understanding_the_text_format": { + "modified": "2019-03-18T21:09:18.859Z", "contributors": [ - "Mingun" + "vkorniiko" ] }, - "Web/JavaScript/Reference/Global_Objects/Number/NaN": { - "modified": "2019-03-23T23:08:14.519Z", + "WebAssembly/Using_the_JavaScript_API": { + "modified": "2019-06-12T07:08:20.267Z", "contributors": [ - "Mingun" + "deadblackclover", + "vkorniiko" ] }, - "Web/JavaScript/Reference/Global_Objects/Number/POSITIVE_INFINITY": { - "modified": "2019-03-23T23:08:18.273Z", + "conflicting/Web/API/Canvas_API/A_basic_ray-caster": { + "modified": "2019-03-23T23:52:15.954Z", "contributors": [ - "Mingun" + "warsan", + "Chernetsky" ] }, - "Web/JavaScript/Reference/Global_Objects/Number/isFinite": { - "modified": "2019-03-23T23:08:18.639Z", + "conflicting/Mozilla/Add-ons": { + "modified": "2019-03-23T23:58:39.567Z", "contributors": [ - "SphinxKnight", - "Mingun" + "topskill", + "fscholz", + "iliacmd" ] }, - "Web/JavaScript/Reference/Global_Objects/Number/isInteger": { - "modified": "2020-10-15T21:30:30.076Z", + "Web/API/Document/createElement": { + "modified": "2020-05-24T05:32:15.624Z", "contributors": [ - "art-gur", - "Yialo", - "SphinxKnight", - "parzhitsky", - "Mingun" + "MyWay2IT", + "ArtemStudio", + "ellizii", + "RblSb", + "kothique", + "Veers", + "itslooklike", + "Madzi", + "lemurio", + "Guria", + "khalid32", + "Norville", + "teoli", + "icw82", + "Alego" ] }, - "Web/JavaScript/Reference/Global_Objects/Number/isNaN": { - "modified": "2020-10-15T21:30:30.857Z", + "Web/API/Document/images": { + "modified": "2019-03-24T00:04:21.348Z", "contributors": [ - "JorJeG", - "Mingun" + "khalid32", + "Norville", + "teoli", + "RAP1D" ] }, - "Web/JavaScript/Reference/Global_Objects/Number/isSafeInteger": { - "modified": "2020-10-19T11:46:39.542Z", + "Web/API/Document_Object_Model/Events": { + "modified": "2019-03-18T21:18:44.250Z", "contributors": [ - "alekskos", - "art-gur", - "Yialo", - "SphinxKnight", - "Mingun" + "SphinxKnight" ] }, - "Web/JavaScript/Reference/Global_Objects/Number/parseFloat": { - "modified": "2019-08-25T14:06:12.145Z", + "Web/API/Document_Object_Model/Examples": { + "modified": "2019-09-25T18:36:16.946Z", "contributors": [ - "Yialo", - "SphinxKnight", - "KP0H", - "Mingun" + "Problemon", + "paxarpp", + "Bargamut" ] }, - "Web/JavaScript/Reference/Global_Objects/Number/parseInt": { - "modified": "2020-10-15T21:30:29.202Z", + "Web/API/Document_Object_Model": { + "modified": "2020-08-25T05:36:15.194Z", "contributors": [ - "Yialo", - "Fantomhaiv", - "SphinxKnight", - "Mingun" + "tix836", + "shmel3", + "shvedovskiy", + "BychekRU", + "teoli", + "Newser", + "mayconrem" ] }, - "Web/JavaScript/Reference/Global_Objects/Number/prototype": { - "modified": "2019-03-23T23:08:18.833Z", + "Web/API/Document_object_model/Locating_DOM_elements_using_selectors": { + "modified": "2019-03-23T22:13:41.294Z", "contributors": [ - "Mingun" + "tavira" ] }, - "Web/JavaScript/Reference/Global_Objects/Number/toExponential": { - "modified": "2020-12-14T05:16:23.222Z", + "Web/API/Document_Object_Model/Introduction": { + "modified": "2019-10-02T12:18:01.287Z", "contributors": [ - "YozhEzhi", - "Mingun" + "shmel3", + "newbornfrontender", + "GraceAredel", + "hardsoncore", + "Flaeron", + "paxarpp", + "rapaich", + "miirinjej", + "tavira", + "sersalex", + "tvitcom", + "Y-Taras", + "Azijkes" ] }, - "Web/JavaScript/Reference/Global_Objects/Number/toFixed": { - "modified": "2020-12-14T05:15:41.289Z", + "Web/API/Fullscreen_API": { + "modified": "2020-10-15T21:22:05.646Z", "contributors": [ - "YozhEzhi", - "ch-ms", - "stravin", - "Mingun" + "dartraiden", + "wbamberg", + "sosnovskyas", + "mzhel" ] }, - "Web/JavaScript/Reference/Global_Objects/Number/toLocaleString": { - "modified": "2020-10-15T21:30:32.073Z", + "Web/API/Web_Workers_API/Using_web_workers": { + "modified": "2020-06-15T09:56:56.839Z", "contributors": [ - "vanyaErohin", - "mois-ilya", - "Mingun" + "sekrittt", + "S-inTheory", + "KVAnton-WEB", + "demyanovs", + "Akh-rman", + "warsan", + "Corey-Maler", + "citizen55", + "S-le", + "vorobeez", + "namikiri", + "evhandel", + "alex-misch", + "Sajag", + "Anomeon", + "3lvcz", + "x1unix", + "nsine", + "sanarise", + "arvitaly", + "AlexanderTserkovniy", + "sergeiDruzhinin", + "kav137", + "Forshortmrmeth", + "MuradAz", + "ahtohbi4", + "padenot", + "finalex" ] }, - "Web/JavaScript/Reference/Global_Objects/Number/toPrecision": { - "modified": "2020-12-14T05:16:55.908Z", + "Web/API/window/requestAnimationFrame": { + "modified": "2020-10-15T21:21:09.538Z", "contributors": [ - "YozhEzhi", + "BehemothOz", + "S-inTheory", + "Kiryhas", + "ekirpichyov", "Yialo", - "while0pass", - "nakhodkiin", - "ZeroUnderscoreOu", - "KiraGolub", - "an2323", - "Mingun" + "YozhEzhi", + "RoBit", + "alexsanqp", + "Bargamut", + "torbasow", + "Beliarh", + "nyk0r" ] }, - "Web/JavaScript/Reference/Global_Objects/Number/toSource": { - "modified": "2019-08-25T13:48:33.955Z", + "Mozilla/Firefox/Releases/3": { + "modified": "2019-03-23T23:57:24.524Z", "contributors": [ - "Yialo", - "Mingun" + "wbamberg", + "teoli", + "Destruction", + "Alm0" ] }, - "Web/JavaScript/Reference/Global_Objects/Number/toString": { - "modified": "2020-12-14T05:17:27.925Z", + "Mozilla/Firefox/Releases/3.5": { + "modified": "2019-03-24T00:00:48.916Z", "contributors": [ - "YozhEzhi", - "Yialo", - "Mingun" + "wbamberg", + "teoli", + "Dionys" ] }, - "Web/JavaScript/Reference/Global_Objects/Number/valueOf": { - "modified": "2019-03-23T23:08:15.896Z", + "Games/Tutorials/2D_Breakout_game_pure_JavaScript/Finishing_up": { + "modified": "2020-05-27T13:39:22.186Z", "contributors": [ - "Mingun" + "S-inTheory", + "fedev", + "ekirpichyov", + "netmag" ] }, - "Web/JavaScript/Reference/Global_Objects/Object": { - "modified": "2019-08-26T11:37:18.396Z", + "Games/Tutorials/2D_Breakout_game_pure_JavaScript/Collision_detection": { + "modified": "2020-05-27T13:47:02.328Z", "contributors": [ - "Yialo", + "S-inTheory", + "alexerisov", + "ekirpichyov", + "BrightsDays", "wbamberg", - "Natalya_Surikova", - "Mingun", - "teoli", - "pashak" + "DanInSpace104" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/__defineGetter__": { - "modified": "2019-03-23T23:11:22.223Z", + "Games/Tutorials/2D_Breakout_game_pure_JavaScript/Move_the_ball": { + "modified": "2019-09-05T03:56:26.312Z", "contributors": [ - "Mingun", - "OleksandrPapchenko" + "ekirpichyov", + "Horbach_Andrii", + "wbamberg", + "W-A-D", + "HellLena" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/__defineSetter__": { - "modified": "2019-03-23T23:10:17.035Z", + "Games/Tutorials/2D_Breakout_game_pure_JavaScript/Build_the_brick_field": { + "modified": "2019-09-05T04:00:55.487Z", "contributors": [ - "Mingun" + "ekirpichyov", + "netmag", + "wbamberg", + "DanInSpace104" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/__lookupGetter__": { - "modified": "2019-03-23T23:10:22.177Z", + "Games/Tutorials/2D_Breakout_game_pure_JavaScript/Create_the_Canvas_and_draw_on_it": { + "modified": "2019-09-05T03:54:58.102Z", "contributors": [ - "Mingun" + "ekirpichyov", + "wbamberg", + "W-A-D", + "HellLena" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/__lookupSetter__": { - "modified": "2019-03-23T23:10:20.796Z", + "Games/Tutorials/2D_Breakout_game_pure_JavaScript/Mouse_controls": { + "modified": "2020-05-27T13:59:03.040Z", "contributors": [ - "Mingun" + "S-inTheory", + "ekirpichyov", + "Merius", + "netmag" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/assign": { - "modified": "2020-10-15T21:29:38.981Z", + "Games/Tutorials/2D_breakout_game_Phaser/Bounce_off_the_walls": { + "modified": "2019-07-13T11:04:44.018Z", "contributors": [ - "YozhEzhi", - "GraceAredel", - "icw82", - "chulanovskyi", - "BaNru", - "e-omo", - "Mingun" + "BVaflick", + "AntonySawyer" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/constructor": { - "modified": "2019-03-23T23:10:17.901Z", + "Games/Tutorials/2D_breakout_game_Phaser/Game_over": { + "modified": "2019-07-04T10:47:35.001Z", "contributors": [ - "Natalya_Surikova", - "Mingun" + "BVaflick" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/create": { - "modified": "2020-10-15T21:28:49.512Z", + "Games/Tutorials/2D_breakout_game_Phaser": { + "modified": "2020-02-21T09:29:06.831Z", "contributors": [ - "dmarkin", - "Simaleon", - "Akh-rman", - "yedyharova", - "workonika", - "vinogradov", - "Aleksej", - "RinatMullayanov", - "vvwind", - "Mingun", - "SnowLeo" + "SpawnLeon", + "BVaflick", + "wbamberg", + "djigach" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/defineProperties": { - "modified": "2019-03-23T23:09:30.861Z", + "Games/Tutorials/2D_breakout_game_Phaser/Initialize_the_framework": { + "modified": "2020-05-27T14:06:50.271Z", "contributors": [ - "tankakatan", - "Mingun" + "S-inTheory", + "BVaflick", + "VsevolodIvanov", + "wbamberg", + "djigach" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/defineProperty": { - "modified": "2019-03-23T23:37:49.274Z", + "Games/Tutorials/2D_breakout_game_Phaser/Load_the_assets_and_print_them_on_screen": { + "modified": "2020-05-27T14:16:50.797Z", "contributors": [ - "tourman", - "iSokrat", - "gibson", - "RumyantsevMichael", - "uniqueusr", - "Mingun", - "Natalya_Surikova", - "Anton_Arestov", - "akhabibullina", - "teoli", - "dunmaksim", - "my8bit", - "Selvatico" + "S-inTheory", + "Surf12", + "BVaflick", + "wbamberg", + "djigach" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/entries": { - "modified": "2020-10-15T21:41:30.272Z", + "Games/Tutorials/2D_breakout_game_Phaser/Move_the_ball": { + "modified": "2020-05-27T14:22:37.560Z", "contributors": [ - "cloudofgeorge", - "KolesnikovR", - "SpawnLeon", - "YozhEzhi", - "Akh-rman", - "fscholz", - "bobberr", - "XaveScor", - "uazure", - "curdwithraisins", - "risentveber", - "Grinv" + "S-inTheory", + "BVaflick", + "wbamberg", + "djigach" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/freeze": { - "modified": "2020-10-15T21:30:06.043Z", + "Games/Tutorials/2D_breakout_game_Phaser/Physics": { + "modified": "2019-07-13T11:03:00.205Z", "contributors": [ - "YozhEzhi", - "WispProxy", - "kdex", - "pk.prog", - "chayn1k", - "Mingun" + "BVaflick", + "juliasheleva", + "wbamberg", + "djigach" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/fromEntries": { - "modified": "2020-10-15T22:14:28.772Z", + "Games/Tutorials/2D_breakout_game_Phaser/Scaling": { + "modified": "2020-05-27T14:30:34.825Z", "contributors": [ - "ekirpichyov", - "Autapomorph", - "Akh-rman" + "S-inTheory", + "BVaflick", + "wbamberg", + "djigach" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptor": { - "modified": "2019-03-24T00:14:06.824Z", + "Games/Tutorials/2D_breakout_game_Phaser/Extra_lives": { + "modified": "2020-07-02T08:17:43.022Z", "contributors": [ - "Mingun", - "teoli", - "pashak" + "f1reSong", + "BVaflick" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptors": { - "modified": "2020-10-15T22:14:28.295Z", + "Games/Tutorials/2D_breakout_game_Phaser/Collision_detection": { + "modified": "2019-07-13T11:08:36.093Z", "contributors": [ - "Akh-rman" + "BVaflick" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyNames": { - "modified": "2020-10-15T21:30:07.880Z", + "Games/Tutorials/2D_breakout_game_Phaser/The_score": { + "modified": "2019-07-13T11:09:17.012Z", "contributors": [ - "YozhEzhi", - "nakhodkiin", - "tourman", - "VsevolodTrofimov", - "Mingun" + "BVaflick" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertySymbols": { - "modified": "2020-10-15T21:30:06.924Z", + "Games/Tutorials/2D_breakout_game_Phaser/Player_paddle_and_controls": { + "modified": "2019-07-13T11:05:39.887Z", "contributors": [ - "nakhodkiin", - "SphinxKnight", - "Mingun", - "schyzoo" + "BVaflick" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/getPrototypeOf": { - "modified": "2019-03-23T23:09:23.592Z", + "Games/Tutorials/2D_breakout_game_Phaser/Win_the_game": { + "modified": "2019-07-04T12:16:45.863Z", "contributors": [ - "tonyganch", - "Mingun", - "Natalya_Surikova" + "BVaflick" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty": { - "modified": "2020-10-15T21:21:02.788Z", + "Games/Tutorials/2D_breakout_game_Phaser/Build_the_brick_field": { + "modified": "2019-07-13T11:07:30.266Z", "contributors": [ - "Roman-Kosov", - "ihoru", - "Mingun", - "teoli", - "Nick_Pershin", - "nurbek.ab" + "BVaflick" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/is": { - "modified": "2020-10-15T21:26:43.137Z", + "Games/Anatomy": { + "modified": "2020-09-16T08:22:06.866Z", "contributors": [ - "YozhEzhi", - "SphinxKnight", - "Mingun", - "teoli", - "Romanzes", - "franza" + "T-EVA-01", + "achernin+" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/isExtensible": { - "modified": "2019-10-09T12:01:13.252Z", + "Games/Introduction": { + "modified": "2020-01-09T13:42:58.936Z", "contributors": [ - "Mingun" + "idushii", + "nomo3919", + "BVaflick", + "RFG-G" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/isFrozen": { - "modified": "2020-10-15T21:30:08.003Z", + "Games/Tools/asm.js": { + "modified": "2019-06-20T10:10:26.692Z", "contributors": [ - "YozhEzhi", - "Mingun" + "jkulvich", + "wbamberg", + "Cyganov" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/isPrototypeOf": { - "modified": "2020-02-04T15:23:51.484Z", + "Games/Tools": { + "modified": "2019-01-17T01:51:17.038Z", "contributors": [ - "bagau", - "Mingun" + "wbamberg", + "Cyganov" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/isSealed": { - "modified": "2019-10-09T11:11:04.447Z", + "Glossary/Block/Scripting": { + "modified": "2019-03-23T22:09:52.830Z", "contributors": [ - "Mingun" + "DashPisareva" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/keys": { - "modified": "2020-10-15T21:30:08.678Z", + "orphaned/Glossary/Polifill": { + "modified": "2019-03-23T22:18:26.835Z", "contributors": [ - "zhvirblis", - "kdex", - "Mingun" + "pk.prog" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/preventExtensions": { - "modified": "2020-10-15T21:30:08.070Z", + "Web/Guide/HTML/HTML5/Constraint_validation": { + "modified": "2019-03-23T22:20:23.601Z", "contributors": [ - "YozhEzhi", - "serzero2007", - "nakhodkiin", - "Mingun" + "lautsevich", + "Pescao" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/propertyIsEnumerable": { - "modified": "2019-03-23T23:09:13.597Z", + "Web/Guide/HTML/HTML5": { + "modified": "2020-11-05T05:54:38.208Z", "contributors": [ - "Mingun" + "ksam", + "nikolay94", + "SphinxKnight", + "duhas1993", + "CrawlOverYou", + "Hamelion-gm", + "MuradAz", + "teoli", + "BychekRU", + "syam1123", + "M57", + "Jmunb", + "repby", + "uleming", + "askhat", + "andygol", + "Grakov", + "AxDaim" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/proto": { - "modified": "2020-10-15T21:29:34.357Z", + "Web/Guide/HTML/HTML5/Introduction_to_HTML5": { + "modified": "2019-03-23T23:32:08.971Z", "contributors": [ - "YozhEzhi", - "Sajag", - "Mingun" + "Jmunb", + "Grakov" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/prototype": { - "modified": "2020-03-13T11:04:21.413Z", + "Learn/CSS/Building_blocks/Cascade_tasks": { + "modified": "2020-10-01T14:31:53.395Z", "contributors": [ - "fishr-flash", - "AMurkin", - "Mingun", - "teoli", - "kreshikhin" + "at940266" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/seal": { - "modified": "2020-10-15T21:30:09.594Z", + "Learn/CSS/Building_blocks/Selectors/Attribute_selectors": { + "modified": "2020-10-08T15:38:42.541Z", "contributors": [ - "YozhEzhi", - "Mingun" + "at940266", + "k0w4lk", + "Ivan961" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/setPrototypeOf": { - "modified": "2019-09-11T03:19:06.537Z", + "Learn/CSS/Building_blocks/Selectors/Combinators": { + "modified": "2020-12-07T19:30:35.658Z", "contributors": [ - "Ichiru123", - "SphinxKnight", - "oziian", - "Mingun" + "RoPy73", + "at940266", + "anna.bunakova", + "sovushka-utrom", + "Ivan961" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/toLocaleString": { - "modified": "2019-09-20T08:30:13.696Z", + "Learn/CSS/Building_blocks/Selectors": { + "modified": "2020-07-19T06:45:12.608Z", "contributors": [ - "Mingun" + "k0w4lk", + "Ivan961", + "BADNaMe-RK" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/toSource": { - "modified": "2020-10-15T21:30:13.861Z", + "Learn/CSS/Building_blocks/Selectors/Pseudo-classes_and_pseudo-elements": { + "modified": "2020-10-14T14:08:41.639Z", "contributors": [ - "boxa6", - "Mingun" + "at940266", + "anna.bunakova", + "Ivan961" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/toString": { - "modified": "2020-10-15T21:30:10.362Z", + "Learn/CSS/Building_blocks/Selectors/Type_Class_and_ID_Selectors": { + "modified": "2020-10-07T14:15:51.046Z", "contributors": [ - "ekirpichyov", - "IvanMorkva", - "Mingun" + "at940266", + "ctmyxa", + "k0w4lk", + "Ivan961" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/valueOf": { - "modified": "2019-03-23T23:15:16.213Z", + "Learn/CSS/Building_blocks/Selectors/Selectors_Tasks": { + "modified": "2020-10-28T14:57:16.890Z", "contributors": [ - "Haosik", - "Natalya_Surikova", - "Mingun", - "teoli", - "mixture" + "at940266" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/values": { - "modified": "2020-10-15T21:50:11.196Z", + "Learn/CSS/CSS_layout/Multiple-column_Layout": { + "modified": "2020-09-06T07:21:18.080Z", "contributors": [ - "ekirpichyov", - "Yialo", - "XaveScor", - "Biblbrox", - "nllsdfx", - "ozknemoy" + "shade0602" ] }, - "Web/JavaScript/Reference/Global_Objects/Promise": { - "modified": "2020-10-15T21:29:45.619Z", + "Learn/CSS/CSS_layout/Multicol_skills": { + "modified": "2020-09-07T06:45:08.142Z", "contributors": [ - "YuriSn", - "gudkovdanila", - "YozhEzhi", - "alok1", - "AliaksandrZahorski", - "jwhitlock", - "ugncry", - "Geloosa", - "RinatMullayanov", - "AlexKhram", - "applicab", - "prettyGoo", - "dtretyakov", - "Chudesnov" + "shade0602" ] }, - "Web/JavaScript/Reference/Global_Objects/Promise/all": { - "modified": "2020-10-15T21:33:26.483Z", + "Learn/CSS/CSS_layout/Position_skills": { + "modified": "2020-09-07T06:09:02.193Z", "contributors": [ - "BakrID", - "YozhEzhi", - "nudaworks", - "rutsky", - "NikIvan", - "AlexKhram", - "Crazymax11", - "f0rmat1k", - "axilirator" + "shade0602" ] }, - "Web/JavaScript/Reference/Global_Objects/Promise/allSettled": { - "modified": "2020-10-15T22:22:39.384Z", + "Learn/CSS/CSS_layout/Normal_Flow": { + "modified": "2020-10-13T15:21:40.503Z", "contributors": [ - "Neiromaster", - "ekirpichyov" + "mvictorl", + "nsvintitskiy", + "SoMuchEffort" ] }, - "Web/JavaScript/Reference/Global_Objects/Promise/any": { - "modified": "2020-10-15T22:27:25.562Z", + "Learn/CSS/CSS_layout/Responsive_Design": { + "modified": "2020-10-31T07:15:02.288Z", "contributors": [ - "ArkadiiRaih" + "shade0602" ] }, - "Web/JavaScript/Reference/Global_Objects/Promise/catch": { - "modified": "2020-10-15T21:48:47.444Z", + "Learn/CSS/First_steps/How_CSS_is_structured": { + "modified": "2020-11-30T19:42:39.732Z", "contributors": [ - "IgorCH", - "tirli", - "vitya-ne", - "torbasow", - "sergey-shambir", - "LopatkinEvgeniy", - "AlexKhram" + "RoPy73", + "shade0602", + "Ivan961", + "Ultron5" ] }, - "Web/JavaScript/Reference/Global_Objects/Promise/finally": { - "modified": "2020-10-15T22:01:51.236Z", + "Learn/CSS/First_steps/What_is_CSS": { + "modified": "2020-10-15T22:23:15.801Z", "contributors": [ - "kir.gimranov", - "mshipov", - "RussianPhotoGraf", - "IhnatsiS", - "NoviceBlunderer", - "Zudwa", - "x1unix" + "Ivan961", + "fedev", + "Tortik217" ] }, - "Web/JavaScript/Reference/Global_Objects/Promise/prototype": { - "modified": "2019-10-16T18:35:40.649Z", + "Learn/CSS/Building_blocks/Fundamental_CSS_comprehension": { + "modified": "2020-07-16T22:28:13.122Z", "contributors": [ - "tsimafey", - "viosng", - "alexicum", - "AlexKhram" + "maxbo8", + "trman", + "VyacheslavLobanov" ] }, - "Web/JavaScript/Reference/Global_Objects/Promise/race": { - "modified": "2020-10-15T21:39:40.095Z", + "Learn/CSS/Styling_text/Web_fonts": { + "modified": "2020-07-19T10:10:59.329Z", "contributors": [ - "asamofal", - "nakhodkiin", - "fscholz", - "nudaworks", - "hawker000", - "thedoctorde", - "AlexKhram", - "forsage" + "nsvintitskiy", + "shade0602" ] }, - "Web/JavaScript/Reference/Global_Objects/Promise/reject": { - "modified": "2020-10-15T21:39:33.387Z", + "Learn/CSS/Styling_text/Typesetting_a_homepage": { + "modified": "2020-07-16T22:26:27.408Z", "contributors": [ - "sergey-shambir", - "fscholz", - "Buggytheclown", - "0xff00ff", - "AlexKhram", - "UnikZ" + "shade0602" ] }, - "Web/JavaScript/Reference/Global_Objects/Promise/resolve": { - "modified": "2020-10-15T21:48:52.330Z", + "Learn/CSS/Styling_text/Styling_lists": { + "modified": "2020-07-16T22:26:14.698Z", "contributors": [ - "gusakmarina", - "nudaworks", - "AlexKhram", - "ball00n" + "shade0602", + "vedmibot" ] }, - "Web/JavaScript/Reference/Global_Objects/Promise/then": { - "modified": "2020-11-03T18:52:52.359Z", + "Learn/CSS/Howto": { + "modified": "2020-07-16T22:25:44.184Z", "contributors": [ - "fanich37", - "smlkA", - "YozhEzhi", - "Kesantielu", - "andreymir", - "AlexKhram", - "LeoVS09", - "ksladkov" + "code-timer", + "Shychara" ] }, - "Web/JavaScript/Reference/Global_Objects/Proxy": { - "modified": "2020-11-17T05:36:00.208Z", + "Learn/Common_questions/What_are_browser_developer_tools": { + "modified": "2020-07-16T22:35:48.058Z", "contributors": [ - "kosarev_va", - "sivashev", - "xurshidbekjonwin", - "lmjavascriptprogrammer", - "boxa6", - "DonikaV", - "nakhodkiin", - "Andrey-Bushman", - "kdex", - "torbasow", - "dtretyakov", - "im7mortal" + "mirajane23", + "fox67rus", + "Metallman", + "Dante103" ] }, - "Web/JavaScript/Reference/Global_Objects/Proxy/Proxy": { - "modified": "2020-11-16T16:36:02.171Z", + "Learn/Getting_started_with_the_web/The_web_and_web_standards": { + "modified": "2020-08-13T10:56:47.304Z", "contributors": [ - "mfuji09" + "bogpok" ] }, - "Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/apply": { - "modified": "2020-11-18T06:41:35.789Z", + "Learn/Getting_started_with_the_web/Installing_basic_software": { + "modified": "2020-07-16T22:34:11.219Z", "contributors": [ - "kosarev_va" + "Anonymous", + "skapesec", + "rapaich", + "Egokorok", + "gitzizou", + "boddik", + "BychekRU", + "Evgeny_Kurkin", + "Unregistered45", + "Neir" ] }, - "Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/get": { - "modified": "2020-11-17T05:45:02.908Z", + "Learn/Common_questions/How_does_the_Internet_work": { + "modified": "2020-08-13T11:15:09.762Z", "contributors": [ - "kosarev_va" + "bogpok", + "S-Sukhin", + "kss555", + "Sturmtiger", + "OrkVasya", + "andrey_fm", + "TinaSuhanovskaya", + "elcamlost" ] }, - "Web/JavaScript/Reference/Global_Objects/Proxy/handler": { - "modified": "2020-11-18T06:44:17.889Z", + "Learn/Forms/How_to_build_custom_form_controls": { + "modified": "2020-07-16T22:21:58.194Z", "contributors": [ - "kosarev_va", - "SphinxKnight" + "Avrisia", + "outdever" ] }, - "Web/JavaScript/Reference/Global_Objects/Proxy/handler/deleteProperty": { - "modified": "2020-10-15T22:14:52.334Z", + "Learn/Forms/How_to_structure_a_web_form": { + "modified": "2020-09-23T12:04:06.961Z", "contributors": [ - "smlkA" + "ryabv", + "BADNaMe-RK", + "outdever", + "Lapagirl", + "vedmibot", + "SeryiMysh" ] }, - "Web/JavaScript/Reference/Global_Objects/Proxy/handler/set": { - "modified": "2020-11-17T05:50:39.778Z", + "Learn/Forms": { + "modified": "2020-07-16T22:21:01.609Z", "contributors": [ - "kosarev_va", - "Vilafox" + "ryabv", + "shmel3", + "Zekkler", + "neizerth", + "PWasiliy", + "SeryiMysh", + "chrisdavidmills", + "GaidaiAndrii", + "bracket", + "Dmitrij" ] }, - "Web/JavaScript/Reference/Global_Objects/Proxy/revocable": { - "modified": "2020-10-15T22:01:47.719Z", + "Learn/Forms/Sending_forms_through_JavaScript": { + "modified": "2020-11-20T12:05:04.254Z", "contributors": [ - "HarmlessEvil" + "lazyelf472" ] }, - "Web/JavaScript/Reference/Global_Objects/RangeError": { - "modified": "2019-03-23T23:08:28.070Z", + "Learn/Forms/Styling_web_forms": { + "modified": "2020-07-16T22:21:32.230Z", "contributors": [ - "Mingun", - "fscholz" + "8nabo" ] }, - "Web/JavaScript/Reference/Global_Objects/RangeError/prototype": { - "modified": "2019-03-23T23:08:28.689Z", + "Learn/Forms/Form_validation": { + "modified": "2020-10-17T05:54:59.534Z", "contributors": [ - "Mingun" + "raylyanway", + "NadinHub", + "Hydrock", + "nikolai-shabalin", + "JediKnightIT", + "Ishayahu", + "LbIdarka", + "ivandoroshenko" ] }, - "Web/JavaScript/Reference/Global_Objects/ReferenceError": { - "modified": "2020-10-15T21:30:26.550Z", + "Learn/Forms/Your_first_form": { + "modified": "2020-07-16T22:21:06.805Z", "contributors": [ - "dima74", - "Mingun" + "ryabv", + "deicer" ] }, - "Web/JavaScript/Reference/Global_Objects/ReferenceError/prototype": { - "modified": "2019-03-23T23:08:22.399Z", + "Learn/Forms/Sending_and_retrieving_form_data": { + "modified": "2020-07-16T22:21:29.080Z", "contributors": [ - "Mingun" + "Shabu-Dabi", + "taletski", + "isetpro", + "melission", + "Kamikadze4GAME", + "ZveRuss", + "Dzmitry_K" ] }, - "Web/JavaScript/Reference/Global_Objects/Reflect": { - "modified": "2020-11-08T07:48:53.681Z", + "Learn/Forms/Basic_native_form_controls": { + "modified": "2020-12-02T02:50:19.864Z", "contributors": [ - "parabolabam", - "bakugod", - "Chank1e", - "SphinxKnight", - "Synthesize", - "rajdee", - "C`est la vie" + "kan0neego", + "lazyelf472", + "Галина", + "shade0602", + "outdever", + "Instantrec" ] }, - "Web/JavaScript/Reference/Global_Objects/Reflect/apply": { - "modified": "2020-10-15T22:01:47.478Z", + "Learn/HTML/Multimedia_and_embedding/Adding_vector_graphics_to_the_Web": { + "modified": "2020-12-10T10:10:26.376Z", "contributors": [ - "HarmlessEvil" + "Simkin", + "Khaidarov-Dinar", + "nepiravno", + "AlexChebanenko", + "shade0602", + "Why-are-you-crying", + "vedmibot" ] }, - "Web/JavaScript/Reference/Global_Objects/Reflect/construct": { - "modified": "2020-10-15T22:19:59.737Z", + "Learn/HTML/Multimedia_and_embedding/Mozilla_splash_page": { + "modified": "2020-12-01T05:21:19.875Z", "contributors": [ - "bakugod" + "Furestry", + "RoPy73", + "Zekkler", + "AlekseyCorsello" ] }, - "Web/JavaScript/Reference/Global_Objects/Reflect/defineProperty": { - "modified": "2020-10-15T22:19:53.301Z", + "Learn/HTML/Multimedia_and_embedding/Images_in_HTML": { + "modified": "2020-12-10T06:02:16.441Z", "contributors": [ - "bakugod" + "valandis", + "qafarov33", + "shade0602", + "wizardbil", + "WorpSeal", + "xHelloverx", + "Zekller", + "Corba", + "orcee", + "nowember", + "Aleksey_Esev", + "KoS57", + "InRedikaWB", + "Kouler", + "AliyevHrn", + "sowdfr", + "tav1313" ] }, - "Web/JavaScript/Reference/Global_Objects/Reflect/deleteProperty": { - "modified": "2020-10-15T22:19:49.053Z", + "Learn/HTML/Multimedia_and_embedding/Images_in_HTML/Test_your_skills:_HTML_images": { + "modified": "2020-12-10T07:17:32.470Z", "contributors": [ - "bakugod" + "valandis" ] }, - "Web/JavaScript/Reference/Global_Objects/Reflect/get": { - "modified": "2020-10-15T22:01:46.509Z", + "Learn/HTML/Introduction_to_HTML/Advanced_text_formatting": { + "modified": "2020-12-07T12:01:12.996Z", "contributors": [ - "HarmlessEvil" + "valandis", + "avdalyan", + "Ivan961", + "streetsummit", + "dkrukouski", + "boxa6", + "Bodyhealer", + "s.g.matinyan", + "Dzhabarovm", + "xap", + "Chugou9", + "slychai85", + "glebsc", + "pythonmag", + "FeruzOripov" ] }, - "Web/JavaScript/Reference/Global_Objects/Reflect/ownKeys": { - "modified": "2020-10-15T22:05:30.827Z", + "Learn/HTML/Introduction_to_HTML/Debugging_HTML": { + "modified": "2020-07-16T22:24:16.076Z", "contributors": [ - "ArturJS" + "IlyaDanilovich", + "ekirpichyov", + "boxa6", + "krempson", + "thoughtspile", + "CruOne", + "MariyaSka" ] }, - "Web/JavaScript/Reference/Global_Objects/RegExp": { - "modified": "2020-08-25T20:36:26.657Z", + "Learn/HTML/Introduction_to_HTML/HTML_text_fundamentals": { + "modified": "2020-12-07T02:44:19.544Z", "contributors": [ - "duduindo", - "etonomick", - "needpower", - "username1565", - "PavelKoroteev", - "Zizes", - "kaifonaft", - "wbamberg", - "Express2000", - "WispProxy", - "bobanko", - "sashatexb", - "Grundy", - "dstereo", - "socketpair", - "Hulio", - "Mingun", - "KiraAndMaxim", - "rhyne24" + "valandis", + "Vir", + "Ivan961", + "streetsummit", + "CLoud-Maker", + "exarces", + "4Realit", + "ndrxie", + "Hemonugi", + "boxa6", + "screenspace", + "a-klimantow", + "Tuman", + "nikin93" ] }, - "Web/JavaScript/Reference/Global_Objects/RegExp/@@search": { - "modified": "2020-10-15T22:00:22.795Z", + "Learn/HTML/Introduction_to_HTML": { + "modified": "2020-07-16T22:22:52.967Z", "contributors": [ - "fax1ty" + "boxa6", + "skapesec", + "VAskel", + "SedovDP", + "SergeyIrk", + "s1lver", + "alekaru", + "Denispok", + "AKonia", + "pk.prog", + "Vosik", + "Cyganov" ] }, - "Web/JavaScript/Reference/Global_Objects/RegExp/@@split": { - "modified": "2020-10-15T22:05:39.755Z", + "Learn/HTML/Introduction_to_HTML/Marking_up_a_letter": { + "modified": "2020-12-07T13:58:43.781Z", "contributors": [ - "0x0071" + "valandis", + "Khaidarov-Dinar", + "shade0602", + "Janivar05", + "Darbestor", + "boxa6", + "Tuman", + "thoughtspile", + "saniaky" ] }, - "Web/JavaScript/Reference/Global_Objects/RegExp/exec": { - "modified": "2019-10-03T07:10:20.564Z", + "Learn/HTML/Introduction_to_HTML/Structuring_a_page_of_content": { + "modified": "2020-12-08T12:05:46.465Z", "contributors": [ - "Haosik", - "Mingun" + "valandis", + "shade0602", + "H3llaFresh", + "boxa6", + "SenkevichEvgenii", + "Dzhabarovm", + "thoughtspile" ] }, - "Web/JavaScript/Reference/Global_Objects/RegExp/flags": { - "modified": "2019-03-23T23:03:48.545Z", + "Learn/HTML/Introduction_to_HTML/The_head_metadata_in_HTML": { + "modified": "2020-12-06T13:02:48.159Z", "contributors": [ - "SphinxKnight", - "Mingun" + "valandis", + "Ivan961", + "streetsummit", + "AlexKost700", + "trman", + "boxa6", + "Bapen1k", + "SoMuchEffort", + "AlexeyIoffe", + "DenisYaschenko", + "hornuglan", + "reksar", + "AkulinaShark", + "saniaky", + "SergeyIrk", + "SergeySM", + "thoughtspile", + "nikin93", + "kolanski" ] }, - "Web/JavaScript/Reference/Global_Objects/RegExp/global": { - "modified": "2019-03-23T23:03:48.212Z", + "Learn/HTML/Introduction_to_HTML/Getting_started": { + "modified": "2020-12-06T12:25:35.513Z", "contributors": [ - "Mingun" + "valandis", + "avdalyan", + "mirzoevtt", + "Ivan961", + "OlehMrB", + "boxa6", + "HelpVPS", + "SedovDP", + "Smekh", + "SoMuchEffort", + "AlexeyIoffe", + "buhman1974", + "Christisrisen", + "lexachsar", + "5iv1i73", + "SelenIT", + "SergeyIrk", + "ax2mx", + "StrixG", + "nikin93", + "thoughtspile", + "katerina_ti", + "zloyKrolik", + "Startsev", + "kolanski", + "AKonia" ] }, - "Web/JavaScript/Reference/Global_Objects/RegExp/ignoreCase": { - "modified": "2019-03-23T23:03:53.037Z", + "Learn/HTML/Introduction_to_HTML/Creating_hyperlinks": { + "modified": "2020-12-07T04:48:22.214Z", "contributors": [ - "Mingun" + "valandis", + "Ivan961", + "Aalexashka", + "Hemonugi", + "boxa6", + "Bob-chemist", + "xap", + "Klevtcov", + "reksar", + "skapesec", + "Potemkiin", + "Nerill", + "Cruseir", + "thoughtspile", + "arturparkhisenko", + "nikin93" ] }, - "Web/JavaScript/Reference/Global_Objects/RegExp/input": { - "modified": "2020-10-15T22:21:51.345Z", + "Learn/HTML/Introduction_to_HTML/Document_and_website_structure": { + "modified": "2020-12-07T13:21:17.650Z", "contributors": [ - "gudkovdanila" + "valandis", + "ana-karp", + "Ivan961", + "sergeyshulzhenko", + "Merius", + "boxa6", + "thoughtspile", + "Potemkiin", + "beloglazof", + "IrinaShv" ] }, - "Web/JavaScript/Reference/Global_Objects/RegExp/lastIndex": { - "modified": "2019-03-23T23:03:47.604Z", + "Learn/HTML/Howto": { + "modified": "2020-07-16T22:22:30.849Z", "contributors": [ - "Mingun" + "PaRaD0XCORP", + "Rendjey", + "AKonia" ] }, - "Web/JavaScript/Reference/Global_Objects/RegExp/lastMatch": { - "modified": "2020-10-15T22:21:50.708Z", + "Learn/JavaScript/Asynchronous/Timeouts_and_intervals": { + "modified": "2020-12-09T10:32:13.319Z", "contributors": [ - "zoodogood", - "gudkovdanila" + "WhoRlyCares", + "velheor24" ] }, - "Web/JavaScript/Reference/Global_Objects/RegExp/multiline": { - "modified": "2019-03-23T23:03:46.419Z", + "Learn/JavaScript/Building_blocks/Events": { + "modified": "2020-08-14T06:15:51.092Z", "contributors": [ - "Mingun" + "bogpok", + "Bb1cTpeJI", + "artamonster", + "chergav", + "kryukalexander", + "ConstantineZz", + "Zibroff", + "vOICe-xx", + "CharlyLovegood", + "slychai85", + "Paul_Yuhnovich" ] }, - "Web/JavaScript/Reference/Global_Objects/RegExp/n": { - "modified": "2020-10-15T21:54:34.887Z", + "Learn/JavaScript/Objects/Adding_bouncing_balls_features": { + "modified": "2020-07-16T22:32:35.948Z", "contributors": [ - "ekirpichyov", - "teoli", - "yulllll", - "Mihail15", - "KamilOcean" + "Stexe", + "slychai85" ] }, - "Web/JavaScript/Reference/Global_Objects/RegExp/prototype": { - "modified": "2019-03-23T23:05:56.982Z", + "Learn/JavaScript/Objects": { + "modified": "2020-07-16T22:31:52.750Z", "contributors": [ - "Mingun" + "VoropN", + "injashkin", + "KomarovSergey", + "george-04" ] }, - "Web/JavaScript/Reference/Global_Objects/RegExp/source": { - "modified": "2020-05-04T10:45:02.263Z", + "Learn/JavaScript/Objects/Inheritance": { + "modified": "2020-10-17T04:55:20.992Z", "contributors": [ - "ellizii", - "Mingun" + "raylyanway", + "masawik", + "wind-of", + "injashkin", + "Aparin", + "AntonySawyer", + "slychai85" ] }, - "Web/JavaScript/Reference/Global_Objects/RegExp/sticky": { - "modified": "2019-03-23T23:03:51.760Z", + "Learn/JavaScript/Objects/JSON": { + "modified": "2020-07-16T22:32:28.868Z", "contributors": [ - "SphinxKnight", - "serj-by", - "WispProxy", - "Mingun" + "Tatyana-c", + "pm3512", + "wind-of", + "NikitaOstapenko1205", + "boxa6", + "Lirikklimov", + "slychai85" ] }, - "Web/JavaScript/Reference/Global_Objects/RegExp/test": { - "modified": "2020-05-25T03:11:01.471Z", + "Learn/JavaScript/Objects/Object_building_practice": { + "modified": "2020-07-16T22:32:32.476Z", "contributors": [ - "SphinxKnight", - "pohuyebawtak", - "Glazomer", - "waterplea", - "Mingun", - "InoY" + "Slowball", + "benzin_kanister", + "ellegre", + "boxa6", + "slychai85" ] }, - "Web/JavaScript/Reference/Global_Objects/RegExp/toSource": { - "modified": "2019-08-27T16:00:03.262Z", + "Learn/JavaScript/Objects/Object_prototypes": { + "modified": "2020-07-16T22:32:22.353Z", "contributors": [ - "Yialo", - "Mingun" + "wind-of", + "sahmildzhakeev", + "injashkin", + "Aparin", + "kplatova", + "NooNoo1337", + "VaselisaS", + "slychai85", + "arnoldovich", + "AndreySushentsov" ] }, - "Web/JavaScript/Reference/Global_Objects/RegExp/toString": { - "modified": "2019-03-23T23:03:38.400Z", + "Learn/JavaScript/Objects/Object-oriented_JS": { + "modified": "2020-11-28T15:15:40.063Z", "contributors": [ - "Mingun" + "Tartalon", + "Viatcheslav-Malahov", + "wind-of", + "Detrimon", + "BadLame", + "ConstantineZz", + "ellegre", + "injashkin", + "NooNoo1337", + "Roman-Halenko", + "sergeomak", + "Elena_Petrenko", + "uandrew", + "slychai85", + "superpuper32", + "GennadyGlushenkov" ] }, - "Web/JavaScript/Reference/Global_Objects/RegExp/unicode": { - "modified": "2020-10-15T22:03:35.958Z", + "Learn/JavaScript/Objects/Basics": { + "modified": "2020-11-25T08:55:51.454Z", "contributors": [ - "PROPHESSOR" + "Tartalon", + "alexpikuta", + "wind-of", + "jynweythek", + "iwanttobealight", + "ConstantineZz", + "genesky", + "boxa6", + "injashkin", + "NooNoo1337", + "Dusmatoff", + "KoS57", + "slychai85", + "Jony_e", + "slowpokex", + "DoRightt", + "superpuper32" ] }, - "Web/JavaScript/Reference/Global_Objects/Set": { - "modified": "2020-10-15T21:31:17.149Z", + "Learn/JavaScript/First_steps/A_first_splash": { + "modified": "2020-09-18T19:59:13.793Z", "contributors": [ - "andrew_shr", - "YozhEzhi", - "kan.a", + "aashch1", "SphinxKnight", - "dima74", - "papadima", - "vibecode", - "ViZhe", - "dtretyakov" + "sirartemis", + "TurtleOld", + "wanvo", + "Novo", + "Shadow86", + "slychai85", + "TaizoGem", + "Rodionoff", + "st4nislava", + "AndrewSamofalov", + "warsan", + "SergeySM", + "lipav", + "InternetShelteredBoy", + "HaukIce", + "maicom64", + "fragmentbyte", + "kirabt123", + "Segyn", + "FIJN", + "alekaru" ] }, - "Web/JavaScript/Reference/Global_Objects/Set/Set": { - "modified": "2020-12-07T09:25:28.434Z", + "Learn/JavaScript/First_steps/Arrays": { + "modified": "2020-07-16T22:30:57.680Z", "contributors": [ "SphinxKnight", - "knatysik" + "Immdevrov", + "chergav", + "ConstantineZz", + "maksolimp", + "AliyevHrn", + "slychai85", + "10486", + "samofand", + "ArtyomIv" ] }, - "Web/JavaScript/Reference/Global_Objects/Set/add": { - "modified": "2020-10-15T22:03:24.314Z", + "Learn/JavaScript/First_steps": { + "modified": "2020-07-16T22:29:55.165Z", "contributors": [ - "Siteograf" + "chrisdavidmills", + "boxa6", + "maxno62", + "Jertej", + "pepsikat", + "alekaru", + "a13xk", + "campside", + "werreour", + "tagir000" ] }, - "Web/JavaScript/Reference/Global_Objects/Set/clear": { - "modified": "2020-10-15T21:58:59.279Z", + "Learn/JavaScript/First_steps/Math": { + "modified": "2020-07-16T22:30:28.347Z", "contributors": [ - "dima74" + "podocenov", + "SphinxKnight", + "bsanzhiev", + "xxphantom", + "EugeneSvetlakov", + "ConstantineZz", + "galaxy3user", + "BerezkinBerezkin", + "y2k", + "Froris", + "AndrewSamofalov", + "FIJN" ] }, - "Web/JavaScript/Reference/Global_Objects/Set/delete": { - "modified": "2020-10-15T22:04:59.296Z", + "Learn/JavaScript/First_steps/Useful_string_methods": { + "modified": "2020-12-02T10:07:41.183Z", "contributors": [ - "ekirpichyov", - "ArmoGidec" + "nyood", + "SphinxKnight", + "Ivan961", + "Anonymous", + "RedKvothe", + "ConstantineZz", + "boxa6", + "chrisdavidmills", + "AsVit", + "AliyevHrn", + "slychai85", + "MariyaSka", + "samofand", + "AndrewSamofalov" ] }, - "Web/JavaScript/Reference/Global_Objects/Set/entries": { - "modified": "2020-10-15T22:22:34.627Z", + "Learn/JavaScript/First_steps/Variables": { + "modified": "2020-07-23T12:20:59.443Z", "contributors": [ - "ekirpichyov" + "k0w4lk", + "SphinxKnight", + "goyalion17", + "ConstantineZz", + "hasiev-elchin", + "Froris", + "AliyevHrn", + "slychai85", + "AndrewSamofalov", + "laion220995", + "HaukIce" ] }, - "Web/JavaScript/Reference/Global_Objects/Set/forEach": { - "modified": "2020-10-15T22:18:01.267Z", + "Learn/JavaScript/First_steps/What_is_JavaScript": { + "modified": "2020-07-16T22:30:12.291Z", "contributors": [ - "TatarovAE", - "boulderboy" + "hisbvdis", + "SphinxKnight", + "Avdros", + "ana-karp", + "EugeneSvetlakov", + "goyalion17", + "AlexanderSpivak", + "KrasPvP", + "Kirill20123", + "chrisdavidmills", + "DmitryYev", + "Sherxan", + "DraXXX", + "s0nly", + "InternetShelteredBoy", + "Jertej", + "fragmentbyte", + "YanaGord", + "pathliving", + "perevalova", + "dkireev", + "susov", + "pust0ta", + "Badpioneer", + "MrCopying", + "DRuslan", + "Mikhail_Eltekov", + "alekaru", + "lawyer12" ] }, - "Web/JavaScript/Reference/Global_Objects/Set/has": { - "modified": "2020-10-15T22:10:52.073Z", + "Learn/JavaScript/First_steps/Silly_story_generator": { + "modified": "2020-11-24T09:51:12.035Z", "contributors": [ - "raylyanway" + "tetragidrohlorid", + "SphinxKnight", + "ikzsl", + "AntonySawyer", + "ConstantineZz", + "vasja-slvm", + "AliyevHrn", + "slychai85", + "epidersis", + "DonVeds" ] }, - "Web/JavaScript/Reference/Global_Objects/Set/prototype": { - "modified": "2020-10-15T22:08:32.198Z", + "Learn/JavaScript/First_steps/Strings": { + "modified": "2020-09-30T14:12:03.725Z", "contributors": [ - "AndreyGlyan", - "qqwweeaassdd", - "paramoshkinandrew" + "artsimon555", + "SphinxKnight", + "maxbo8", + "ConstantineZz", + "boxa6", + "galaxy3user", + "CharlyLovegood", + "mironovartem" ] }, - "Web/JavaScript/Reference/Global_Objects/Set/size": { - "modified": "2020-10-15T22:22:51.490Z", + "Learn/JavaScript/First_steps/What_went_wrong": { + "modified": "2020-07-16T22:30:36.453Z", "contributors": [ - "ekirpichyov" + "SphinxKnight", + "Immdevrov", + "chrisdavidmills", + "SedovDP", + "ArturWer", + "hasiev-elchin", + "Froris", + "AliyevHrn", + "MariyaSka", + "AndrewSamofalov", + "SergeySM", + "nikitapoly" ] }, - "Web/JavaScript/Reference/Global_Objects/Set/values": { - "modified": "2020-10-15T22:22:36.094Z", + "Learn/Common_questions/Pages_sites_servers_and_search_engines": { + "modified": "2020-09-27T11:42:16.769Z", "contributors": [ - "ekirpichyov" + "sailonely", + "PinkDeer", + "beloglazof", + "OrkVasya", + "Kipelych", + "TinaSuhanovskaya", + "Hasyama", + "elcamlost" ] }, - "Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer": { - "modified": "2019-03-23T22:09:27.484Z", + "Learn/Server-side/Django/Authentication": { + "modified": "2020-10-09T09:34:14.083Z", "contributors": [ - "nikolaysalinder", - "scilganon", - "curdwithraisins" + "hustonCun", + "i0tool5", + "Andrey.Chichak", + "SYSchel", + "Maksimka101", + "ivkainova", + "VyacheslavLobanov", + "DIAMONDinc", + "warsan", + "Flygrounder", + "kivaschenko", + "MariyaSka", + "zet694", + "al+chernin" ] }, - "Web/JavaScript/Reference/Global_Objects/String": { - "modified": "2020-11-19T06:55:56.629Z", + "Learn/Server-side/Django/Introduction": { + "modified": "2020-12-09T11:58:11.401Z", "contributors": [ - "liubov", - "mangl-auf", - "boxa6", - "wbamberg", - "an2323", - "IvanMorkva", - "Mingun", - "fobo66", - "teoli", - "ethertank" + "mantisSp", + "malikovboo", + "exelay", + "NickSalander", + "xc0derx", + "azhlbn", + "NeshkoO", + "kivaschenko", + "hbble", + "Danchek", + "n05tr0m0", + "Limpar", + "vakhet", + "kilovoltov", + "AnnaSamonenko", + "DIAMONDinc" ] - }, - "Web/JavaScript/Reference/Global_Objects/String/@@iterator": { - "modified": "2020-10-14T10:03:26.063Z", + }, + "Learn/Server-side/Django/Deployment": { + "modified": "2020-07-16T22:37:42.545Z", "contributors": [ - "scrum", - "SphinxKnight", - "Mingun" + "velocanica", + "Vanvala", + "Nunyapa", + "DIAMONDinc", + "kitasS", + "1Gregory", + "kivaschenko", + "al+chernin" ] }, - "Web/JavaScript/Reference/Global_Objects/String/Trim": { - "modified": "2019-03-23T23:11:20.382Z", + "Learn/Server-side/Django/Sessions": { + "modified": "2020-07-16T22:37:27.912Z", "contributors": [ - "KiraAndMaxim", - "Mingun", - "Ajooluz" + "egorguscha", + "timur-orudzhov", + "askras", + "al+chernin" ] }, - "Web/JavaScript/Reference/Global_Objects/String/TrimLeft": { - "modified": "2019-03-23T23:06:19.542Z", + "Learn/Server-side/Express_Nodejs/Tutorial_local_library_website": { + "modified": "2020-07-16T22:38:16.847Z", "contributors": [ - "Mingun" + "maxno62", + "daviys" ] }, - "Web/JavaScript/Reference/Global_Objects/String/TrimRight": { - "modified": "2019-03-23T23:06:21.966Z", + "Learn/Server-side/First_steps/Website_security": { + "modified": "2020-12-05T11:58:05.010Z", "contributors": [ - "Mingun" + "valandis", + "ruslanjumagaliev", + "maxlu86", + "tymino" ] }, - "Web/JavaScript/Reference/Global_Objects/String/anchor": { - "modified": "2019-03-18T20:48:46.079Z", + "Learn/Tools_and_testing/GitHub": { + "modified": "2020-09-30T19:47:51.138Z", "contributors": [ - "risenforces", - "DenVdmj", - "Mingun" + "TXCloud", + "PPGAkril", + "garanzha.s.a" ] }, - "Web/JavaScript/Reference/Global_Objects/String/big": { - "modified": "2019-03-23T23:06:53.527Z", + "Learn/Tools_and_testing/Client-side_JavaScript_frameworks": { + "modified": "2020-07-16T22:39:33.460Z", "contributors": [ - "Mingun" + "Anonymous" ] }, - "Web/JavaScript/Reference/Global_Objects/String/blink": { - "modified": "2019-03-23T23:06:56.834Z", + "Learn/Tools_and_testing/Client-side_JavaScript_frameworks/React_getting_started": { + "modified": "2020-07-16T22:39:39.236Z", "contributors": [ - "Mingun" + "ckomop0x" ] }, - "Web/JavaScript/Reference/Global_Objects/String/bold": { - "modified": "2019-03-23T23:06:52.878Z", + "Learn/Common_questions/What_is_a_domain_name": { + "modified": "2020-07-16T22:35:44.834Z", "contributors": [ - "Mingun" + "StasBalia", + "sergeyshulzhenko", + "CLoud-Maker", + "thecodecreator", + "Glebowsky", + "elcamlost", + "makoviychuk", + "vladislavukhov" ] }, - "Web/JavaScript/Reference/Global_Objects/String/charAt": { - "modified": "2019-09-05T08:52:29.623Z", + "Learn/Common_questions/What_are_hyperlinks": { + "modified": "2020-11-25T08:11:30.000Z", "contributors": [ - "Mingun" + "NikeSmitt", + "Aalexashka", + "vladislavukhov", + "lerniri" ] }, - "Web/JavaScript/Reference/Global_Objects/String/charCodeAt": { - "modified": "2019-10-10T16:47:08.723Z", + "Learn/Common_questions/What_is_a_URL": { + "modified": "2020-07-16T22:35:30.373Z", "contributors": [ - "WispProxy", - "Mingun" + "Excent163", + "gadjetron", + "vladislavukhov", + "lerniri" ] }, - "Web/JavaScript/Reference/Global_Objects/String/codePointAt": { - "modified": "2019-03-23T23:06:49.782Z", + "Learn/Accessibility/Accessibility_troubleshooting": { + "modified": "2020-07-16T22:40:36.878Z", "contributors": [ - "SphinxKnight", - "Mingun" + "boxa6" ] }, - "Web/JavaScript/Reference/Global_Objects/String/concat": { - "modified": "2019-03-23T23:06:50.258Z", + "Learn/Accessibility/CSS_and_JavaScript": { + "modified": "2020-07-16T22:40:19.160Z", "contributors": [ - "Mingun" + "Madihander", + "boxa6" ] }, - "Web/JavaScript/Reference/Global_Objects/String/endsWith": { - "modified": "2020-11-30T13:19:02.930Z", + "Learn/Accessibility/HTML": { + "modified": "2020-07-16T22:40:14.761Z", "contributors": [ - "vedmaque", - "viktishchenko", - "SphinxKnight", - "burashka", - "Mingun" + "TurtleOld", + "baradusov", + "niktariy", + "boxa6" ] }, - "Web/JavaScript/Reference/Global_Objects/String/fixed": { - "modified": "2019-03-23T23:06:56.996Z", + "Learn/Accessibility": { + "modified": "2020-07-16T22:40:00.507Z", "contributors": [ - "Mingun" + "baradusov", + "pepelsbey", + "niktariy", + "IgorPuchkov2003", + "buhman1974", + "Pristavka", + "fasnet", + "iksah", + "Paul_Yuhnovich" ] }, - "Web/JavaScript/Reference/Global_Objects/String/fontcolor": { - "modified": "2019-03-23T23:06:53.696Z", + "Learn/Accessibility/Mobile": { + "modified": "2020-07-16T22:40:32.502Z", "contributors": [ - "Mingun" + "boxa6" ] }, - "Web/JavaScript/Reference/Global_Objects/String/fontsize": { - "modified": "2019-03-23T23:06:55.867Z", + "Learn/Accessibility/Multimedia": { + "modified": "2020-07-16T22:40:27.927Z", "contributors": [ - "Mingun" + "boxa6" ] }, - "Web/JavaScript/Reference/Global_Objects/String/fromCharCode": { - "modified": "2020-02-26T00:26:26.501Z", + "Learn/Accessibility/WAI-ARIA_basics": { + "modified": "2020-07-16T22:40:23.911Z", "contributors": [ - "kurbanovjasur", - "Mingun" + "streloc84", + "boxa6" ] }, - "Web/JavaScript/Reference/Global_Objects/String/fromCodePoint": { - "modified": "2019-03-23T23:07:12.216Z", + "Learn/Accessibility/What_is_accessibility": { + "modified": "2020-07-16T22:40:06.747Z", "contributors": [ - "SphinxKnight", - "Mingun" + "niktariy", + "Frisle", + "Pristavka" ] }, - "Web/JavaScript/Reference/Global_Objects/String/includes": { - "modified": "2020-10-15T21:31:11.231Z", + "orphaned/Learn/How_to_contribute": { + "modified": "2020-07-16T22:33:46.276Z", "contributors": [ - "Therrance", - "fscholz", - "dima74", - "PetrBorisov", - "kdex", - "burashka", - "Mingun" + "SphinxKnight", + "KTatyana", + "BychekRU", + "MuradAz" ] }, - "Web/JavaScript/Reference/Global_Objects/String/indexOf": { - "modified": "2019-04-10T16:45:26.467Z", + "Learn/Front-end_web_developer": { + "modified": "2020-10-26T19:26:16.101Z", "contributors": [ - "danielvinogradov", - "expeerd", - "Mingun" + "Villian79", + "bogpok", + "Menma" ] }, - "Web/JavaScript/Reference/Global_Objects/String/italics": { - "modified": "2019-03-23T23:06:57.747Z", + "Learn/Common_questions/What_is_a_web_server": { + "modified": "2020-07-16T22:35:32.096Z", "contributors": [ - "Mingun" + "joshua1955", + "Dozorengel", + "beloglazof", + "Geloosa", + "erelena", + "Sumere4ny", + "talgautb", + "Xryak", + "uralbash", + "elcamlost" ] }, - "Web/JavaScript/Reference/Global_Objects/String/lastIndexOf": { - "modified": "2019-03-23T23:06:47.724Z", + "conflicting/MDN/Contribute": { + "modified": "2020-10-30T09:21:05.942Z", "contributors": [ - "expeerd", - "Mingun" + "ksam", + "jswisher", + "Valenchak" ] }, - "Web/JavaScript/Reference/Global_Objects/String/length": { - "modified": "2019-03-23T23:07:11.163Z", + "MDN/At_ten": { + "modified": "2019-03-23T22:49:58.338Z", "contributors": [ - "Mingun" + "dimakozakov", + "acidicMercury8", + "Myshov", + "anmo" ] }, - "Web/JavaScript/Reference/Global_Objects/String/link": { - "modified": "2019-03-23T23:06:52.727Z", + "MDN/Contribute/Howto/Create_and_edit_pages": { + "modified": "2020-04-10T13:36:06.534Z", "contributors": [ - "RumyantsevMichael", - "Mingun" + "karifan8767", + "wbamberg", + "djigach", + "KaroHovhannisyan", + "Ferguse", + "vaser321", + "TemmyR", + "Servik17", + "vislogurov", + "Chronosms", + "BychekRU", + "SashaSh", + "Spiker" ] }, - "Web/JavaScript/Reference/Global_Objects/String/localeCompare": { - "modified": "2019-03-23T23:06:31.683Z", + "orphaned/MDN/Contribute/Howto/Create_an_MDN_account": { + "modified": "2020-08-25T20:34:15.669Z", "contributors": [ - "ovvn", - "Mingun" + "duduindo", + "sayfullayevabdixalil", + "stefantsova", + "svyatoslavlp", + "Fredoss", + "bayashka123", + "seliverstova", + "wbamberg", + "erfari", + "takto", + "yambergaa", + "CaptainMorgan", + "Dimetriu", + "Katya_Kosuga", + "Aleksandr2101" ] }, - "Web/JavaScript/Reference/Global_Objects/String/match": { - "modified": "2019-08-27T15:10:06.292Z", + "orphaned/MDN/Contribute/Howto/Do_a_technical_review": { + "modified": "2020-01-04T22:10:59.231Z", "contributors": [ - "Yialo", - "ArmoGidec", - "Mingun" + "Ivan961", + "shmel3", + "wbamberg", + "StyleToken", + "Devengineer", + "Aleksandr2101" ] }, - "Web/JavaScript/Reference/Global_Objects/String/matchAll": { - "modified": "2020-10-15T22:15:55.263Z", + "orphaned/MDN/Contribute/Howto/Do_an_editorial_review": { + "modified": "2019-10-02T16:12:23.523Z", "contributors": [ - "atmobox66", - "Yialo", - "nakhodkiin" + "wbamberg", + "ivanson", + "Jessai", + "ilyar", + "SnejUgal", + "AlexeyOm", + "L18-666B", + "Devengineer" ] }, - "Web/JavaScript/Reference/Global_Objects/String/normalize": { - "modified": "2019-08-27T15:13:41.527Z", + "MDN/Contribute/Howto/Add_or_update_browser_compatibility_data": { + "modified": "2019-07-13T14:51:28.876Z", "contributors": [ - "Yialo", - "Seresigo", - "borschsergey", - "SphinxKnight", - "Metotron", - "Mingun", - "dtretyakov" + "fuggy" ] }, - "Web/JavaScript/Reference/Global_Objects/String/padEnd": { - "modified": "2019-08-27T15:13:11.473Z", + "orphaned/MDN/Contribute/Howto/Set_the_summary_for_a_page": { + "modified": "2019-03-23T22:33:34.588Z", "contributors": [ - "Yialo", - "teoli", - "a-chepugov" + "wbamberg", + "che7ovek", + "Glebowsky" ] }, - "Web/JavaScript/Reference/Global_Objects/String/padStart": { - "modified": "2020-10-15T21:55:08.745Z", + "orphaned/MDN/Contribute/Howto/Tag_JavaScript_pages": { + "modified": "2019-01-17T02:41:09.446Z", "contributors": [ - "Yialo", - "vladimircreative", - "wa-Nadoo", - "timbset" + "wbamberg", + "dyaroman" ] }, - "Web/JavaScript/Reference/Global_Objects/String/prototype": { - "modified": "2019-08-27T15:11:15.337Z", + "MDN/Contribute/Howto/Create_an_interactive_exercise_to_help_learning_the_web": { + "modified": "2019-03-18T20:31:43.828Z", "contributors": [ - "Yialo", - "EugeneTarasenko", - "ukrlex01", - "arctic-hare", - "webnarmin", - "Mingun" + "MuradAz" ] }, - "Web/JavaScript/Reference/Global_Objects/String/raw": { - "modified": "2019-03-23T23:06:30.098Z", + "MDN/Contribute/Processes": { + "modified": "2019-01-17T00:00:52.853Z", "contributors": [ - "SphinxKnight", - "oleg_s", - "Mingun", - "dtretyakov" + "wbamberg", + "warsan" ] }, - "Web/JavaScript/Reference/Global_Objects/String/repeat": { - "modified": "2020-10-15T21:31:18.222Z", + "orphaned/MDN/Editor/Basics": { + "modified": "2020-09-30T15:43:33.440Z", "contributors": [ - "KTatyana", - "Mingun", - "dtretyakov" + "chrisdavidmills", + "aleksandrpnshkn", + "wbamberg", + "ValeriiBoiko", + "djigach", + "warsan", + "JavaS" ] }, - "Web/JavaScript/Reference/Global_Objects/String/replace": { - "modified": "2020-10-15T21:24:19.735Z", + "orphaned/MDN/Editor/Basics/Page_controls": { + "modified": "2020-09-30T15:43:33.388Z", "contributors": [ - "YozhEzhi", - "dimakovalevskyi", - "igorkusoff", - "Mingun", - "Lambrusco.pro", - "teoli", - "andrey_d" + "chrisdavidmills", + "aleksandrpnshkn" ] }, - "Web/JavaScript/Reference/Global_Objects/String/replaceAll": { - "modified": "2020-10-15T22:34:38.094Z", + "orphaned/MDN/Editor/Basics/Toolbar": { + "modified": "2020-09-30T15:43:33.855Z", "contributors": [ - "GuyFox70" + "chrisdavidmills", + "aleksandrpnshkn" ] }, - "Web/JavaScript/Reference/Global_Objects/String/search": { - "modified": "2019-10-03T07:09:20.235Z", + "orphaned/MDN/Editor": { + "modified": "2020-09-30T15:43:33.251Z", "contributors": [ - "Glazomer", - "nakhodkiin", - "atna", - "Mingun" + "chrisdavidmills", + "andresvara88", + "Vyprichenko", + "Ivan961", + "wbamberg", + "Luboshenko", + "T1mL3arn", + "warsan", + "anastasiya-podolyak", + "BychekRU", + "sputnik1986", + "Grigorjjjmolokov81", + "KrishnaKevalam", + "Slang74" ] }, - "Web/JavaScript/Reference/Global_Objects/String/slice": { - "modified": "2020-12-02T04:52:58.834Z", + "orphaned/MDN/Editor/Source_mode": { + "modified": "2020-09-30T15:43:35.463Z", "contributors": [ - "inva8de", - "bestwebdeveloper", - "Andrii-Oleksyshyn", - "Mingun" + "chrisdavidmills", + "Ivan961" ] }, - "Web/JavaScript/Reference/Global_Objects/String/small": { - "modified": "2019-03-23T23:06:51.754Z", + "orphaned/MDN/Editor/Tables": { + "modified": "2020-09-30T15:43:35.242Z", "contributors": [ - "Mingun" + "chrisdavidmills", + "Ivan961" ] }, - "Web/JavaScript/Reference/Global_Objects/String/split": { - "modified": "2020-11-30T06:21:03.966Z", + "orphaned/MDN/Editor/Keyboard_shortcuts": { + "modified": "2020-09-30T15:43:34.335Z", "contributors": [ - "DarkGoanna", - "Ect0PzG4m1ng", - "IgorSkvortsov", - "bruha", - "terranisu", - "Mingun", - "FRiMN" + "chrisdavidmills", + "Ivan961" ] }, - "Web/JavaScript/Reference/Global_Objects/String/startsWith": { - "modified": "2020-10-15T21:31:11.246Z", + "orphaned/MDN/Editor/Images": { + "modified": "2020-09-30T15:43:34.113Z", "contributors": [ - "ilyasidorchik", - "viktishchenko", - "Simaleon", - "dmitryorly", - "SphinxKnight", - "AtataUruru", - "burashka", - "Mingun" + "chrisdavidmills", + "Avdros", + "wbamberg", + "pk.prog" ] }, - "Web/JavaScript/Reference/Global_Objects/String/strike": { - "modified": "2019-09-05T08:52:44.580Z", + "orphaned/MDN/Editor/Redirects": { + "modified": "2020-09-30T15:43:34.816Z", "contributors": [ - "Mingun" + "chrisdavidmills", + "Ivan961" ] }, - "Web/JavaScript/Reference/Global_Objects/String/sub": { - "modified": "2019-03-23T23:07:01.566Z", + "orphaned/MDN/Editor/Syntax_highlighting": { + "modified": "2020-09-30T15:43:35.025Z", "contributors": [ - "Mingun" + "chrisdavidmills", + "Ivan961" ] }, - "Web/JavaScript/Reference/Global_Objects/String/substr": { - "modified": "2020-10-15T21:31:19.515Z", + "orphaned/MDN/Editor/Links": { + "modified": "2020-09-30T15:43:34.675Z", "contributors": [ - "art-gur", - "lugovov", - "Halkyon", - "fscholz", - "Mingun" + "chrisdavidmills", + "Ivan961" ] }, - "Web/JavaScript/Reference/Global_Objects/String/substring": { - "modified": "2019-03-23T23:06:24.574Z", + "MDN/Yari": { + "modified": "2019-09-09T15:51:19.091Z", "contributors": [ - "Barkhat26", - "Mingun" + "SphinxKnight", + "wbamberg", + "BychekRU", + "FRiMN" ] }, - "Web/JavaScript/Reference/Global_Objects/String/sup": { - "modified": "2019-03-23T23:06:59.702Z", + "MDN/Tools/KumaScript/Troubleshooting": { + "modified": "2019-07-08T19:30:04.842Z", "contributors": [ - "Mingun" + "fuggy", + "wbamberg", + "MariyaSka", + "cpigat" ] }, - "Web/JavaScript/Reference/Global_Objects/String/toLocaleLowerCase": { - "modified": "2019-03-23T23:06:20.649Z", + "orphaned/MDN/Structures/Live_samples/Simple_live_sample_demo": { + "modified": "2020-09-30T12:57:23.196Z", "contributors": [ - "Mingun" + "chrisdavidmills", + "fuggy" ] }, - "Web/JavaScript/Reference/Global_Objects/String/toLocaleUpperCase": { - "modified": "2019-03-23T23:06:18.129Z", + "orphaned/MDN/Tools/Page_watching": { + "modified": "2020-09-30T16:54:08.639Z", "contributors": [ - "Mingun" + "chrisdavidmills", + "wbamberg", + "warsan", + "Jasum", + "Liubava77", + "lavr1986uxa" ] }, - "Web/JavaScript/Reference/Global_Objects/String/toLowerCase": { - "modified": "2019-03-23T23:06:20.814Z", + "MDN/Tools/Unsupported_GET_API": { + "modified": "2020-11-05T06:23:08.678Z", "contributors": [ - "Mingun" + "ksam" ] }, - "Web/JavaScript/Reference/Global_Objects/String/toSource": { - "modified": "2019-03-23T23:06:17.942Z", + "MDN/Tools/Search": { + "modified": "2019-03-23T23:07:10.929Z", "contributors": [ + "wbamberg", "Mingun" ] }, - "Web/JavaScript/Reference/Global_Objects/String/toString": { - "modified": "2019-03-23T23:06:15.157Z", + "orphaned/MDN/Tools/Page_deletion": { + "modified": "2019-01-16T19:44:31.713Z", "contributors": [ + "wbamberg", "Mingun" ] }, - "Web/JavaScript/Reference/Global_Objects/String/toUpperCase": { - "modified": "2019-03-23T23:06:22.989Z", + "orphaned/MDN/Tools/Feeds": { + "modified": "2019-03-23T23:07:09.701Z", "contributors": [ + "wbamberg", "Mingun" ] }, - "Web/JavaScript/Reference/Global_Objects/String/valueOf": { - "modified": "2019-05-17T04:11:09.851Z", + "orphaned/MDN/About/Linking_to_MDN": { + "modified": "2019-03-23T23:07:15.827Z", "contributors": [ - "dankochetov", + "wbamberg", "Mingun" ] }, - "Web/JavaScript/Reference/Global_Objects/Symbol": { - "modified": "2020-10-15T21:30:42.254Z", + "orphaned/MDN/Community/Conversations": { + "modified": "2020-10-09T08:02:44.061Z", "contributors": [ - "mux-mux", - "boxa6", - "pk.prog", - "smurf", - "neutral", - "schyzoo" + "hustonCun", + "EpicStep", + "SuperSurok", + "boxa6" ] }, - "Web/JavaScript/Reference/Global_Objects/Symbol/@@toPrimitive": { - "modified": "2020-10-15T22:24:20.085Z", + "orphaned/MDN/Community": { + "modified": "2019-09-11T08:01:10.710Z", "contributors": [ - "faramozzayw" + "SphinxKnight", + "wbamberg", + "yambergaa", + "BychekRU", + "bachileha", + "Palatovskaya" ] }, - "Web/JavaScript/Reference/Global_Objects/Symbol/for": { - "modified": "2019-03-23T22:50:59.073Z", + "orphaned/MDN/Community/Whats_happening": { + "modified": "2019-06-26T18:29:06.368Z", "contributors": [ - "SphinxKnight", - "neutral" + "fuggy", + "wbamberg", + "pathliving", + "talgautb" ] }, - "Web/JavaScript/Reference/Global_Objects/Symbol/hasInstance": { - "modified": "2020-10-15T21:56:25.834Z", + "orphaned/MDN/Community/Working_in_community": { + "modified": "2020-02-19T18:49:34.950Z", "contributors": [ + "jswisher", "boxa6", - "vitaliylag", - "shlangus" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Symbol/isConcatSpreadable": { - "modified": "2019-03-23T22:10:03.691Z", - "contributors": [ - "Samotugo" + "bsergey", + "KarryPro" ] }, - "Web/JavaScript/Reference/Global_Objects/Symbol/iterator": { - "modified": "2019-03-23T22:50:51.621Z", + "Mozilla/Add-ons/WebExtensions/Internationalization": { + "modified": "2020-06-26T11:58:33.746Z", "contributors": [ - "SphinxKnight", - "neutral" + "pm3512" ] }, - "Web/JavaScript/Reference/Global_Objects/Symbol/keyFor": { - "modified": "2020-10-15T21:50:47.387Z", + "Mozilla/Add-ons/WebExtensions/Modify_a_web_page": { + "modified": "2020-08-27T17:26:46.914Z", "contributors": [ - "boxa6", - "nakhodkiin", - "Ohar" + "sergserg213", + "Vorteri", + "klavatron" ] }, - "Web/JavaScript/Reference/Global_Objects/Symbol/match": { - "modified": "2019-03-23T22:50:55.400Z", + "orphaned/Mozilla/Add-ons/WebExtensions/Debugging": { + "modified": "2019-03-29T04:27:38.888Z", "contributors": [ - "SphinxKnight", - "neutral" + "karr1d" ] }, - "Web/JavaScript/Reference/Global_Objects/Symbol/prototype": { - "modified": "2019-03-23T22:50:51.135Z", + "Mozilla/Developer_guide/Source_Code": { + "modified": "2019-03-23T23:33:14.609Z", "contributors": [ - "SphinxKnight", - "neutral" + "Dr.Kub", + "chrisdavidmills", + "elityty_777", + "BladeMight", + "andrew.boyarshin" ] }, - "Web/JavaScript/Reference/Global_Objects/Symbol/replace": { - "modified": "2019-04-02T08:34:58.523Z", + "Plugins/Roadmap": { + "modified": "2019-08-01T03:21:45.901Z", "contributors": [ - "shlangus" + "art-gur" ] }, - "Web/JavaScript/Reference/Global_Objects/Symbol/search": { - "modified": "2020-10-15T22:00:25.665Z", + "orphaned/Toolkit_API": { + "modified": "2019-01-16T14:44:25.079Z", "contributors": [ - "fax1ty" + "bill.gates" ] }, - "Web/JavaScript/Reference/Global_Objects/Symbol/species": { - "modified": "2019-03-23T22:50:55.253Z", + "orphaned/Tools/Add-ons/DOM_Inspector": { + "modified": "2020-07-16T22:36:24.834Z", "contributors": [ - "nakhodkiin", - "pk.prog", - "neutral" + "wbamberg", + "kvantor" ] }, - "Web/JavaScript/Reference/Global_Objects/Symbol/split": { - "modified": "2020-10-15T22:05:40.003Z", + "orphaned/Tools/Add-ons": { + "modified": "2020-07-16T22:36:23.822Z", "contributors": [ - "0x0071" + "wbamberg" ] }, - "Web/JavaScript/Reference/Global_Objects/Symbol/toPrimitive": { - "modified": "2020-10-15T21:55:06.866Z", + "Tools/Debugger/How_to/Debug_eval_sources": { + "modified": "2020-07-16T22:35:14.575Z", "contributors": [ - "boxa6", - "nakhodkiin", - "gibson" + "wbamberg", + "pashutk" ] }, - "Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag": { - "modified": "2020-10-15T22:22:55.953Z", + "Tools/Debugger/How_to/Pretty-print_a_minified_file": { + "modified": "2020-07-16T22:35:14.187Z", "contributors": [ - "vkorzhova" + "wbamberg", + "pashutk" ] }, - "Web/JavaScript/Reference/Global_Objects/Symbol/unscopables": { - "modified": "2020-10-15T22:00:25.901Z", + "Tools/Page_Inspector/How_to/Open_the_Inspector": { + "modified": "2020-07-16T22:34:33.193Z", "contributors": [ - "fax1ty" + "wbamberg", + "Aleksej" ] }, - "Web/JavaScript/Reference/Global_Objects/Symbol/valueOf": { - "modified": "2019-03-23T22:50:49.481Z", + "Tools/Page_Inspector/How_to/Select_an_element": { + "modified": "2020-07-16T22:34:33.837Z", "contributors": [ - "SphinxKnight", - "neutral" + "wbamberg", + "trevorh", + "Aleksej" ] }, - "Web/JavaScript/Reference/Global_Objects/SyntaxError": { - "modified": "2019-03-23T23:08:27.309Z", + "Tools/Page_Inspector/How_to/Examine_event_listeners": { + "modified": "2020-07-16T22:34:35.938Z", "contributors": [ - "VladimirDeminenko", - "Mingun" + "wbamberg", + "nzmb" ] }, - "Web/JavaScript/Reference/Global_Objects/SyntaxError/prototype": { - "modified": "2019-03-23T23:08:31.199Z", + "Tools/Page_Inspector/How_to/Edit_fonts": { + "modified": "2020-07-16T22:34:39.270Z", "contributors": [ - "Mingun" + "wbamberg", + "Aleksej" ] }, - "Web/JavaScript/Reference/Global_Objects/TypeError": { - "modified": "2020-10-15T21:30:28.885Z", + "Tools/Page_Inspector/Keyboard_shortcuts": { + "modified": "2020-07-16T22:34:52.844Z", "contributors": [ - "Roman-Kosov", - "Mingun" + "wbamberg", + "Aleksej" ] }, - "Web/JavaScript/Reference/Global_Objects/TypeError/prototype": { - "modified": "2019-03-23T23:08:29.800Z", + "Tools/Responsive_Design_Mode": { + "modified": "2020-07-16T22:35:22.392Z", "contributors": [ - "Mingun" + "dartraiden", + "wbamberg", + "brattri3", + "Aleksej", + "teoli", + "Tihoem", + "lobanok1973" ] }, - "Web/JavaScript/Reference/Global_Objects/TypedArray": { - "modified": "2020-10-15T21:48:29.544Z", + "Tools/Web_Console/UI_Tour": { + "modified": "2020-07-16T22:34:17.559Z", "contributors": [ - "pk.prog", - "arai" + "wbamberg", + "vicamoto" ] }, - "Web/JavaScript/Reference/Global_Objects/TypedArray/@@species": { - "modified": "2019-03-23T22:25:44.388Z", + "Tools/Accessibility_inspector": { + "modified": "2020-07-16T22:36:40.152Z", "contributors": [ - "pk.prog" + "dartraiden", + "s1lver", + "cogor" ] }, - "Web/JavaScript/Reference/Global_Objects/TypedArray/BYTES_PER_ELEMENT": { - "modified": "2019-03-23T22:25:40.817Z", + "Tools/Browser_Console": { + "modified": "2020-07-16T22:35:42.837Z", "contributors": [ - "pk.prog" + "wbamberg", + "Grief", + "vicamoto", + "Aleksej" ] }, - "Web/JavaScript/Reference/Global_Objects/TypedArray/join": { - "modified": "2019-03-23T22:26:41.183Z", + "Tools/Rulers": { + "modified": "2020-07-16T22:36:26.593Z", "contributors": [ - "pk.prog" + "wbamberg", + "thepocp", + "SynCap" ] }, - "Web/JavaScript/Reference/Global_Objects/TypedArray/prototype": { - "modified": "2020-10-15T21:49:43.029Z", + "Tools/Performance": { + "modified": "2020-07-16T22:36:13.723Z", "contributors": [ - "pk.prog" + "wbamberg", + "s1lver", + "nemcik7", + "matador21385", + "Ellgine" ] }, - "Web/JavaScript/Reference/Global_Objects/TypedArray/set": { - "modified": "2019-03-23T22:28:36.546Z", + "Tools/Performance/Waterfall": { + "modified": "2020-07-16T22:36:18.443Z", "contributors": [ - "Mototroller", - "dickclaus" + "wbamberg", + "karambaJob" ] }, - "Web/JavaScript/Reference/Global_Objects/URIError": { - "modified": "2019-03-23T23:08:25.974Z", + "Mozilla/Firefox/Releases/1.5/Using_Firefox_1.5_caching": { + "modified": "2019-03-23T23:34:25.573Z", "contributors": [ - "Mingun" + "wbamberg", + "nakhodkiin", + "torbasow" ] }, - "Web/JavaScript/Reference/Global_Objects/URIError/prototype": { - "modified": "2019-03-23T23:08:26.327Z", + "Web/API/BaseAudioContext/createPanner": { + "modified": "2019-03-23T22:07:18.379Z", "contributors": [ - "Mingun" + "customizer" ] }, - "Web/JavaScript/Reference/Global_Objects/Uint16Array": { - "modified": "2020-10-15T21:59:37.871Z", + "Web/API/BaseAudioContext/currentTime": { + "modified": "2019-03-23T23:09:25.759Z", "contributors": [ - "pk.prog" + "fscholz", + "Galamoon" ] }, - "Web/JavaScript/Reference/Global_Objects/Uint32Array": { - "modified": "2020-10-15T21:59:38.707Z", + "Web/API/BaseAudioContext/decodeAudioData": { + "modified": "2019-03-23T22:31:37.197Z", "contributors": [ - "pk.prog" + "fleknvrsk" ] }, - "Web/JavaScript/Reference/Global_Objects/Uint8Array": { - "modified": "2020-10-15T21:59:38.914Z", + "Web/API/Canvas_API/Tutorial/Using_images": { + "modified": "2019-03-18T20:59:25.160Z", "contributors": [ - "MuradAz", - "pk.prog" + "Costigans", + "aderin", + "Theana27", + "Feuway", + "4esnog", + "MaxManchak", + "Taova", + "MuradAz" ] }, - "Web/JavaScript/Reference/Global_Objects/Uint8ClampedArray": { - "modified": "2019-03-18T21:10:47.382Z", + "Web/API/Canvas_API/Tutorial/Compositing": { + "modified": "2019-03-23T22:07:28.505Z", "contributors": [ - "InoY", - "tz4678" + "shortship", + "Alex1995markson", + "bad4iz" ] }, - "Web/JavaScript/Reference/Global_Objects/WeakMap": { - "modified": "2020-10-15T21:33:46.571Z", + "Web/API/Canvas_API/Tutorial/Basic_animations": { + "modified": "2019-03-18T20:39:12.629Z", "contributors": [ - "oleksandrstarov", - "altpoint", - "lexxl", - "YozhEzhi", - "kan.a", - "icw82", - "zamuka", - "RumyantsevMichael", - "casfcitizen", - "restrry", - "shvaikalesh", - "hellboy81" + "korobkov", + "scanick", + "fenfil", + "komuroe", + "Isk1n", + "evgeniy83", + "Vovanostm", + "SphinxKnight", + "fscholz", + "RokkerRuslan" ] }, - "Web/JavaScript/Reference/Global_Objects/WeakMap/clear": { - "modified": "2019-03-23T22:45:00.856Z", + "Web/API/Canvas_API/Tutorial/Applying_styles_and_colors": { + "modified": "2020-06-21T00:28:29.747Z", "contributors": [ - "teoli", - "WispProxy", - "casfcitizen" + "hisbvdis", + "coolwebdev", + "RomatoPotato", + "levi2ki", + "warsan", + "artrudov", + "mormiron", + "jynweythek", + "fil7", + "Theana27", + "Sebastianz", + "SphinxKnight", + "fscholz", + "Neir" ] }, - "Web/JavaScript/Reference/Global_Objects/WeakMap/delete": { - "modified": "2019-03-23T22:44:55.757Z", + "Web/API/Canvas_API/Tutorial/Drawing_text": { + "modified": "2020-11-03T08:47:25.074Z", "contributors": [ - "SphinxKnight", - "casfcitizen" + "geschaft59rus", + "AVerutin", + "mish7046", + "lavavrik" ] }, - "Web/JavaScript/Reference/Global_Objects/WeakMap/get": { - "modified": "2019-03-23T22:44:52.022Z", + "Web/API/Canvas_API/Tutorial/Drawing_shapes": { + "modified": "2020-07-28T09:22:42.924Z", "contributors": [ - "SphinxKnight", - "casfcitizen" + "AVerutin", + "warsan", + "mi5ha6in", + "mkarkachov", + "artrudov", + "mikomister", + "dedotmoroz", + "GaidaiAndrii", + "DuckerMan", + "hraboviyvadim", + "jynweythek", + "dyachenco", + "fil7", + "nakhodkiin", + "gearmobile", + "teoli", + "fscholz", + "Mirsait", + "Neir" ] }, - "Web/JavaScript/Reference/Global_Objects/WeakMap/has": { - "modified": "2019-03-23T22:44:53.494Z", + "Web/API/CSS_Object_Model/Managing_screen_orientation": { + "modified": "2020-09-02T10:45:25.377Z", "contributors": [ - "SphinxKnight", - "casfcitizen" + "bogpok" ] }, - "Web/JavaScript/Reference/Global_Objects/WeakMap/prototype": { - "modified": "2020-10-15T22:08:59.129Z", + "Web/API/XMLDocument/async": { + "modified": "2019-04-24T21:17:23.958Z", "contributors": [ - "kan.a" + "borseno" ] }, - "Web/JavaScript/Reference/Global_Objects/WeakMap/set": { - "modified": "2019-03-23T22:44:54.866Z", + "Web/API/File_and_Directory_Entries_API/Introduction": { + "modified": "2019-03-23T22:06:14.603Z", "contributors": [ - "SphinxKnight", - "casfcitizen" + "egorshulga" ] }, - "Web/JavaScript/Reference/Global_Objects/WeakSet": { - "modified": "2020-10-15T21:46:04.634Z", + "Web/API/Geolocation_API": { + "modified": "2020-10-15T21:28:32.152Z", "contributors": [ - "YozhEzhi", - "stRavens", - "fscholz" + "art-gur", + "talgautb", + "IliaBrz", + "KazeZlat", + "MariaEvstropova", + "Anna_Leonteva", + "kevich", + "Aleksej", + "Almatbek", + "Zaw00" ] }, - "Web/JavaScript/Reference/Global_Objects/WeakSet/add": { - "modified": "2020-10-15T21:46:05.423Z", + "Web/API/Geolocation_API/Using_the_Geolocation_API": { + "modified": "2020-02-14T06:11:59.119Z", "contributors": [ - "YozhEzhi", - "stRavens" + "art-gur" ] }, - "Web/JavaScript/Reference/Global_Objects/WeakSet/delete": { - "modified": "2019-03-23T22:33:36.783Z", + "Web/API/HTMLAudioElement/Audio": { + "modified": "2020-10-15T22:31:15.516Z", "contributors": [ - "stRavens" + "justimchief" ] }, - "Web/JavaScript/Reference/Global_Objects/WeakSet/has": { - "modified": "2019-03-23T22:33:37.092Z", + "Web/API/HTMLOrForeignElement/dataset": { + "modified": "2020-10-15T21:56:06.529Z", "contributors": [ - "stRavens" + "YozhEzhi", + "masterbox06", + "BitChap", + "motan", + "iamvector", + "hunty", + "almostbergman", + "FlowerDeLuce" ] }, - "Web/JavaScript/Reference/Global_Objects/WeakSet/prototype": { - "modified": "2019-03-23T22:33:26.886Z", + "Web/API/HTMLOrForeignElement/nonce": { + "modified": "2020-10-15T22:22:30.878Z", "contributors": [ - "stRavens" + "ellizii" ] }, - "Web/JavaScript/Reference/Global_Objects/WebAssembly": { - "modified": "2019-03-23T22:09:24.539Z", + "Web/API/ElementCSSInlineStyle/style": { + "modified": "2020-10-15T21:35:49.277Z", "contributors": [ - "warsan", - "Fingasss", - "curdwithraisins" + "Fantomhaiv", + "elidare", + "maxpolski", + "nkoptsov", + "surrsoft" ] }, - "Web/JavaScript/Reference/Global_Objects/WebAssembly/Table": { - "modified": "2020-10-15T22:28:03.728Z", + "Web/API/HTMLOrForeignElement/tabIndex": { + "modified": "2019-03-18T21:11:41.012Z", "contributors": [ - "amuzalevskiy" + "DianaGalter", + "Tanya_Agisheva" ] }, - "Web/JavaScript/Reference/Global_Objects/WebAssembly/compile": { - "modified": "2020-10-15T22:05:22.747Z", + "Web/API/MediaTrackConstraints/echoCancellation": { + "modified": "2020-11-01T07:26:52.423Z", "contributors": [ - "warsan" + "Ibadichan" ] }, - "Web/JavaScript/Reference/Global_Objects/WebAssembly/compileStreaming": { - "modified": "2020-10-15T22:05:24.687Z", + "Web/API/Navigator/connection": { + "modified": "2019-03-23T22:54:21.417Z", "contributors": [ - "warsan" + "AlexAlex" ] }, - "Web/JavaScript/Reference/Global_Objects/decodeURI": { - "modified": "2020-10-15T21:36:41.028Z", + "Web/API/Node/replaceChild": { + "modified": "2019-03-23T23:14:17.260Z", "contributors": [ - "boxa6", - "KTatyana", - "dimon.durak" + "khalid32", + "Troynov" ] }, - "Web/JavaScript/Reference/Global_Objects/decodeURIComponent": { - "modified": "2020-10-15T21:32:41.332Z", + "Web/API/HTMLElement/innerText": { + "modified": "2020-10-15T21:49:13.148Z", "contributors": [ - "boxa6", - "KTatyana", - "hellboy81" + "YozhEzhi", + "ivandoroshenko", + "Aleksander3007" ] }, - "Web/JavaScript/Reference/Global_Objects/encodeURI": { - "modified": "2020-10-15T21:32:41.734Z", + "Web/API/NonDocumentTypeChildNode/nextElementSibling": { + "modified": "2019-08-16T17:33:57.106Z", "contributors": [ - "CoruNethron", - "boxa6", - "gvammer", - "RuslanKurtjanyk", - "BychekRU", - "johniek" + "T-p-V", + "GoodLuck" ] }, - "Web/JavaScript/Reference/Global_Objects/encodeURIComponent": { - "modified": "2020-03-12T19:42:09.083Z", + "Web/API/Crypto/getRandomValues": { + "modified": "2020-10-15T21:43:20.603Z", "contributors": [ - "ivanson", - "SlavaJan", - "alx-khramov", - "redveronika", - "BychekRU" + "ekirpichyov", + "pepeevich" ] }, - "Web/JavaScript/Reference/Global_Objects/escape": { - "modified": "2020-03-12T19:42:22.847Z", + "orphaned/Web/API/Web_Crypto_API/Checking_authenticity_with_password": { + "modified": "2019-04-10T04:25:54.752Z", "contributors": [ - "L-st" + "qkudev" ] }, - "Web/JavaScript/Reference/Global_Objects/eval": { - "modified": "2020-10-15T21:36:50.892Z", + "Web/API/WebGL_API/Tutorial/Creating_3D_objects_using_WebGL": { + "modified": "2019-03-23T22:29:53.189Z", "contributors": [ - "teleskop150750", - "rookhive", - "nochnoy", - "boxa6", - "Kassaila", - "Mumin0v", - "Stejok", - "lazy-code", - "Kesantielu", - "pankov", - "BychekRU", - "KTatyana", - "Bogdan92" + "BakayAnton", + "e-rikov", + "Vlcmdc" ] }, - "Web/JavaScript/Reference/Global_Objects/globalThis": { - "modified": "2020-10-15T22:22:38.335Z", + "Web/API/WebRTC_API/Protocols": { + "modified": "2019-03-23T22:17:21.029Z", "contributors": [ - "almaceleste", - "ekirpichyov" + "aleole" ] }, - "Web/JavaScript/Reference/Global_Objects/isFinite": { - "modified": "2020-10-15T21:34:22.861Z", + "Web/API/WebRTC_API/Connectivity": { + "modified": "2019-03-23T22:17:18.730Z", "contributors": [ - "boxa6", - "pk.prog", - "keepon99", - "RinatMullayanov" + "aleole" ] }, - "Web/JavaScript/Reference/Global_Objects/isNaN": { - "modified": "2020-10-15T21:18:00.962Z", + "Glossary/Base64": { + "modified": "2020-02-04T12:42:12.592Z", "contributors": [ - "boxa6", - "deadem", - "arogachev", - "DrTantal", - "toxahak", - "igor4949i", - "torbasow", - "SphinxKnight", - "fscholz", - "Troynov", - "teoli", - "Dionys", - "Sheppy" + "hifriend21", + "kormanowsky", + "k-chernyshov", + "9999472", + "KSH-audibene", + "kerosan" ] }, - "Web/JavaScript/Reference/Global_Objects/null": { - "modified": "2020-10-15T21:29:52.036Z", + "Web/API/WindowOrWorkerGlobalScope/btoa": { + "modified": "2019-09-17T16:11:11.862Z", "contributors": [ - "yar85", - "YozhEzhi", - "boxa6", - "SphinxKnight", - "Mingun" + "SerzN1", + "uleming" ] }, - "Web/JavaScript/Reference/Global_Objects/parseFloat": { - "modified": "2020-10-15T21:31:40.524Z", + "Web/API/WindowOrWorkerGlobalScope/setTimeout": { + "modified": "2020-11-18T12:03:29.649Z", "contributors": [ - "boxa6", - "iota77", - "zhvirblis", - "pk.prog", - "KTatyana", - "schoonc", - "PC-Contra" + "kosarev_va", + "YozhEzhi", + "AliaksandrZahorski", + "akaguny", + "marat-curious", + "neustroev.artyom", + "fscholz", + "ichent" ] }, - "Web/JavaScript/Reference/Global_Objects/parseInt": { - "modified": "2020-10-15T21:31:24.544Z", + "Web/API/Page_Visibility_API": { + "modified": "2020-10-15T22:34:15.870Z", "contributors": [ - "boxa6", - "pk.prog", - "Natalya_Surikova", - "KTatyana", - "Acknowhow", - "oshilan", - "raspberry59" + "vstorm" ] }, - "Web/JavaScript/Reference/Global_Objects/undefined": { - "modified": "2020-10-15T21:29:55.851Z", + "Web/API/Notation": { + "modified": "2020-10-15T22:17:39.773Z", "contributors": [ - "almaceleste", - "boxa6", - "YozhEzhi", - "sasd97", - "SphinxKnight", - "Mingun" + "opereverzeva" ] }, - "Web/JavaScript/Reference/Global_Objects/unescape": { - "modified": "2020-03-12T19:40:42.425Z", + "Web/CSS/CSS_Box_Model/Introduction_to_the_CSS_box_model": { + "modified": "2019-03-23T23:02:32.915Z", "contributors": [ - "Mishman" + "akovbovich", + "Aleksej", + "codedokode" ] }, - "Web/JavaScript/Reference/Global_Objects/uneval": { - "modified": "2020-10-15T21:32:06.154Z", + "Learn/CSS/Howto/CSS_FAQ": { + "modified": "2020-07-16T22:25:45.996Z", "contributors": [ - "boxa6", - "teoli", - "maxbarbul", - "fscholz", - "Correcter" + "quinn" ] }, - "Web/JavaScript/Reference/Iteration_protocols": { - "modified": "2020-03-12T19:40:23.617Z", + "Web/CSS/CSS_Animations/Using_CSS_animations": { + "modified": "2019-09-08T05:26:38.746Z", "contributors": [ - "Ostanioni", - "AliaksandrZahorski", - "nikolai-shabalin", + "dmarkin", + "trman", + "KatyaRyazantseva", + "Inqanter", + "pseudoliza", + "ShadF0x", + "verbaux", "SphinxKnight", - "asaskevich", - "petanisimov", - "fscholz", - "hindmost" + "mrkorsar", + "teoli", + "ukarim" ] }, - "Web/JavaScript/Reference/Lexical_grammar": { - "modified": "2020-10-09T04:21:50.644Z", + "Web/CSS/CSS_Background_and_Borders/Border-radius_generator": { + "modified": "2019-03-23T22:40:49.075Z", "contributors": [ - "demid.kopan", - "salaiyuliya", - "almaceleste", - "uxenus", - "Vukto", - "maxno62", - "Pandemoniumus", - "AlexeyVasilievE", - "glum-psyche", - "ValdemarTerte", - "kdex", - "pk.prog", - "Frenk1", - "MichaelBag", - "gremlinLee" + "vito_falcone" ] }, - "Web/JavaScript/Reference/Operators": { - "modified": "2020-03-12T19:38:03.910Z", + "Web/CSS/CSS_Basic_User_Interface/Using_URL_values_for_the_cursor_property": { + "modified": "2019-03-23T22:05:55.809Z", "contributors": [ - "the-toxic", - "pk.prog", "SphinxKnight", - "teoli", - "Mingun", - "ethertank" + "ExE-Boss", + "Cheg" ] }, - "Web/JavaScript/Reference/Operators/Addition": { - "modified": "2020-10-15T22:31:44.228Z", + "Web/CSS/CSS_Background_and_Borders/Box-shadow_generator": { + "modified": "2019-03-18T20:43:50.074Z", "contributors": [ - "DarkExodusXX", - "Lifamen" + "BychekRU" ] }, - "Web/JavaScript/Reference/Operators/Addition_assignment": { - "modified": "2020-10-15T22:33:40.126Z", + "Web/CSS/CSS_Flexible_Box_Layout/Aligning_Items_in_a_Flex_Container": { + "modified": "2020-05-25T19:08:16.925Z", "contributors": [ - "DarkExodusXX" + "synedvorkham", + "Ruslan_Zlygostev", + "AndriySikora", + "idoru", + "lexeek", + "kalitadanila", + "m-o-semenov", + "ViktoriLisenok", + "dubtar" ] }, - "Web/JavaScript/Reference/Operators/Arithmetic_Operators": { - "modified": "2020-10-15T21:14:39.538Z", + "Web/CSS/CSS_Flexible_Box_Layout/Controlling_Ratios_of_Flex_Items_Along_the_Main_Ax": { + "modified": "2020-03-08T07:17:57.807Z", "contributors": [ - "Nichon4", - "fscholz", - "wbamberg", - "MedvedevWeb", - "kachid", - "shark_ate_my_shorts", - "ktsabolov", - "BychekRU", - "Anthelion", - "Aleksej", - "teoli", - "Dionys", - "karasiov" + "Radragon", + "billlater" ] }, - "Web/JavaScript/Reference/Operators/Assignment_Operators": { - "modified": "2020-03-12T19:39:48.712Z", + "Web/CSS/CSS_Flow_Layout/Block_and_Inline_Layout_in_Normal_Flow": { + "modified": "2020-11-03T12:58:17.297Z", "contributors": [ - "JasonRammoray", - "Piterden", - "Siteograf", - "AlexChuev", - "dtretyakov", - "SphinxKnight", - "BurkovBA" + "at940266" ] }, - "Web/JavaScript/Reference/Operators/Bitwise_AND": { - "modified": "2020-10-19T04:55:04.550Z", + "Web/CSS/CSS_Flow_Layout/Intro_to_formatting_contexts": { + "modified": "2020-03-08T14:31:08.319Z", "contributors": [ - "elkabelaya" + "Radragon" ] }, - "Web/JavaScript/Reference/Operators/Bitwise_Operators": { - "modified": "2020-03-12T19:37:00.110Z", + "Web/CSS/CSS_Grid_Layout/CSS_Grid_Logical_Values_and_Writing_Modes": { + "modified": "2019-03-18T21:35:04.965Z", "contributors": [ - "CoruNethron", - "kss555", - "joezavtra", - "d1soft", - "byshik", - "AlekKras", - "angyvolin", - "artem328", - "goodwin64", - "tselishev-semen", - "dtretyakov", - "fscholz", - "teoli", - "karasiov" + "slychai85" ] }, - "Web/JavaScript/Reference/Operators/Decrement": { - "modified": "2020-10-15T22:35:06.680Z", + "Web/CSS/CSS_Grid_Layout/Grid_Template_Areas": { + "modified": "2019-03-18T21:10:23.458Z", "contributors": [ - "dikovinki" + "maximTorba", + "denisvovchenko", + "slychai85", + "coshturnina" ] }, - "Web/JavaScript/Reference/Operators/Destructuring_assignment": { - "modified": "2019-03-18T20:41:31.882Z", + "Web/CSS/CSS_Grid_Layout/Line-based_Placement_with_CSS_Grid": { + "modified": "2020-09-29T19:08:10.559Z", "contributors": [ - "zziger", - "Beliarh", - "InoY", - "kdex", - "shapkarin", - "he11b0rn", - "wa-Nadoo", - "e-omo", - "y.ivashchenko", - "SphinxKnight", - "dtretyakov" + "Zulcom", + "denisvovchenko", + "coshturnina" ] }, - "Web/JavaScript/Reference/Operators/Nullish_coalescing_operator": { - "modified": "2020-11-06T20:31:05.880Z", + "Web/CSS/CSS_Selectors": { + "modified": "2019-09-26T17:15:05.505Z", "contributors": [ - "qwerty.wasd.dev", - "notacircle" + "RomanBush", + "vkorzhova", + "Gergalov", + "bezik", + "irenprkpv" ] }, - "Web/JavaScript/Reference/Operators/Object_initializer": { - "modified": "2020-03-12T19:46:20.455Z", + "Web/CSS/CSS_Selectors/Using_the_:target_pseudo-class_in_selectors": { + "modified": "2019-03-18T21:30:19.329Z", "contributors": [ - "EduardBedratyi", - "Nymph", - "severn101", - "curdwithraisins" + "Hoopers_Hooch" ] }, - "Web/JavaScript/Reference/Operators/Operator_Precedence": { - "modified": "2020-06-21T17:36:11.552Z", + "Web/CSS/Media_Queries/Testing_media_queries": { + "modified": "2020-10-15T22:17:28.449Z", "contributors": [ - "Yialo", - "nakhodkiin", - "synth", - "Ihor92", - "BychekRU", - "Aleksej", - "fscholz", - "mcmimik", - "teoli", - "TotalAMD", - "hazestalker" + "opereverzeva" ] }, - "Web/JavaScript/Reference/Operators/Optional_chaining": { - "modified": "2020-10-15T22:22:53.487Z", + "Web/CSS/actual_value": { + "modified": "2019-03-23T22:31:07.849Z", "contributors": [ - "InoY", - "rookhive", - "Kassaila", - "Dimon24021993" + "warsan", + "BychekRU" ] }, - "Web/JavaScript/Reference/Operators/Property_Accessors": { - "modified": "2020-11-28T14:23:33.816Z", + "Web/CSS/Replaced_element": { + "modified": "2019-03-23T22:31:00.260Z", "contributors": [ - "ialexi-bl", - "injashkin", - "sbadulin", - "karatheodory", + "SelenIT", + "dima74", "BychekRU" ] }, - "Web/JavaScript/Reference/Operators/Spread_syntax": { - "modified": "2020-10-15T22:09:59.030Z", + "Web/CSS/Pseudo-classes": { + "modified": "2019-03-23T22:51:08.664Z", "contributors": [ - "Next-Ra", - "khikmat1970", - "s0da", - "AliaksandrZahorski", - "svezr", - "Ostanioni", - "Acrom7", - "R-Oscar", - "DenisIgnatchenko", - "dev1am", - "ue4prog" + "IgorPuchkov2003", + "dima74", + "BychekRU", + "olko28" + ] + }, + "Web/CSS/length": { + "modified": "2020-10-15T21:48:09.200Z", + "contributors": [ + "HImichun", + "sashakrauzer", + "VICIOne", + "favetisov", + "ialexi-bl", + "Fgeniy", + "Zamkevich", + "VladdOs" + ] + }, + "Web/CSS/Syntax": { + "modified": "2019-07-26T04:52:30.660Z", + "contributors": [ + "munaticu", + "teoli", + "Norville" ] }, - "Web/JavaScript/Reference/Operators/async_function": { - "modified": "2020-03-12T19:46:03.207Z", + "Web/CSS/Layout_mode": { + "modified": "2019-03-23T23:09:42.012Z", "contributors": [ - "utlov", - "myscode", - "nakhodkiin", - "ahtohbi4" + "idoru", + "BychekRU", + "ldone" ] }, - "Web/JavaScript/Reference/Operators/await": { - "modified": "2020-03-12T19:46:19.108Z", + "Web/CSS/Comments": { + "modified": "2019-03-23T22:32:40.563Z", "contributors": [ - "Ignat", - "nakhodkiin", - "Vladimir-Vinogradov", - "matvey-b", - "XaveScor", - "redishko" + "BychekRU", + "Evgeny166" ] }, - "Web/JavaScript/Reference/Operators/class": { - "modified": "2020-10-07T05:22:57.052Z", + "Web/CSS/specified_value": { + "modified": "2019-03-23T22:30:59.718Z", "contributors": [ - "nikolasmelui", - "utlov", - "aliaksandr-s" + "BychekRU" ] }, - "Web/JavaScript/Reference/Operators/delete": { - "modified": "2020-03-12T19:38:01.140Z", + "Web/API/Element/blur_event": { + "modified": "2019-03-23T22:19:52.585Z", "contributors": [ - "tarasovAG", - "nurbek-ab", "fscholz", - "teoli", - "nurbek.ab" + "Pirate505", + "Asyst" ] }, - "Web/JavaScript/Reference/Operators/function": { - "modified": "2020-10-15T21:29:24.840Z", + "Web/API/Window/DOMContentLoaded_event": { + "modified": "2019-04-30T14:28:01.901Z", "contributors": [ - "utlov", - "aleksandrpnshkn", - "severyanov", - "KTatyana", - "SphinxKnight", - "teoli", - "AlexyAV" + "wbamberg", + "cashm0ney", + "fscholz", + "vittorio-tortugo", + "e-h-h" ] }, - "Web/JavaScript/Reference/Operators/function*": { - "modified": "2020-03-12T19:43:34.797Z", + "Web/API/Element/error_event": { + "modified": "2019-03-18T20:55:03.206Z", "contributors": [ - "utlov", - "KTatyana", - "nurbek-ab" + "Corba", + "iGureEV" ] }, - "Web/JavaScript/Reference/Operators/in": { - "modified": "2020-10-15T21:34:23.027Z", + "Web/API/Element/focusin_event": { + "modified": "2019-03-23T22:30:36.967Z", "contributors": [ - "ekirpichyov", - "utlov", - "Nvisual", - "vitaliylag", - "Natalya_Surikova", - "Frenk1" + "fscholz", + "f0rmat1k" ] }, - "Web/JavaScript/Reference/Operators/instanceof": { - "modified": "2020-10-15T21:42:40.346Z", + "Web/API/Element/focusout_event": { + "modified": "2019-03-18T21:19:40.612Z", "contributors": [ - "iGanza429", - "dima74", - "vitaliylag", - "lenkasoft", - "c01nd01r", - "spmpl" + "merelj" ] }, - "Web/JavaScript/Reference/Operators/new": { - "modified": "2020-03-12T19:42:17.777Z", + "Web/API/Window/load_event": { + "modified": "2019-03-23T22:22:49.108Z", "contributors": [ - "mikhail.makarov", - "msherstobitow", - "FlashbangSW", - "pk.prog", - "Guria", - "svarnoi420", - "mazhuravlev" + "fscholz", + "e-h-h" ] }, - "Web/JavaScript/Reference/Operators/new.target": { - "modified": "2020-03-12T19:42:44.140Z", + "Web/API/XMLHttpRequest/loadstart_event": { + "modified": "2019-03-23T22:29:55.674Z", "contributors": [ - "bakugod", - "vitaliylag", - "Isk1n", - "uleming" + "fscholz", + "forestbird" ] }, - "Web/JavaScript/Reference/Operators/super": { - "modified": "2020-11-02T05:32:18.854Z", + "Web/API/Document/readystatechange_event": { + "modified": "2019-03-18T21:42:00.103Z", "contributors": [ - "ITheCorgi", - "almaceleste", - "boxa6", - "chuckis", - "YozhEzhi", - "Eugene", - "Renay", - "Axepuff", - "rinbik", - "quassnoi", - "sgrogov", - "adamgrey28", - "loki2d", - "spmpl", - "uleming" + "SlavaJan" ] }, - "Web/JavaScript/Reference/Operators/this": { - "modified": "2020-10-15T21:34:17.291Z", + "Web/API/HTMLElement/transitionend_event": { + "modified": "2019-03-23T23:13:05.887Z", "contributors": [ - "almaceleste", - "dmarkin", - "HermesC", - "smlkA", - "JS_Johny", - "marinazareka", - "sbadulin", - "Stejok", - "aprostya", - "dChunikhin", - "DayFan", - "olegkarpovich", - "alexfromvl", - "Viktoria_Slesarchuk", - "eXukraine", - "AlexO", - "AliaksandrSith", - "AlexKhram", - "vovek", - "wertlex", - "Mary_Gorgol" + "fscholz", + "airspin", + "akhabibullina" ] }, - "Web/JavaScript/Reference/Operators/typeof": { - "modified": "2020-10-15T21:29:57.988Z", + "Web/API/Window/unhandledrejection_event": { + "modified": "2019-04-30T13:51:15.952Z", "contributors": [ - "Bonerdelli", - "dima74", - "Sergey.Vdovareize", - "Ohar", - "SphinxKnight", - "teoli", - "kvantor" + "wbamberg", + "colmer" ] }, - "Web/JavaScript/Reference/Operators/void": { - "modified": "2020-03-12T19:40:33.655Z", + "orphaned/Web/Guide/AJAX/С_чего_начать?": { + "modified": "2019-01-16T16:10:29.921Z", "contributors": [ - "artskar", - "hlomzik", - "AlexChuev" + "chrisdavidmills", + "Sheppy", + "Nikol" ] }, - "Web/JavaScript/Reference/Operators/yield": { - "modified": "2020-11-07T03:00:56.468Z", + "Web/Guide/AJAX/Getting_Started": { + "modified": "2019-03-24T00:01:49.926Z", "contributors": [ - "antonzahariev", - "ekirpichyov", - "YozhEzhi", - "dtretyakov" + "DanilaH", + "chrisdavidmills", + "Megapotz", + "Apparition", + "Square", + "Kwinto" ] }, - "Web/JavaScript/Reference/Operators/yield*": { - "modified": "2020-10-10T05:41:53.806Z", + "Web/SVG/Tutorial/SVG_and_CSS": { + "modified": "2019-10-07T10:29:32.536Z", "contributors": [ - "ialexi-bl", - "utlov", - "d4rkm3z" + "Matcenko", + "AndrewPinkerton", + "maximmonev", + "DadUndead" ] }, - "Web/JavaScript/Reference/Operators/Группировка": { - "modified": "2020-10-15T21:45:23.257Z", + "Web/CSS/CSS_Positioning/Understanding_z_index/Adding_z-index": { + "modified": "2020-04-16T01:16:28.675Z", "contributors": [ - "synth", - "BychekRU" + "pelyp47" ] }, - "Web/JavaScript/Reference/Operators/Конвейерный_оператор": { - "modified": "2020-10-15T22:07:33.663Z", + "Web/CSS/CSS_Positioning/Understanding_z_index": { + "modified": "2020-04-16T00:54:23.175Z", "contributors": [ - "nakhodkiin", - "ALegostaeva" + "pelyp47", + "Derept", + "zdravnick", + "DartWelder", + "elenatafeenko", + "Jeremie" ] }, - "Web/JavaScript/Reference/Operators/Логические_операторы": { - "modified": "2020-03-12T19:42:07.763Z", + "Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_without_z-index": { + "modified": "2020-04-16T01:00:44.047Z", "contributors": [ - "Coo1Cmd", - "BychekRU", - "Frenk1", - "alexbaumgertner", - "SergeyShpak" + "pelyp47", + "batareechka", + "SphinxKnight" ] }, - "Web/JavaScript/Reference/Operators/Оператор_Запятая": { - "modified": "2020-10-15T21:21:15.661Z", + "Web/CSS/CSS_Columns/Using_multi-column_layouts": { + "modified": "2019-07-22T11:08:23.191Z", "contributors": [ - "synth", - "echelonka", - "OlegTar", - "cotolany", - "br3t", - "alnimu", - "Frenk1", + "a-bodrova", + "sandmanisdancing", "fscholz", - "Ohar", - "teoli", - "nurbek.ab" + "ldone" + ] + }, + "Web/CSS/Visual_formatting_model": { + "modified": "2019-09-20T10:50:10.502Z", + "contributors": [ + "RomanBush", + "SphinxKnight", + "FlightBlaze", + "Chugou9", + "ZapevalovAnton", + "fmva", + "levi2ki", + "kapvik", + "hhharm", + "ViT09" + ] + }, + "Web/Guide/Events/Creating_and_triggering_events": { + "modified": "2020-10-15T21:31:20.093Z", + "contributors": [ + "YozhEzhi", + "leann-fraoigh", + "Solant", + "bagau", + "pk.prog", + "lazyexpert", + "YuryT" ] }, - "Web/JavaScript/Reference/Operators/Операторы_сравнения": { - "modified": "2020-09-29T02:39:38.965Z", + "Web/API/HTML_Drag_and_Drop_API/Drag_operations": { + "modified": "2020-02-05T06:07:31.464Z", "contributors": [ - "nikolasmelui", - "X7Becka", - "nakhodkiin", - "BychekRU", - "nbaksalyar", - "CatWhoCode" + "opereverzeva" ] }, - "Web/JavaScript/Reference/Operators/Присваивание": { - "modified": "2020-10-15T22:33:39.549Z", + "Web/API/HTML_Drag_and_Drop_API": { + "modified": "2019-06-20T03:46:49.198Z", "contributors": [ - "kucherenkoag", - "DarkExodusXX" + "kkxley", + "Akh-rman", + "artalar", + "miramax-88", + "Morjodrom", + "fess16", + "MStark" ] }, - "Web/JavaScript/Reference/Operators/Условный_оператор": { - "modified": "2020-09-05T16:58:34.995Z", + "Web/Guide/HTML/Using_HTML_sections_and_outlines": { + "modified": "2020-10-09T08:16:53.318Z", "contributors": [ - "ikzsl", - "NeoFSociety", - "lozzeal", - "DonRai", - "onatalie", - "SlavaJan", - "dmitrydanilich", - "KTatyana" + "matiasrustagte", + "arka_triymfalnaya", + "outdever", + "Wingear", + "evgor80", + "lerniri" ] }, - "Web/JavaScript/Reference/Statements": { - "modified": "2020-03-12T19:38:08.960Z", + "Learn/HTML/Howto/Author_fast-loading_HTML_pages": { + "modified": "2020-07-16T22:22:33.594Z", "contributors": [ + "SoMuchEffort", + "optimistic" + ] + }, + "Learn/HTML/Howto/Use_data_attributes": { + "modified": "2020-07-16T22:22:37.165Z", + "contributors": [ + "AliaksandrZahorski", + "dima74", + "bad4iz", + "ultrinnan", "SphinxKnight", - "teoli", - "Mingun", - "trevorh" + "lerniri", + "ArtiFisher", + "xoyk", + "BaNru" ] }, - "Web/JavaScript/Reference/Statements/Empty": { - "modified": "2020-04-12T07:22:12.597Z", + "orphaned/Learn/HTML/Forms/HTML5_updates": { + "modified": "2019-03-23T22:35:16.060Z", "contributors": [ - "arnoldovich", - "otj40", - "nakhodkiin", - "BychekRU" + "Morjodrom", + "AgRuN1", + "ruslan_g02" ] }, - "Web/JavaScript/Reference/Statements/async_function": { - "modified": "2020-10-15T21:52:51.275Z", + "Web/Guide/Graphics": { + "modified": "2019-03-23T23:24:59.485Z", "contributors": [ - "AppleAlex", - "nikolai-shabalin", - "parusev", - "sazhnevdunice", - "mmameko", - "epodivilov", - "rsvato", - "glowlh", - "torbasow", - "nakhodkiin", - "BondarenkoAlex", - "tcheburator", - "curdwithraisins" + "theykillimmortal", + "McBurns", + "DinarGataullin", + "emil4", + "Bonerdelli", + "uleming", + "nedimaon" ] }, - "Web/JavaScript/Reference/Statements/break": { - "modified": "2020-03-12T19:39:49.381Z", + "Web/Guide/Performance": { + "modified": "2020-08-20T11:16:04.965Z", "contributors": [ - "ConstantineZz", - "SphinxKnight", - "4eb0da" + "bogpok" ] }, - "Web/JavaScript/Reference/Statements/class": { - "modified": "2020-10-07T05:30:01.345Z", + "Web/HTML/Attributes/crossorigin": { + "modified": "2019-03-23T22:26:17.707Z", "contributors": [ - "nikolasmelui", - "torbasow", - "utlov", - "curdwithraisins" + "HA3IK", + "metserp" ] }, - "Web/JavaScript/Reference/Statements/const": { - "modified": "2020-10-15T21:30:33.647Z", + "orphaned/Web/HTML/Element/element": { + "modified": "2019-03-23T22:16:19.667Z", "contributors": [ - "DASenkiv", - "pepelsbey", - "pk.prog", - "torbasow", - "WispProxy", - "Grumvol", - "xfg", - "gibson", - "crvst", - "SphinxKnight", - "KiraAndMaxim" + "SphinxKnight" ] }, - "Web/JavaScript/Reference/Statements/continue": { - "modified": "2020-04-11T02:20:58.132Z", + "Web/API/HTMLMediaElement/seeking_event": { + "modified": "2019-03-23T22:00:06.598Z", "contributors": [ - "pefbrute", - "alextretyak", - "SphinxKnight", - "4eb0da" + "estelle", + "fscholz", + "alexs_havelev" ] }, - "Web/JavaScript/Reference/Statements/debugger": { - "modified": "2020-03-12T19:45:32.750Z", + "Web/HTML/Element/button": { + "modified": "2020-08-27T10:59:01.002Z", "contributors": [ - "Svetzayats", - "david-baghdasaryan", - "paratagas" + "DarkExodusXX", + "Anton1922", + "fanich37", + "VitalyKrenel", + "Quaiby" ] }, - "Web/JavaScript/Reference/Statements/default": { - "modified": "2020-10-15T21:54:01.294Z", + "Web/HTML/Element/link": { + "modified": "2020-11-25T22:00:52.653Z", "contributors": [ - "ekirpichyov", - "AntonPtitsyn" + "RoPy73", + "GitForDocs", + "sasha3nique", + "dt_", + "opereverzeva" ] }, - "Web/JavaScript/Reference/Statements/do...while": { - "modified": "2020-10-15T21:50:00.301Z", + "orphaned/Web/HTML/Global_attributes/dropzone": { + "modified": "2020-10-15T22:18:29.870Z", "contributors": [ - "Kilzar", - "ekirpichyov", - "102" + "chrisdavidmills", + "Akh-rman" ] }, - "Web/JavaScript/Reference/Statements/export": { - "modified": "2020-10-15T21:44:56.789Z", + "Glossary/speculative_parsing": { + "modified": "2019-03-23T23:28:56.065Z", "contributors": [ - "almaceleste", - "SphinxKnight", - "ravbetsky", - "Roman-Kosov", - "marat-curious", - "maksugr", - "HaffASE", - "Checkmatez", - "maxmind", - "M1rotvorez", - "sunsetninja", - "frodomogoni", - "jeneg" + "s1lver", + "pk.prog", + "SnejUgal", + "teoli", + "Gucci_08_rus" ] }, - "Web/JavaScript/Reference/Statements/for": { - "modified": "2020-03-12T19:40:21.266Z", + "Web/HTML/Using_the_application_cache": { + "modified": "2019-04-09T18:24:32.273Z", "contributors": [ - "farvater2", - "romankrru", - "BychekRU", - "ascheyloven" + "jwhitlock", + "teoli", + "pashak" ] }, - "Web/JavaScript/Reference/Statements/for-await...of": { - "modified": "2020-10-15T22:21:30.706Z", + "Web/HTML/Reference": { + "modified": "2019-09-09T07:21:34.310Z", "contributors": [ - "imciflam" + "SphinxKnight", + "JCodeg", + "wbamberg", + "Kiprusoff", + "kuki", + "alexfromvl", + "VsTB", + "astrobeglec", + "BychekRU", + "quinn", + "ldone", + "alexlead" ] }, - "Web/JavaScript/Reference/Statements/for...in": { - "modified": "2020-03-12T19:42:44.128Z", + "Web/HTML/Inline_elements": { + "modified": "2020-03-08T06:35:47.964Z", "contributors": [ - "camelos", - "Miracle93", - "olvin-hh", + "Radragon", "AliaksandrZahorski", - "Jarith", - "UriShlomov", - "a1ia5", + "Inqanter", + "superpuper32", + "Filofei", + "Chronosms" + ] + }, + "Web/HTML/Link_types": { + "modified": "2019-03-23T22:35:07.110Z", + "contributors": [ "BychekRU" ] }, - "Web/JavaScript/Reference/Statements/for...of": { - "modified": "2020-10-15T21:31:19.454Z", + "Web/HTTP/Basics_of_HTTP/Identifying_resources_on_the_Web": { + "modified": "2020-01-09T21:04:16.499Z", "contributors": [ - "iacade", - "alx-khramov", - "rookhive", - "AliaksandrZahorski", - "becha", - "SphinxKnight", - "iomtt94", - "babichss", - "ZeroUnderscoreOu", - "BychekRU", - "dtretyakov" + "rshmelev" ] }, - "Web/JavaScript/Reference/Statements/function": { - "modified": "2020-10-15T21:39:37.186Z", + "Web/HTTP/Authentication": { + "modified": "2020-04-27T12:53:55.193Z", "contributors": [ - "YozhEzhi", - "4rontender", - "KTatyana", - "forestbird", - "BychekRU" + "katina.tanya.net", + "Umbrous", + "mironovdm", + "RumyantsevMichael", + "Santiago26", + "deniskoronets" ] }, - "Web/JavaScript/Reference/Statements/function*": { - "modified": "2020-03-12T19:39:52.436Z", + "Web/HTTP/Headers/Accept-Charset": { + "modified": "2020-10-15T22:14:29.517Z", "contributors": [ - "SphinxKnight", - "Sajag", - "mrOrlando", - "MaksymI", - "kdex", - "deman", - "MalkavianMax", - "BychekRU", - "dtretyakov" + "Reddok", + "J4CKVVH173" ] }, - "Web/JavaScript/Reference/Statements/if...else": { - "modified": "2020-03-12T19:42:47.988Z", + "Web/HTTP/Headers/Accept-Language": { + "modified": "2020-10-15T22:00:00.029Z", "contributors": [ - "satansdeer", - "GraceAredel", - "alexbaumgertner", - "ultrinnan" + "taushan.marina", + "Reddok", + "limanweb", + "serj-by" ] }, - "Web/JavaScript/Reference/Statements/import": { - "modified": "2020-10-15T21:32:02.235Z", + "Web/HTTP/Headers/Accept-Patch": { + "modified": "2020-12-05T05:07:59.020Z", "contributors": [ - "Akmatworld", - "almaceleste", - "flancer64", - "Yialo", - "SphinxKnight", - "ZzDmitry", - "Reinerok", - "InoY", - "pibodi", - "torbasow", - "Ingverd", - "papadima", - "bad4iz", - "nikolaifedorov", - "maxmind", - "standy", - "vvalgis", - "sutangu", - "kurzgame" + "sheremet" ] }, - "Web/JavaScript/Reference/Statements/import.meta": { - "modified": "2020-10-15T22:22:14.576Z", + "Web/HTTP/Headers/Accept-Ranges": { + "modified": "2020-12-14T05:59:29.332Z", "contributors": [ - "Luanre" + "AndrewHaluza", + "stonetrooper" ] }, - "Web/JavaScript/Reference/Statements/label": { - "modified": "2020-10-15T21:30:43.430Z", + "Web/HTTP/Headers/Accept": { + "modified": "2020-11-27T13:56:04.958Z", "contributors": [ - "ekirpichyov", - "SphinxKnight", - "4eb0da" + "robert491", + "vykulakov", + "Normal", + "AlexeyVasilievE" ] }, - "Web/JavaScript/Reference/Statements/let": { - "modified": "2020-03-12T19:38:07.887Z", + "Web/HTTP/Headers/Access-Control-Allow-Headers": { + "modified": "2020-10-15T22:06:02.499Z", "contributors": [ - "DASenkiv", - "skrikl", - "rinbik", - "avernikoz", - "Stejok", - "Kostandy", - "GaidaiAndrii", - "kdex", - "Yumeiro", - "WispProxy", - "titanium-iridium", - "andbas", - "iseeyou911", - "smichrissoft", - "stek29", - "Tvortsa", - "fscholz", - "teoli", - "nurbek.ab" + "Skinny-Hunter" ] }, - "Web/JavaScript/Reference/Statements/return": { - "modified": "2020-10-15T21:38:04.879Z", + "Web/HTTP/Headers/Access-Control-Allow-Methods": { + "modified": "2020-10-15T21:55:39.900Z", "contributors": [ - "ekirpichyov", - "KTatyana", - "Biosneakers", - "BychekRU", - "janemel", - "The-Raven" + "kosuhin" ] }, - "Web/JavaScript/Reference/Statements/switch": { - "modified": "2020-10-15T21:31:26.209Z", + "Web/HTTP/Headers/Access-Control-Allow-Origin": { + "modified": "2020-10-15T22:30:57.158Z", "contributors": [ - "almaceleste", - "alfill", - "Stejok", - "Natalya_Surikova", - "4eb0da" + "online", + "muxmux.ryzhinskiy" ] }, - "Web/JavaScript/Reference/Statements/throw": { - "modified": "2020-03-12T19:39:43.115Z", + "Web/HTTP/Headers/Access-Control-Max-Age": { + "modified": "2020-10-15T21:54:51.387Z", "contributors": [ - "albrin", - "Roovwhite", - "ZavodPodushek", - "Natalya_Surikova", - "sergey.bakaev", - "SphinxKnight", - "hellboy81" + "Shamshod", + "slayermass" ] }, - "Web/JavaScript/Reference/Statements/try...catch": { - "modified": "2020-05-24T09:50:11.525Z", + "Web/HTTP/Headers/Authorization": { + "modified": "2020-11-27T14:09:58.983Z", "contributors": [ - "ialexi-bl", - "smitt14ua", - "DeekHalden", - "YaroslavSelevanov", - "illya-s", - "x1unix", - "DavidWebb", - "nikitaermishin", - "NikitaCoder" + "robert491", + "NikitaTkachev", + "3lvcz", + "EgorChernik", + "justredpaul" ] }, - "Web/JavaScript/Reference/Statements/var": { - "modified": "2020-10-15T21:40:16.057Z", + "Web/HTTP/Headers/Cache-Control": { + "modified": "2020-10-15T21:59:00.821Z", "contributors": [ - "ekirpichyov", - "letulip", - "AlexKhram", - "shalimski", - "Saviloff" + "eeiaao", + "akimy", + "lykosheff", + "Sergey.Terekhin" ] }, - "Web/JavaScript/Reference/Statements/while": { - "modified": "2020-03-12T19:44:53.115Z", + "Web/HTTP/Headers/Connection": { + "modified": "2020-11-27T17:37:13.461Z", "contributors": [ - "KTatyana" + "robert491", + "Lariniya", + "Talkerbox", + "stonetrooper", + "Kirill82" ] }, - "Web/JavaScript/Reference/Statements/with": { - "modified": "2020-03-12T19:46:20.775Z", + "Web/HTTP/Headers/Content-Disposition": { + "modified": "2020-10-15T21:58:08.326Z", "contributors": [ - "asv7780", - "superpuper32", - "Waleron96", - "animhotep" + "Blinky", + "pk.prog" ] }, - "Web/JavaScript/Reference/Statements/Блок": { - "modified": "2020-03-14T08:00:39.543Z", + "Web/HTTP/Headers/Content-Encoding": { + "modified": "2020-10-15T22:30:01.262Z", "contributors": [ - "rookhive", - "Aliq" + "isetpro" ] }, - "Web/JavaScript/Reference/Strict_mode": { - "modified": "2020-03-12T19:37:59.459Z", + "Web/HTTP/Headers/Content-Language": { + "modified": "2020-10-15T22:14:19.206Z", "contributors": [ - "almaceleste", - "Yialo", - "alexbs", - "coxdn", - "randomnf", - "ris58h", - "spixe37", - "Sheppy", - "karmagood", - "alexdarc", - "egor-sorokin", - "hatroman", - "Megabyteceer", - "dimitryony", - "WispProxy", - "Natalya_Surikova", - "compsphere", - "Grumvol", - "torbasow", - "fscholz", - "zlumyo", - "akudiyar", - "fvtsfedu", - "r00ger", - "egml", - "AntonBezrukov", - "uleming" + "Nasridean", + "limanweb" ] }, - "Web/JavaScript/Reference/Strict_mode/Transitioning_to_strict_mode": { - "modified": "2020-03-12T19:42:24.126Z", + "Web/HTTP/Headers/Content-Length": { + "modified": "2020-11-27T16:51:36.713Z", "contributors": [ - "almaceleste", - "coxdn", - "nakhodkiin", - "akmil", - "tselishev-semen" + "robert491", + "einperegrin", + "FireEagle25" ] }, - "Web/JavaScript/Reference/Trailing_commas": { - "modified": "2020-10-15T22:22:53.977Z", + "Web/HTTP/Headers/Content-Type": { + "modified": "2020-10-15T21:56:21.381Z", "contributors": [ - "leshkin", - "ekirpichyov" + "kryksyh", + "WhiteApfel", + "nemish", + "NAKAMODI" ] }, - "Web/JavaScript/Reference/template_strings": { - "modified": "2020-10-15T21:31:19.424Z", + "Web/HTTP/Headers/Date": { + "modified": "2020-10-15T21:57:57.330Z", "contributors": [ - "DASenkiv", - "sahmildzhakeev", - "gendalf7771", - "vaallery", - "SphinxKnight", - "Barss07", - "AlexanderMikhnevich", - "cawa-93", - "dtretyakov" + "Darlanar", + "serieznyi" ] }, - "Web/JavaScript/Reference/Об": { - "modified": "2020-03-12T19:43:40.535Z", + "Web/HTTP/Headers/DNT": { + "modified": "2020-10-15T22:15:53.319Z", "contributors": [ - "Sergey1" + "Alex90" ] }, - "Web/JavaScript/Typed_arrays": { - "modified": "2020-03-12T19:45:54.627Z", + "Web/HTTP/Headers/ETag": { + "modified": "2020-10-15T22:02:38.948Z", "contributors": [ - "shevchenko", - "Imperat", - "Bargamut", - "redishko", - "WispProxy", - "Anomeon", - "some_vlad", - "Megabyteceer" + "dimatretyak", + "vetraz", + "curdwithraisins", + "Creepypoke" ] }, - "Web/JavaScript/О_JavaScript": { - "modified": "2020-03-12T19:40:51.750Z", + "Web/HTTP/Headers/Expect": { + "modified": "2019-03-23T22:11:58.063Z", "contributors": [ - "BychekRU", - "IgorGilyazov" + "AlexeyVasilievE" ] }, - "Web/Manifest": { - "modified": "2020-10-15T21:52:44.707Z", + "Web/HTTP/Headers/Expires": { + "modified": "2020-10-15T21:52:39.059Z", "contributors": [ - "almaceleste", - "chrisdavidmills", - "bershanskiy", - "ZolotoArtem", - "Encamy", - "SergeyMirvoda", - "Eugeno", - "Katarzina", - "Kidsman", - "suncitygirl", - "curdwithraisins" + "tjbulick", + "mrmlnc", + "MihLeonid", + "kobylin" ] }, - "Web/Manifest/background_color": { - "modified": "2020-10-15T22:28:08.267Z", + "Web/HTTP/Headers/Host": { + "modified": "2020-10-15T22:14:52.160Z", "contributors": [ - "almaceleste", - "chrisdavidmills" + "vugluskr", + "vadjradanta" ] }, - "Web/Manifest/categories": { - "modified": "2020-10-15T22:28:07.809Z", + "Web/HTTP/Headers/If-Match": { + "modified": "2020-10-15T21:54:39.304Z", "contributors": [ - "almaceleste", - "chrisdavidmills" + "AlexeyVasilievE" ] }, - "Web/Manifest/description": { - "modified": "2020-10-15T22:28:07.733Z", + "Web/HTTP/Headers/If-Modified-Since": { + "modified": "2020-10-15T21:54:34.736Z", "contributors": [ - "almaceleste", - "chrisdavidmills" + "chrisdavidmills", + "vykulakov", + "jellymary", + "AlexeyVasilievE" ] }, - "Web/Manifest/dir": { - "modified": "2020-10-15T22:28:08.586Z", + "Web/HTTP/Headers/If-Unmodified-Since": { + "modified": "2020-10-15T21:54:34.091Z", "contributors": [ - "almaceleste", - "chrisdavidmills" + "Rin15", + "jellymary", + "AlexeyVasilievE" ] }, - "Web/Manifest/display": { - "modified": "2020-10-15T22:28:07.850Z", + "Web/HTTP/Headers": { + "modified": "2020-10-01T10:57:48.980Z", "contributors": [ - "almaceleste", - "chrisdavidmills" + "bakhrom.akbarov", + "severyanov", + "DariiaBormot", + "andrewtk", + "st6gb", + "stonetrooper", + "loman", + "ReinarKein" ] }, - "Web/Manifest/iarc_rating_id": { - "modified": "2020-10-15T22:28:08.596Z", + "Web/HTTP/Headers/Last-Modified": { + "modified": "2020-10-15T22:15:38.253Z", "contributors": [ - "almaceleste", - "chrisdavidmills" + "ilyachase" ] }, - "Web/Manifest/icons": { - "modified": "2020-10-15T22:28:09.358Z", + "Web/HTTP/Headers/Origin": { + "modified": "2020-10-15T22:01:53.616Z", "contributors": [ - "almaceleste", - "chrisdavidmills" + "crabovwik" ] }, - "Web/Manifest/lang": { - "modified": "2020-10-15T22:28:09.577Z", + "Web/HTTP/Headers/Pragma": { + "modified": "2020-10-15T22:23:06.217Z", "contributors": [ - "almaceleste", - "chrisdavidmills" + "OlegSo" ] }, - "Web/Manifest/name": { - "modified": "2020-10-15T22:28:09.359Z", + "Web/HTTP/Headers/Range": { + "modified": "2020-10-15T22:23:56.930Z", "contributors": [ - "almaceleste", - "chrisdavidmills" + "ismorozs" ] }, - "Web/Manifest/orientation": { - "modified": "2020-10-15T22:28:08.826Z", + "Web/HTTP/Headers/Referer": { + "modified": "2020-10-15T22:08:22.897Z", "contributors": [ - "almaceleste", - "chrisdavidmills" + "stonetrooper" ] }, - "Web/Manifest/prefer_related_applications": { - "modified": "2020-10-15T22:28:08.735Z", + "Web/HTTP/Headers/Retry-After": { + "modified": "2020-10-15T22:04:40.732Z", "contributors": [ - "almaceleste", - "chrisdavidmills" + "TaizoGem" ] }, - "Web/Manifest/related_applications": { - "modified": "2020-10-15T22:28:09.294Z", + "Web/HTTP/Headers/Set-Cookie": { + "modified": "2020-10-15T22:22:30.848Z", "contributors": [ - "almaceleste", - "chrisdavidmills" + "wadzari", + "Artemeey", + "ehpc", + "YogSotot" ] }, - "Web/Manifest/scope": { - "modified": "2020-10-15T22:28:09.050Z", + "Web/HTTP/Headers/Strict-Transport-Security": { + "modified": "2020-10-15T22:23:39.989Z", "contributors": [ - "almaceleste", - "chrisdavidmills" + "Bargamut", + "s1lver", + "curdwithraisins" ] }, - "Web/Manifest/screenshots": { - "modified": "2020-10-15T22:28:09.543Z", + "Web/HTTP/Headers/Vary": { + "modified": "2020-10-15T22:21:15.515Z", "contributors": [ - "almaceleste", - "chrisdavidmills" + "onmotion" ] }, - "Web/Manifest/serviceworker": { - "modified": "2020-10-15T22:28:10.302Z", + "Web/HTTP/Headers/X-Content-Type-Options": { + "modified": "2020-10-15T22:16:15.365Z", "contributors": [ - "almaceleste", - "chrisdavidmills" + "WhiteApfel" ] }, - "Web/Manifest/short_name": { - "modified": "2020-10-15T22:21:30.619Z", + "Web/HTTP/Headers/X-Forwarded-For": { + "modified": "2019-03-18T20:52:28.146Z", "contributors": [ - "almaceleste", - "chrisdavidmills", - "bershanskiy" + "krigar1184", + "iliatcymbal" ] }, - "Web/Manifest/start_url": { - "modified": "2020-10-15T22:28:10.438Z", + "Web/HTTP/Headers/X-XSS-Protection": { + "modified": "2020-10-15T22:01:31.139Z", "contributors": [ - "almaceleste", - "chrisdavidmills" + "n00b" ] }, - "Web/Manifest/theme_color": { - "modified": "2020-10-15T22:28:10.250Z", + "Web/HTTP/Cookies": { + "modified": "2019-07-16T04:58:27.981Z", "contributors": [ - "almaceleste", - "chrisdavidmills" + "mrkutin", + "saitonakamura", + "levi2ki", + "GraceAredel", + "isildurpk", + "abmokin", + "serieznyi", + "mariag" ] }, - "Web/MathML": { - "modified": "2019-10-06T11:07:41.869Z", + "Web/HTTP/Caching": { + "modified": "2020-06-23T16:53:43.781Z", "contributors": [ - "valtaranets", - "bsergey", - "fider", - "koska", - "joemix" + "Vyprichenko", + "DeltaSPb", + "oleg3280", + "arturparkhisenko", + "gummeah", + "mariag", + "koks" ] }, - "Web/MathML/Authoring": { - "modified": "2019-03-23T22:08:43.986Z", + "Web/JavaScript/Guide/Using_promises": { + "modified": "2020-03-12T19:47:08.646Z", "contributors": [ - "bsergey", - "kimesik" + "EgrorBs", + "FrancoisVongue", + "kkxley", + "indalive", + "VitalyTartynov", + "joisadler", + "Lunatic174", + "kefir266", + "yojeek", + "djigach", + "Airomad", + "winexy", + "Geloosa" ] }, - "Web/MathML/Element": { - "modified": "2019-03-23T23:02:16.227Z", + "Web/JavaScript/Guide/Introduction": { + "modified": "2020-03-12T19:40:55.089Z", "contributors": [ - "bsergey", - "splewako" + "xxphantom", + "device25", + "boxa6", + "rinbik", + "vladPovalii", + "IgorGilyazov" ] }, - "Web/MathML/Element/maction": { - "modified": "2020-10-15T22:14:19.571Z", + "orphaned/Web/JavaScript/Guide/Об_этом_руководстве": { + "modified": "2019-03-24T00:13:23.720Z", "contributors": [ - "bsergey" + "teoli", + "danielgn96" ] }, - "Web/MathML/Element/math": { - "modified": "2019-03-23T23:02:16.927Z", + "Web/JavaScript/Guide/Loops_and_iteration": { + "modified": "2020-03-12T19:42:44.557Z", "contributors": [ - "Sykoku" + "Aparin", + "Costigans", + "Zinger1988", + "miirinjej", + "bad4iz", + "pathliving", + "EduardKuzhir", + "DeekHalden", + "BychekRU", + "Dvakseno", + "TARTIGA" ] }, - "Web/MathML/Element/menclose": { - "modified": "2020-10-15T22:15:07.763Z", + "Web/JavaScript/Shells": { + "modified": "2020-05-02T11:17:13.805Z", "contributors": [ - "bsergey" + "RenJeka", + "helenasilkina", + "fscholz", + "Alex_Howlett", + "teoli", + "Millionnaire" ] }, - "Web/MathML/Element/merror": { - "modified": "2020-10-15T22:15:45.168Z", + "Web/JavaScript/Reference/Classes/Public_class_fields": { + "modified": "2020-11-17T02:37:33.218Z", "contributors": [ - "bsergey" + "kosarev_va", + "warsambin", + "shmel3" ] }, - "Web/MathML/Element/mfenced": { - "modified": "2020-10-15T22:16:56.742Z", + "Web/JavaScript/Reference/Classes/Private_class_fields": { + "modified": "2020-10-15T22:33:38.348Z", "contributors": [ - "bsergey" + "cliggen", + "DarkExodusXX" ] }, - "Web/MathML/Element/mglyph": { - "modified": "2020-10-30T16:27:27.508Z", + "Web/JavaScript/Reference/Errors/Var_hides_argument": { + "modified": "2020-03-12T19:48:55.415Z", "contributors": [ - "d0rj" + "MakarovDs777" ] }, - "Web/MathML/Element/mn": { - "modified": "2020-10-30T16:23:01.293Z", + "Web/JavaScript/Reference/Functions/Method_definitions": { + "modified": "2020-03-12T19:41:39.567Z", "contributors": [ - "d0rj" + "SphinxKnight", + "sergeymakoveev", + "BatenkovT" ] }, - "Web/MathML/Element/mover": { - "modified": "2020-12-10T17:16:05.910Z", + "orphaned/Web/JavaScript/Reference/Global_Objects/Array/prototype": { + "modified": "2020-10-15T21:23:46.631Z", "contributors": [ - "d0rj" + "boxa6", + "Mingun", + "teoli", + "BedyNN" ] }, - "Web/MathML/Element/mstyle": { - "modified": "2020-10-30T15:38:27.824Z", + "orphaned/Web/JavaScript/Reference/Global_Objects/AsyncFunction/prototype": { + "modified": "2020-10-15T22:21:51.709Z", "contributors": [ - "d0rj" + "AliaksandrZahorski" ] }, - "Web/MathML/Атрибут": { - "modified": "2020-12-10T16:59:05.690Z", + "orphaned/Web/JavaScript/Reference/Global_Objects/Math/Метод_Math.max()_": { + "modified": "2019-03-23T22:37:24.165Z", "contributors": [ - "d0rj" + "srvoland" ] }, - "Web/MathML/Примеры": { - "modified": "2020-11-23T14:28:54.743Z", + "Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/deleteProperty": { + "modified": "2020-10-15T22:14:52.334Z", "contributors": [ - "d0rj", - "Mr_nektom", - "Neir" + "smlkA" ] }, - "Web/MathML/Примеры/Deriving_the_Quadratic_Formula": { - "modified": "2019-03-18T21:18:54.194Z", + "Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/set": { + "modified": "2020-11-17T05:50:39.778Z", "contributors": [ - "bsergey" + "kosarev_va", + "Vilafox" ] }, - "Web/MathML/Примеры/MathML_Pythagorean_Theorem": { - "modified": "2020-12-10T17:21:25.592Z", + "Web/JavaScript/Reference/Global_Objects/String/trimStart": { + "modified": "2019-03-23T23:06:19.542Z", "contributors": [ - "d0rj", - "bsergey", - "humantom88" + "Mingun" ] }, - "Web/Media": { - "modified": "2020-02-16T05:07:41.773Z", + "Web/JavaScript/Reference/Global_Objects/String/trimEnd": { + "modified": "2019-03-23T23:06:21.966Z", "contributors": [ - "Sheppy" + "Mingun" ] }, - "Web/Media/Formats": { - "modified": "2020-02-16T05:07:42.083Z", + "Web/JavaScript/Reference/Operators/Grouping": { + "modified": "2020-10-15T21:45:23.257Z", "contributors": [ - "Sheppy" + "synth", + "BychekRU" ] }, - "Web/Media/Formats/WebRTC_кодеки": { - "modified": "2020-11-27T19:05:43.474Z", + "Web/JavaScript/Reference/Operators/Pipeline_operator": { + "modified": "2020-10-15T22:07:33.663Z", "contributors": [ - "nikolaifedorov", - "mechtool" + "nakhodkiin", + "ALegostaeva" ] }, - "Web/Media/Formats/codecs_parameter": { - "modified": "2020-03-16T06:34:09.362Z", + "Web/JavaScript/Reference/Operators/Comma_Operator": { + "modified": "2020-10-15T21:21:15.661Z", "contributors": [ - "mechtool" + "synth", + "echelonka", + "OlegTar", + "cotolany", + "br3t", + "alnimu", + "Frenk1", + "fscholz", + "Ohar", + "teoli", + "nurbek.ab" ] }, - "Web/Performance": { - "modified": "2020-04-21T12:10:15.645Z", + "Web/JavaScript/Reference/Operators/Assignment": { + "modified": "2020-10-15T22:33:39.549Z", "contributors": [ - "D.Lesnik", - "chrisdavidmills" + "kucherenkoag", + "DarkExodusXX" ] }, - "Web/Performance/CSS_JavaScript_animation_performance": { - "modified": "2020-04-02T11:47:32.867Z", + "Web/JavaScript/Reference/Operators/Conditional_Operator": { + "modified": "2020-09-05T16:58:34.995Z", "contributors": [ - "D.Lesnik" + "ikzsl", + "NeoFSociety", + "lozzeal", + "DonRai", + "onatalie", + "SlavaJan", + "dmitrydanilich", + "KTatyana" ] }, - "Web/Performance/Critical_rendering_path": { - "modified": "2020-03-30T19:35:11.484Z", + "Web/JavaScript/Reference/Statements/block": { + "modified": "2020-03-14T08:00:39.543Z", "contributors": [ - "D.Lesnik" + "rookhive", + "Aliq" ] }, - "Web/Performance/How_browsers_work": { - "modified": "2020-12-07T17:11:39.900Z", + "Web/JavaScript/Reference/Template_literals": { + "modified": "2020-10-15T21:31:19.424Z", "contributors": [ - "SamTLT", - "vlad-vorontsov", - "D.Lesnik" + "DASenkiv", + "sahmildzhakeev", + "gendalf7771", + "vaallery", + "SphinxKnight", + "Barss07", + "AlexanderMikhnevich", + "cawa-93", + "dtretyakov" ] }, - "Web/Performance/How_long_is_too_long": { - "modified": "2020-05-15T10:59:03.931Z", + "Web/JavaScript/Reference/About": { + "modified": "2020-03-12T19:43:40.535Z", "contributors": [ - "D.Lesnik" + "Sergey1" ] }, - "Web/Performance/Lazy_loading": { - "modified": "2020-05-23T10:12:03.445Z", + "Web/JavaScript/About_JavaScript": { + "modified": "2020-03-12T19:40:51.750Z", "contributors": [ - "mfranzke", - "D.Lesnik" + "BychekRU", + "IgorGilyazov" ] }, - "Web/Performance/Navigation_and_resource_timings": { - "modified": "2020-04-02T11:43:41.543Z", + "orphaned/Web/Manifest/serviceworker": { + "modified": "2020-10-15T22:28:10.302Z", "contributors": [ - "D.Lesnik" + "almaceleste", + "chrisdavidmills" ] }, - "Web/Performance/Optimizing_startup_performance": { - "modified": "2020-04-03T10:03:42.671Z", + "Web/MathML/Attribute": { + "modified": "2020-12-10T16:59:05.690Z", "contributors": [ - "D.Lesnik" + "d0rj" ] }, - "Web/Performance/Performance_budgets": { - "modified": "2020-04-06T12:41:24.362Z", + "Web/MathML/Examples/Deriving_the_Quadratic_Formula": { + "modified": "2019-03-18T21:18:54.194Z", "contributors": [ - "D.Lesnik" + "bsergey" ] }, - "Web/Performance/Rum-vs-Synthetic": { - "modified": "2020-04-17T19:39:30.304Z", + "Web/MathML/Examples": { + "modified": "2020-11-23T14:28:54.743Z", "contributors": [ - "D.Lesnik" + "d0rj", + "Mr_nektom", + "Neir" ] }, - "Web/Performance/Understanding_latency": { - "modified": "2020-05-28T07:49:08.019Z", + "Web/MathML/Examples/MathML_Pythagorean_Theorem": { + "modified": "2020-12-10T17:21:25.592Z", "contributors": [ - "D.Lesnik" + "d0rj", + "bsergey", + "humantom88" ] }, - "Web/Performance/dns-prefetch": { - "modified": "2020-12-13T17:12:00.849Z", + "Web/Media/Formats/WebRTC_codecs": { + "modified": "2020-11-27T19:05:43.474Z", "contributors": [ - "iozee", - "it4joy", - "D.Lesnik" + "nikolaifedorov", + "mechtool" ] }, - "Web/Performance/Основы": { + "Web/Performance/Fundamentals": { "modified": "2020-04-15T18:48:38.137Z", "contributors": [ "D.Lesnik" ] }, - "Web/Performance/Производительность_анимации": { + "Web/Performance/Animation_performance_and_frame_rate": { "modified": "2020-04-02T11:48:28.669Z", "contributors": [ "D.Lesnik" ] }, - "Web/Progressive_web_apps": { - "modified": "2019-04-20T03:25:44.859Z", + "orphaned/Web/Security/Information_Security_Basics": { + "modified": "2019-03-18T20:42:08.077Z", "contributors": [ - "webmaxru", - "chrisdavidmills", - "ruslan_g02" + "Frisle" ] }, - "Web/Progressive_web_apps/Installable_PWAs": { - "modified": "2020-05-31T18:38:14.629Z", + "orphaned/Web/SVG/Attribute/onload": { + "modified": "2019-01-16T20:23:16.915Z", "contributors": [ - "AlexandrKoliukh", - "chrisdavidmills", - "WhiteApfel" + "maxportnyagin" ] }, - "Web/Progressive_web_apps/Заметный": { - "modified": "2019-03-18T20:52:07.177Z", + "Web/SVG/Tutorial/Basic_Transformations": { + "modified": "2020-08-16T23:38:02.015Z", "contributors": [ - "chrisdavidmills", - "ruslan_g02" + "fqf", + "hisbvdis", + "theykillimmortal", + "andrewtk" ] }, - "Web/Reference": { - "modified": "2019-03-18T20:37:11.659Z", + "Web/SVG/Tutorial/Introduction": { + "modified": "2020-08-11T13:52:37.344Z", "contributors": [ - "mmbl", - "Shychara", - "vostvesh", - "AlexLog", - "uri-uri222", - "slaykovsky", - "Nuzland" + "wBureshGitHub", + "hisbvdis", + "tcheburator", + "alexbs", + "Alianta", + "Dizzy", + "tavira", + "mboris1", + "nakhodkiin", + "MaxManchak" ] }, - "Web/Reference/API": { - "modified": "2019-03-23T23:10:40.925Z", + "Web/SVG/Tutorial/Basic_Shapes": { + "modified": "2019-03-23T22:33:02.983Z", "contributors": [ - "olyaknyaz", - "filutkie", - "dimFora", - "BychekRU", - "varstt", - "uleming", - "AlexLog", - "eb-gh-cr", - "ARleKino", - "Tihoem", - "takto", - "bariys18" + "devfedorenko", + "komuroe", + "Dizzy", + "AlexanderLevenskikh", + "mboris1" ] }, - "Web/SVG": { - "modified": "2019-11-01T15:48:17.103Z", + "Web/SVG/Tutorial/Positions": { + "modified": "2019-03-23T22:33:09.544Z", "contributors": [ - "hisbvdis", - "AdelNorberg", - "Solj", - "Roman-Kosov", - "warsan", - "dima74", + "Dizzy", + "valery-paschenkov", + "AlexanderLevenskikh", + "mboris1" + ] + }, + "Web/SVG/Element/a": { + "modified": "2020-10-15T21:31:40.250Z", + "contributors": [ + "ekirpichyov", + "boxa6", + "bogdancdc", + "Sebastianz", "AlexeyFedotof", - "romanalesenkov", - "sputnik1986", - "Mingun", - "Dyvik" + "Eugene_Ishchenko" ] }, - "Web/SVG/Applying_SVG_effects_to_HTML_content": { - "modified": "2019-04-10T04:51:15.356Z", + "Web/SVG/Element/animate": { + "modified": "2020-10-15T21:40:35.396Z", "contributors": [ - "warsan" + "boxa6", + "wbamberg", + "Sebastianz", + "Eugene_Ishchenko" ] }, - "Web/SVG/Attribute": { - "modified": "2019-03-23T23:20:13.909Z", + "Web/SVG/Element/animateMotion": { + "modified": "2020-10-15T22:06:06.145Z", "contributors": [ - "Solj", - "Vasiliy.Poddubny", - "BychekRU", - "kscarfone" + "ekirpichyov", + "warsan" ] }, - "Web/SVG/Attribute/Core": { - "modified": "2020-10-15T22:34:58.576Z", + "Web/SVG/Element/circle": { + "modified": "2020-10-15T21:41:44.986Z", "contributors": [ - "osipov_s" + "LonelyDutchhound", + "boxa6", + "wbamberg", + "Sebastianz", + "AlexeyFedotof", + "littleleshy" ] }, - "Web/SVG/Attribute/additive": { - "modified": "2019-03-23T22:07:14.939Z", + "Web/SVG/Element/defs": { + "modified": "2020-10-15T22:02:01.863Z", "contributors": [ - "Solj", - "warsan", - "Vasiliy.Poddubny" + "boxa6", + "coshturnina" ] }, - "Web/SVG/Attribute/attributeName": { - "modified": "2019-09-17T04:44:27.460Z", + "Web/SVG/Element/ellipse": { + "modified": "2020-10-15T21:41:43.342Z", "contributors": [ - "ekirpichyov", - "Solj", - "warsan", - "theykillimmortal" + "ialexi-bl", + "boxa6", + "wbamberg", + "Sebastianz", + "littleleshy" ] }, - "Web/SVG/Attribute/attributeType": { - "modified": "2019-03-23T22:07:14.824Z", + "Web/SVG/Element/feBlend": { + "modified": "2020-10-15T22:27:27.749Z", "contributors": [ - "Solj", - "warsan", - "theykillimmortal", - "Vasiliy.Poddubny" + "opereverzeva" ] }, - "Web/SVG/Attribute/class": { - "modified": "2019-03-23T22:24:12.240Z", + "Web/SVG/Element/foreignObject": { + "modified": "2020-10-15T22:16:25.096Z", "contributors": [ - "Vitaligo", - "dmitron1036" + "warsan" ] }, - "Web/SVG/Attribute/cx": { - "modified": "2019-03-18T21:39:26.378Z", + "Web/SVG/Element/g": { + "modified": "2020-10-15T21:43:10.879Z", "contributors": [ - "Solj", - "AlexandrNikolaichev" + "Anonymous", + "boxa6", + "dek4nice", + "Sebastianz", + "vaut", + "littleguga", + "AlexeyFedotof" ] }, - "Web/SVG/Attribute/cy": { - "modified": "2019-03-18T21:39:30.503Z", + "Web/SVG/Element/image": { + "modified": "2020-11-27T18:39:02.137Z", "contributors": [ - "Solj", - "AlexandrNikolaichev" + "robert491", + "boxa6", + "Sebastianz", + "AlexeyFedotof" ] }, - "Web/SVG/Attribute/d": { - "modified": "2019-10-17T06:49:06.860Z", + "Web/SVG/Element": { + "modified": "2019-03-23T23:05:44.353Z", "contributors": [ - "andruhovski", "warsan", - "vKuka", - "annaSchugay" + "BychekRU", + "littleleshy", + "Eugene_Ishchenko" ] }, - "Web/SVG/Attribute/dur": { - "modified": "2020-10-15T21:56:33.845Z", + "Web/SVG/Element/line": { + "modified": "2020-10-15T21:43:08.477Z", "contributors": [ - "ekirpichyov", - "Solj", - "theykillimmortal", - "Vasiliy.Poddubny" + "boxa6", + "konstcos", + "Sebastianz", + "AlexeyFedotof" ] }, - "Web/SVG/Attribute/end": { - "modified": "2019-03-23T22:07:08.160Z", + "Web/SVG/Element/linearGradient": { + "modified": "2020-10-15T22:03:43.312Z", "contributors": [ - "Vasiliy.Poddubny" + "boxa6", + "warsan" ] }, - "Web/SVG/Attribute/fill": { - "modified": "2019-03-28T08:38:38.419Z", + "Web/SVG/Element/path": { + "modified": "2020-10-15T21:43:09.343Z", "contributors": [ - "boxa6", "Solj", - "theykillimmortal", - "Vasiliy.Poddubny" + "warsan", + "Sebastianz", + "samufa" ] }, - "Web/SVG/Attribute/fill-opacity": { - "modified": "2019-03-23T22:46:24.495Z", + "Web/SVG/Element/pattern": { + "modified": "2020-10-15T22:14:34.421Z", "contributors": [ - "Solj", - "Mikke" + "boxa6", + "warsan" ] }, - "Web/SVG/Attribute/fill-rule": { - "modified": "2020-10-15T22:29:32.056Z", + "Web/SVG/Element/polygon": { + "modified": "2020-10-15T22:06:44.273Z", "contributors": [ - "ellizii" + "aak74", + "boxa6", + "bogdancdc" ] }, - "Web/SVG/Attribute/font-weight": { - "modified": "2020-10-15T21:59:48.037Z", + "Web/SVG/Element/radialGradient": { + "modified": "2020-10-15T22:03:44.433Z", "contributors": [ "boxa6", - "kasperyan" + "warsan" ] }, - "Web/SVG/Attribute/id": { - "modified": "2020-10-24T12:47:37.053Z", + "Web/SVG/Element/rect": { + "modified": "2020-10-15T21:32:22.045Z", "contributors": [ - "osipov_s" + "boxa6", + "wbamberg", + "warsan", + "VitaliiKotliar", + "Sebastianz", + "xalz" ] }, - "Web/SVG/Attribute/keyTimes": { - "modified": "2019-05-03T20:37:52.946Z", + "Web/SVG/Element/svg": { + "modified": "2020-10-15T22:31:04.274Z", "contributors": [ - "DyominMV", - "zzzunyazz", - "Vasiliy.Poddubny" + "kve1989" ] }, - "Web/SVG/Attribute/lang": { - "modified": "2020-10-24T13:21:41.808Z", + "Web/SVG/Element/text": { + "modified": "2020-10-15T21:57:25.159Z", "contributors": [ - "osipov_s" + "boxa6", + "warsan", + "arturparkhisenko", + "Evgenjnr" ] }, - "Web/SVG/Attribute/lengthAdjust": { - "modified": "2019-03-23T22:04:51.651Z", + "Web/SVG/Element/use": { + "modified": "2020-10-15T22:24:14.813Z", "contributors": [ - "theykillimmortal" + "hisbvdis" ] }, - "Web/SVG/Attribute/letter-spacing": { - "modified": "2019-03-23T22:09:36.832Z", + "Web/Web_Components/Using_custom_elements": { + "modified": "2020-01-05T09:04:07.966Z", "contributors": [ - "missis-sippi", - "Solj", - "theykillimmortal", - "alex7852" + "Anonymous", + "BurkovBA", + "curtdp", + "curdwithraisins" ] }, - "Web/SVG/Attribute/lighting-color": { - "modified": "2019-03-23T22:04:44.084Z", + "Web/XPath/Functions/floor": { + "modified": "2019-01-16T14:55:28.337Z", "contributors": [ - "Solj", - "theykillimmortal" + "ExE-Boss", + "Android" ] }, - "Web/SVG/Attribute/onload": { - "modified": "2019-01-16T20:23:16.915Z", + "Web/XPath/Functions": { + "modified": "2019-01-16T14:55:44.176Z", "contributors": [ - "maxportnyagin" + "ExE-Boss", + "wbamberg", + "teoli", + "Android" ] }, - "Web/SVG/Attribute/overflow": { - "modified": "2019-03-23T23:20:06.881Z", + "Web/API/WebSockets_API": { + "modified": "2020-10-15T21:24:23.136Z", "contributors": [ - "Solj", - "glizer", - "torbasow" + "YozhEzhi", + "Sajag", + "RusinovAnton", + "zarkone", + "uleming", + "LOVEBOYS" ] }, - "Web/SVG/Attribute/patternContentUnits": { - "modified": "2019-03-23T22:06:23.667Z", + "Web/API/WebSockets_API/Writing_WebSocket_client_applications": { + "modified": "2019-03-23T23:26:56.301Z", "contributors": [ - "artemzwinger" + "Anaind", + "DirectX", + "ilya_khaustov" ] }, - "Web/SVG/Attribute/r": { - "modified": "2019-03-18T21:29:41.005Z", + "orphaned/XML_in_Mozilla": { + "modified": "2019-01-16T14:53:06.925Z", "contributors": [ - "igor-khramko" + "nsvsergey" ] }, - "Web/SVG/Attribute/repeatCount": { - "modified": "2019-03-23T22:24:33.265Z", + "conflicting/Web/API/XMLHttpRequest": { + "modified": "2019-03-24T00:11:01.706Z", "contributors": [ - "Solj", - "VitaliiKotliar" + "denpatin", + "dehero", + "teoli", + "torbasow", + "TotalAMD", + "shergin", + "Bzbarsky", + "Atzkey", + "Apparition" ] }, - "Web/SVG/Attribute/rx": { - "modified": "2019-09-27T12:00:57.972Z", + "orphaned/XPCNativeWrapper": { + "modified": "2019-03-24T00:02:27.014Z", "contributors": [ - "Solj" + "fscholz", + "Dionys" ] }, - "Web/SVG/Attribute/ry": { - "modified": "2019-09-27T12:42:00.928Z", + "orphaned/XPCOM": { + "modified": "2019-01-16T14:04:32.944Z", "contributors": [ - "Solj" + "teoli", + "caiiiycuk", + "bill.gates" ] }, - "Web/SVG/Attribute/shape-rendering": { - "modified": "2019-03-23T23:20:17.223Z", + "orphaned/Веб-стандарты": { + "modified": "2019-03-24T00:00:23.706Z", "contributors": [ - "theykillimmortal", - "BaNru" + "Marat", + "Protopopulus" ] }, - "Web/SVG/Attribute/stop-color": { - "modified": "2019-03-23T22:04:50.665Z", + "orphaned/Вопросы_без_ответов": { + "modified": "2019-03-23T23:58:57.825Z", "contributors": [ - "theykillimmortal" + "glukin" ] }, - "Web/SVG/Attribute/stroke": { - "modified": "2019-03-23T22:07:06.951Z", + "orphaned/Динамически_изменяемый_пользовательский_интерфейс_на_XUL": { + "modified": "2019-06-25T10:50:01.432Z", "contributors": [ - "Solj", - "Vasiliy.Poddubny" + "teoli", + "kup", + "Megapotz" ] }, - "Web/SVG/Attribute/stroke-dashoffset": { - "modified": "2019-10-13T18:23:50.855Z", + "orphaned/Доступность": { + "modified": "2019-01-16T14:51:09.522Z", "contributors": [ - "warsan", - "Solj", - "maxnnn1900" + "Sheppy", + "vilky", + "Cobalt747" ] }, - "Web/SVG/Attribute/stroke-linecap": { - "modified": "2020-10-15T22:14:34.059Z", + "orphaned/Заголовок_ссылки": { + "modified": "2019-03-23T23:43:21.855Z", "contributors": [ - "warsan" + "Sheppy", + "Doctor Baaz" ] }, - "Web/SVG/Attribute/stroke-width": { - "modified": "2019-03-23T22:01:11.603Z", + "orphaned/Контроль_качества": { + "modified": "2019-01-16T14:03:27.006Z", "contributors": [ - "Solj", - "Snikard" + "Hypante" ] }, - "Web/SVG/Attribute/text-anchor": { - "modified": "2020-10-15T21:56:48.973Z", + "orphaned/Локализация": { + "modified": "2019-01-16T14:53:07.899Z", "contributors": [ - "mencerz", - "warsan", - "leonrom", - "theykillimmortal" + "Sheppy", + "sM1Le", + "glukin" ] }, - "Web/SVG/Attribute/text-rendering": { - "modified": "2019-03-23T23:20:14.491Z", + "orphaned/Настройка_среды_разработки_расширений": { + "modified": "2019-03-24T00:02:36.376Z", "contributors": [ - "BaNru" + "alikkille", + "teoli", + "fscholz", + "Yozh88" ] }, - "Web/SVG/Attribute/transform": { - "modified": "2019-03-23T22:46:36.351Z", + "orphaned/Переход_с_Internet_Explorer_на_Mozilla": { + "modified": "2019-01-16T15:00:06.072Z", "contributors": [ - "a1ip", - "Solj", - "Lexeii", - "antisergey", - "Aleksov" + "karasiov", + "Yura", + "Naterera" ] }, - "Web/SVG/Attribute/values": { - "modified": "2019-03-23T22:06:49.462Z", + "orphaned/Сборка_и_установка": { + "modified": "2019-03-24T00:05:30.187Z", "contributors": [ - "Vasiliy.Poddubny" + "Protopopulus" ] }, - "Web/SVG/Attribute/viewBox": { - "modified": "2020-07-17T23:39:00.663Z", + "Glossary/404": { + "modified": "2019-03-23T22:13:48.343Z", "contributors": [ - "ialexi-bl", - "dimitrius-brest", - "annekorti", - "pepsikat" + "cotolany", + "nudaworks" ] }, - "Web/SVG/Attribute/width": { - "modified": "2019-05-12T12:39:52.350Z", + "Glossary/502": { + "modified": "2019-03-18T21:41:50.347Z", "contributors": [ - "opereverzeva" + "gadjetron" ] }, - "Web/SVG/Attribute/x": { - "modified": "2019-03-23T22:05:16.429Z", + "Glossary/Abstraction": { + "modified": "2019-03-23T22:51:57.044Z", "contributors": [ - "Solj" + "alitskevich", + "davidof" ] }, - "Web/SVG/Attribute/xml:space": { - "modified": "2019-03-23T22:23:51.290Z", + "Glossary/Adobe_Flash": { + "modified": "2019-03-23T22:16:01.660Z", "contributors": [ - "lautsevich" + "ifantom" ] }, - "Web/SVG/Attribute/y": { - "modified": "2019-03-23T22:05:20.840Z", + "Glossary/AJAX": { + "modified": "2020-10-30T05:21:31.612Z", "contributors": [ - "Solj" + "ksam", + "duckDominatrix", + "T1mL3arn", + "ifantom", + "mpetrikov", + "gudkovdanila", + "veselik", + "nikokosh" ] }, - "Web/SVG/SVG_1.1_Support_in_Firefox": { - "modified": "2019-03-18T21:33:59.744Z", + "Glossary/Algorithm": { + "modified": "2019-11-23T15:11:34.488Z", "contributors": [ - "warsan" + "Igor-Sangin", + "boxa6", + "ifantom" ] }, - "Web/SVG/SVG_as_an_Image": { - "modified": "2019-04-24T01:52:04.782Z", + "Glossary/API": { + "modified": "2020-10-30T06:23:36.856Z", "contributors": [ - "opereverzeva" + "ksam", + "DashPisareva", + "nikitaermishin", + "Severno" ] }, - "Web/SVG/Tutorial": { - "modified": "2020-08-16T23:33:41.513Z", + "Glossary/Apple_Safari": { + "modified": "2019-03-23T22:09:03.834Z", "contributors": [ - "fqf", - "Ivan961", - "hisbvdis", - "theykillimmortal", - "dima74", - "mboris1", - "MaxManchak", - "Eugene_Ishchenko" + "bsergey", + "pgooood" ] }, - "Web/SVG/Tutorial/Clipping_and_masking": { - "modified": "2019-03-18T21:33:27.085Z", + "Glossary/application_context": { + "modified": "2019-03-18T21:33:46.218Z", "contributors": [ - "theykillimmortal" + "bsergey", + "Lana-Light" ] }, - "Web/SVG/Tutorial/Fills_and_Strokes": { - "modified": "2019-11-05T15:39:42.604Z", + "Glossary/ARIA": { + "modified": "2019-04-09T10:19:16.954Z", "contributors": [ - "hisbvdis", - "valery-paschenkov", - "tavira" + "JCodeg", + "bsergey" ] }, - "Web/SVG/Tutorial/Filter_effects": { - "modified": "2019-03-18T21:33:29.713Z", + "Glossary/ARPA": { + "modified": "2019-03-18T21:25:48.447Z", "contributors": [ - "theykillimmortal" + "bsergey" ] }, - "Web/SVG/Tutorial/Getting_Started": { - "modified": "2019-11-04T17:28:30.391Z", + "Glossary/Arpanet": { + "modified": "2019-03-18T21:25:16.563Z", "contributors": [ - "hisbvdis", - "alexbs", - "warsan", - "komuroe", - "valery-paschenkov", - "tavira", - "mboris1", - "Eugene_Ishchenko" + "bsergey" ] }, - "Web/SVG/Tutorial/Gradients": { - "modified": "2020-08-11T09:48:48.660Z", + "Glossary/ASCII": { + "modified": "2019-03-18T21:40:49.201Z", "contributors": [ - "wBureshGitHub", - "u.gantimurov", - "warsan", - "valery-paschenkov", - "tavira" + "ValeriiBoiko" ] }, - "Web/SVG/Tutorial/Other_content_in_SVG": { - "modified": "2019-12-31T04:23:04.282Z", + "Glossary/Asynchronous": { + "modified": "2019-03-18T21:40:41.315Z", "contributors": [ - "ekirpichyov", - "warsan" + "jeniasaigak", + "ValeriiBoiko" ] }, - "Web/SVG/Tutorial/Paths": { - "modified": "2019-10-08T05:57:38.968Z", + "Glossary/ATAG": { + "modified": "2019-03-18T21:25:01.427Z", "contributors": [ - "hellvesper", - "red5tart", - "devfedorenko", - "komuroe", - "tavira", - "sonnenhaft", - "reflash", - "riseremi", - "mboris1", - "scaint" + "bsergey" ] }, - "Web/SVG/Tutorial/Patterns": { - "modified": "2019-11-06T13:03:01.053Z", + "Glossary/Bandwidth": { + "modified": "2019-03-23T22:06:46.461Z", "contributors": [ - "hisbvdis", - "warsan", - "valery-paschenkov" + "Morjodrom" ] }, - "Web/SVG/Tutorial/SVG_Image_Tag": { - "modified": "2019-03-23T22:09:37.959Z", + "Glossary/baseline": { + "modified": "2020-08-27T06:37:10.071Z", "contributors": [ - "x-in" + "DarkExodusXX" ] }, - "Web/SVG/Tutorial/SVG_In_HTML_Introduction": { - "modified": "2019-03-23T22:42:40.887Z", + "Glossary/Bézier_curve": { + "modified": "2019-08-19T18:48:29.930Z", "contributors": [ - "chrisdavidmills", - "warsan", - "karpulix" + "regeneratorl" ] }, - "Web/SVG/Tutorial/SVG_fonts": { - "modified": "2019-03-18T21:33:26.235Z", + "Glossary/BiDi": { + "modified": "2019-03-18T21:25:00.810Z", "contributors": [ - "theykillimmortal" + "bsergey" ] }, - "Web/SVG/Tutorial/Texts": { - "modified": "2019-03-18T21:43:56.017Z", + "Glossary/BigInt": { + "modified": "2020-08-27T06:12:45.928Z", "contributors": [ - "theykillimmortal" + "DarkExodusXX", + "maksakova" ] }, - "Web/SVG/Tutorial/Tools_for_SVG": { - "modified": "2019-06-06T06:15:16.270Z", + "Glossary/Blink": { + "modified": "2019-03-18T20:43:00.706Z", "contributors": [ - "Evaphobia", - "Roman-Kosov" + "Frisle" ] }, - "Web/SVG/Tutorial/Базовые_Преобразования": { - "modified": "2020-08-16T23:38:02.015Z", + "Glossary/Boolean": { + "modified": "2020-05-05T17:38:43.691Z", "contributors": [ - "fqf", - "hisbvdis", - "theykillimmortal", - "andrewtk" + "Thr0TT1e", + "ekirpichyov", + "Anna-Myzukina", + "perioad", + "Shankshel", + "boxa6", + "Sheppy", + "jaguardev" ] }, - "Web/SVG/Tutorial/Введение": { - "modified": "2020-08-11T13:52:37.344Z", + "Glossary/Bootstrap": { + "modified": "2020-10-30T10:23:10.825Z", "contributors": [ - "wBureshGitHub", - "hisbvdis", - "tcheburator", - "alexbs", - "Alianta", - "Dizzy", - "tavira", - "mboris1", - "nakhodkiin", - "MaxManchak" + "ksam" ] }, - "Web/SVG/Tutorial/Основные_Фигуры": { - "modified": "2019-03-23T22:33:02.983Z", + "Glossary/Browser": { + "modified": "2019-03-23T22:40:32.512Z", "contributors": [ - "devfedorenko", - "komuroe", - "Dizzy", - "AlexanderLevenskikh", - "mboris1" + "anastasiya-solodkaya", + "AlexandrKalaidzhi", + "tronov", + "MuradAz" ] }, - "Web/SVG/Tutorial/Позиции": { - "modified": "2019-03-23T22:33:09.544Z", + "Glossary/Browsing_context": { + "modified": "2019-03-23T22:17:49.487Z", "contributors": [ - "Dizzy", - "valery-paschenkov", - "AlexanderLevenskikh", - "mboris1" + "anastasiya-solodkaya" + ] + }, + "Glossary/cacheable": { + "modified": "2019-03-23T22:25:05.632Z", + "contributors": [ + "vykulakov", + "pk.prog" ] }, - "Web/SVG/Элемент": { - "modified": "2019-03-23T23:05:44.353Z", + "Glossary/Call_stack": { + "modified": "2019-03-26T03:35:33.245Z", "contributors": [ - "warsan", - "BychekRU", - "littleleshy", - "Eugene_Ishchenko" + "boxa6", + "Dimas-X", + "Iroshh" ] }, - "Web/SVG/Элемент/": { - "modified": "2020-10-15T21:57:25.159Z", + "Glossary/Canvas": { + "modified": "2019-03-18T21:33:34.116Z", "contributors": [ - "boxa6", - "warsan", - "arturparkhisenko", - "Evgenjnr" + "Lana-Light" ] }, - "Web/SVG/Элемент/a": { - "modified": "2020-10-15T21:31:40.250Z", + "Glossary/Card_sorting": { + "modified": "2019-09-13T15:24:23.423Z", "contributors": [ - "ekirpichyov", - "boxa6", - "bogdancdc", - "Sebastianz", - "AlexeyFedotof", - "Eugene_Ishchenko" + "maXimusIsMyName", + "nova-k" ] }, - "Web/SVG/Элемент/animate": { - "modified": "2020-10-15T21:40:35.396Z", + "Glossary/CDN": { + "modified": "2019-07-08T10:40:37.612Z", "contributors": [ - "boxa6", - "wbamberg", - "Sebastianz", - "Eugene_Ishchenko" + "LesikTheCat" ] }, - "Web/SVG/Элемент/animateMotion": { - "modified": "2020-10-15T22:06:06.145Z", + "Glossary/character_encoding": { + "modified": "2019-11-23T10:06:58.821Z", "contributors": [ - "ekirpichyov", - "warsan" + "Igor-Sangin" ] }, - "Web/SVG/Элемент/circle": { - "modified": "2020-10-15T21:41:44.986Z", + "Glossary/Character": { + "modified": "2019-03-26T03:36:39.039Z", "contributors": [ - "LonelyDutchhound", - "boxa6", - "wbamberg", - "Sebastianz", - "AlexeyFedotof", - "littleleshy" + "boxa6" ] }, - "Web/SVG/Элемент/defs": { - "modified": "2020-10-15T22:02:01.863Z", + "Glossary/Chrome": { + "modified": "2019-01-16T20:45:50.537Z", "contributors": [ - "boxa6", - "coshturnina" + "Aleksej" ] }, - "Web/SVG/Элемент/ellipse": { - "modified": "2020-10-15T21:41:43.342Z", + "Glossary/Class": { + "modified": "2019-03-23T22:50:33.763Z", "contributors": [ - "ialexi-bl", - "boxa6", - "wbamberg", - "Sebastianz", - "littleleshy" + "ezekeli", + "scanick" ] }, - "Web/SVG/Элемент/feBlend": { - "modified": "2020-10-15T22:27:27.749Z", + "Glossary/CMS": { + "modified": "2019-03-23T22:17:50.404Z", "contributors": [ - "opereverzeva" + "anastasiya-solodkaya" ] }, - "Web/SVG/Элемент/foreignObject": { - "modified": "2020-10-15T22:16:25.096Z", + "Glossary/Codec": { + "modified": "2019-06-20T09:27:20.089Z", "contributors": [ - "warsan" + "CS313" ] }, - "Web/SVG/Элемент/g": { - "modified": "2020-10-15T21:43:10.879Z", + "Glossary/Compile": { + "modified": "2020-08-27T07:13:45.873Z", "contributors": [ - "Anonymous", - "boxa6", - "dek4nice", - "Sebastianz", - "vaut", - "littleguga", - "AlexeyFedotof" + "DarkExodusXX" ] }, - "Web/SVG/Элемент/image": { - "modified": "2020-11-27T18:39:02.137Z", + "Glossary/Computer_Programming": { + "modified": "2020-02-28T20:10:24.813Z", "contributors": [ - "robert491", - "boxa6", - "Sebastianz", - "AlexeyFedotof" + "almaceleste" ] }, - "Web/SVG/Элемент/line": { - "modified": "2020-10-15T21:43:08.477Z", + "Glossary/Conditional": { + "modified": "2020-02-28T19:51:16.047Z", "contributors": [ - "boxa6", - "konstcos", - "Sebastianz", - "AlexeyFedotof" + "almaceleste" ] }, - "Web/SVG/Элемент/linearGradient": { - "modified": "2020-10-15T22:03:43.312Z", + "Glossary/Constructor": { + "modified": "2019-03-18T21:40:38.410Z", "contributors": [ - "boxa6", - "warsan" + "ValeriiBoiko" ] }, - "Web/SVG/Элемент/path": { - "modified": "2020-10-15T21:43:09.343Z", + "Glossary/Cookie": { + "modified": "2019-03-23T22:19:39.272Z", "contributors": [ - "Solj", - "warsan", - "Sebastianz", - "samufa" + "anastasiya-solodkaya", + "smkoyan" ] }, - "Web/SVG/Элемент/pattern": { - "modified": "2020-10-15T22:14:34.421Z", + "Glossary/Copyleft": { + "modified": "2019-08-22T15:17:45.253Z", "contributors": [ - "boxa6", - "warsan" + "regeneratorl" ] }, - "Web/SVG/Элемент/polygon": { - "modified": "2020-10-15T22:06:44.273Z", + "Glossary/CORS": { + "modified": "2019-03-18T21:01:16.414Z", "contributors": [ - "aak74", - "boxa6", - "bogdancdc" + "ruslan.khaertdinov", + "anastasiya-solodkaya" ] }, - "Web/SVG/Элемент/radialGradient": { - "modified": "2020-10-15T22:03:44.433Z", + "Glossary/Crawler": { + "modified": "2019-10-16T05:50:09.685Z", "contributors": [ - "boxa6", - "warsan" + "e-h-h" ] }, - "Web/SVG/Элемент/rect": { - "modified": "2020-10-15T21:32:22.045Z", + "Glossary/CRLF": { + "modified": "2019-03-18T21:18:06.376Z", "contributors": [ - "boxa6", - "wbamberg", - "warsan", - "VitaliiKotliar", - "Sebastianz", - "xalz" + "alexbs" ] }, - "Web/SVG/Элемент/svg": { - "modified": "2020-10-15T22:31:04.274Z", + "Glossary/CSP": { + "modified": "2020-03-11T16:49:32.227Z", "contributors": [ - "kve1989" + "almaceleste" ] }, - "Web/SVG/Элемент/use": { - "modified": "2020-10-15T22:24:14.813Z", + "Glossary/CSRF": { + "modified": "2019-03-23T22:17:52.593Z", "contributors": [ - "hisbvdis" + "anastasiya-solodkaya" ] }, - "Web/Security": { - "modified": "2019-11-20T21:39:44.381Z", + "Glossary/CSS_preprocessor": { + "modified": "2019-03-26T02:52:52.000Z", "contributors": [ - "wbamberg", - "SphinxKnight", - "pepelsbey", - "Tihoem", - "Sheppy" + "boxa6", + "bazoooker" ] }, - "Web/Security/CSP": { - "modified": "2019-03-23T23:04:20.797Z", + "Glossary/CSS_Selector": { + "modified": "2020-12-07T13:33:11.621Z", "contributors": [ - "sivashev", - "Aleksej", - "Tihoem" + "kucherenkoag", + "DashPisareva" ] }, - "Web/Security/Information_Security_Basics": { - "modified": "2019-03-18T20:42:08.077Z", + "Glossary/CSS": { + "modified": "2020-11-27T18:16:28.046Z", "contributors": [ - "Frisle" + "robert491", + "boxa6", + "andreybakhishev", + "oleg3280", + "AlexandrKalaidzhi" ] }, - "Web/Security/Same-origin_policy": { - "modified": "2020-10-20T11:28:42.439Z", + "Glossary/Data_structure": { + "modified": "2019-03-23T22:40:22.188Z", "contributors": [ - "niklimoff01", - "hisbvdis", - "WhiteApfel", - "iamvector", - "vladlipski", - "ZVanoZ" + "alitskevich" ] }, - "Web/Security/Securing_your_site": { - "modified": "2019-12-18T06:44:18.277Z", + "Glossary/DNS": { + "modified": "2019-07-09T20:05:30.988Z", "contributors": [ - "mfuji09" + "fuggy" ] }, - "Web/Security/Securing_your_site/Turning_off_form_autocompletion": { - "modified": "2019-12-18T06:44:21.121Z", + "Glossary/Doctype": { + "modified": "2019-10-20T09:56:23.239Z", "contributors": [ - "KolesnikovR" + "alexbs", + "gogumaUno" ] }, - "Web/Tutorials": { - "modified": "2019-10-02T16:11:49.043Z", + "Glossary/DOM": { + "modified": "2019-03-23T22:40:33.690Z", "contributors": [ - "Termaro", - "mmbl", - "ukrlex01", - "rhiter", - "anastasiya-solodkaya", - "GraceAredel", - "Tihoem", - "uleming", - "Steln", - "aleks_root" + "tronov", + "MuradAz" ] }, - "Web/WebAPI": { - "modified": "2019-03-25T10:51:55.253Z", + "Glossary/Domain_name": { + "modified": "2019-03-18T21:25:39.712Z", "contributors": [ - "boxa6", - "andreybakhishev", - "wbamberg", - "fscholz", - "Cyemka" + "bsergey" ] }, - "Web/Web_Components": { - "modified": "2020-09-03T10:16:00.956Z", + "Glossary/DOS_attack": { + "modified": "2019-08-14T18:10:26.015Z", "contributors": [ - "m.tven18", - "Loosefer", - "Akh-rman", - "shmel115", - "newbornfrontender", - "Peccansy", - "alinofka", - "curdwithraisins", - "dmitrykurmanov", - "Kalita-Roman" + "Newage3018" ] }, - "Web/Web_Components/HTML_Imports": { - "modified": "2019-03-18T21:40:10.986Z", + "Glossary/Dynamic_programming_language": { + "modified": "2019-03-23T22:22:41.086Z", "contributors": [ - "PaulineNemchak" + "pust0ta", + "thecodecreator" ] }, - "Web/Web_Components/Использование_пользовательских_элементов": { - "modified": "2020-01-05T09:04:07.966Z", + "Glossary/ECMA": { + "modified": "2019-03-23T22:26:58.025Z", "contributors": [ - "Anonymous", - "BurkovBA", - "curtdp", - "curdwithraisins" + "anastasiya-solodkaya", + "werreour" ] }, - "Web/XML": { - "modified": "2019-03-24T13:24:33.354Z" + "Glossary/ECMAScript": { + "modified": "2019-03-23T22:03:14.516Z", + "contributors": [ + "4erty" + ] }, - "Web/XML/XML_introduction": { - "modified": "2019-03-25T08:08:08.506Z", + "Glossary/Empty_element": { + "modified": "2020-06-17T07:35:47.736Z", "contributors": [ - "boxa6" + "fuggy", + "Sheppy", + "Aleksej" ] }, - "Web/XPath": { - "modified": "2019-01-16T14:55:34.456Z", + "Glossary/Encapsulation": { + "modified": "2019-10-15T17:04:32.904Z", "contributors": [ - "ExE-Boss", - "wbamberg", - "teoli", - "Android" + "duckDominatrix" ] }, - "Web/XPath/Funkcje": { - "modified": "2019-01-16T14:55:44.176Z", + "Glossary/Entity_header": { + "modified": "2020-03-13T19:29:42.150Z", "contributors": [ - "ExE-Boss", - "wbamberg", - "teoli", - "Android" + "fuggy", + "opereverzeva" ] }, - "Web/XPath/Funkcje/floor": { - "modified": "2019-01-16T14:55:28.337Z", + "Glossary/event": { + "modified": "2019-08-19T18:18:09.165Z", "contributors": [ - "ExE-Boss", - "Android" + "regeneratorl" ] }, - "Web/XSLT": { - "modified": "2019-03-23T23:58:47.674Z", + "Glossary/Expando": { + "modified": "2019-03-23T22:25:14.834Z", "contributors": [ - "niktariy", - "ExE-Boss", - "teoli", - "iliacmd" + "Chamie", + "Aksana-Tsishchanka" ] }, - "WebAssembly": { - "modified": "2020-10-15T22:05:07.172Z", + "Glossary/Falsy": { + "modified": "2020-02-29T14:01:11.239Z", "contributors": [ - "sharpist", - "deadblackclover", - "vkorniiko", - "warsan", - "thatlldo" + "almaceleste", + "Anna-Myzukina" ] }, - "WebAssembly/C_to_wasm": { - "modified": "2019-03-18T21:33:56.809Z", + "Glossary/First_contentful_paint": { + "modified": "2019-11-20T05:40:40.814Z", "contributors": [ - "thatlldo" + "Antosik" ] }, - "WebAssembly/Concepts": { - "modified": "2019-03-18T21:10:19.900Z", + "Glossary/First_CPU_idle": { + "modified": "2019-11-20T05:48:47.023Z", "contributors": [ - "vkorniiko" + "Antosik" ] }, - "WebAssembly/Exported_functions": { - "modified": "2020-03-04T19:06:28.386Z", + "Glossary/First_input_delay": { + "modified": "2020-11-29T12:51:47.015Z", "contributors": [ - "amuzalevskiy", - "thatlldo" + "BehemothOz", + "Antosik" ] }, - "WebAssembly/Loading_and_running": { - "modified": "2019-06-12T11:14:54.085Z", + "Glossary/First_interactive": { + "modified": "2019-11-20T05:51:30.233Z", "contributors": [ - "deadblackclover" + "Antosik" ] }, - "WebAssembly/Rust_to_wasm": { - "modified": "2020-06-11T14:27:31.970Z", + "Glossary/first_meaningful_paint": { + "modified": "2019-11-19T16:13:59.472Z", "contributors": [ - "DuckerMan", - "idkravitz", - "dlukanin", - "curdwithraisins", - "VLDSLW" + "Antosik" ] }, - "WebAssembly/Understanding_the_text_format": { - "modified": "2019-03-18T21:09:18.859Z", + "Glossary/First_paint": { + "modified": "2019-11-20T05:44:29.012Z", "contributors": [ - "vkorniiko" + "Antosik" ] }, - "WebAssembly/Using_the_JavaScript_API": { - "modified": "2019-06-12T07:08:20.267Z", + "Glossary/First-class_Function": { + "modified": "2019-03-23T22:26:14.132Z", "contributors": [ - "deadblackclover", - "vkorniiko" + "s1lver", + "B0dya", + "pk.prog" ] }, - "WebSockets": { - "modified": "2020-10-15T21:24:23.136Z", + "Glossary/Flex_Item": { + "modified": "2020-03-08T07:29:42.816Z", "contributors": [ - "YozhEzhi", - "Sajag", - "RusinovAnton", - "zarkone", - "uleming", - "LOVEBOYS" + "Radragon" ] }, - "WebSockets/Writing_WebSocket_client_applications": { - "modified": "2019-03-23T23:26:56.301Z", + "Glossary/Flexbox": { + "modified": "2019-03-18T21:33:55.150Z", "contributors": [ - "Anaind", - "DirectX", - "ilya_khaustov" + "b.zvyagintsev" ] }, - "Web_Development/Mobile": { - "modified": "2019-03-23T23:27:06.077Z", + "Glossary/Forbidden_header_name": { + "modified": "2020-11-27T14:27:47.971Z", "contributors": [ - "wbamberg" + "robert491", + "Alex90", + "crabovwik", + "JeanPaulLucien" ] }, - "Web_Development/Mobile/Responsive_design": { - "modified": "2019-03-23T23:27:07.759Z", + "Glossary/FPS": { + "modified": "2019-11-19T15:47:44.839Z", "contributors": [ - "ArsenBespalov" + "Antosik" ] }, - "XMLHttpRequest": { - "modified": "2019-03-24T00:11:01.706Z", + "Glossary/FTP": { + "modified": "2019-03-23T22:56:50.644Z", "contributors": [ - "denpatin", - "dehero", - "teoli", - "torbasow", - "TotalAMD", - "shergin", - "Bzbarsky", - "Atzkey", - "Apparition" + "Aleksej" ] }, - "XML_in_Mozilla": { - "modified": "2019-01-16T14:53:06.925Z", + "Glossary/Gecko": { + "modified": "2019-03-23T22:25:29.241Z", "contributors": [ - "nsvsergey" + "pk.prog" ] }, - "XPCNativeWrapper": { - "modified": "2019-03-24T00:02:27.014Z", + "Glossary/General_header": { + "modified": "2020-11-27T15:28:54.047Z", "contributors": [ - "fscholz", - "Dionys" + "robert491", + "Sergey.Terekhin" ] }, - "XPCOM": { - "modified": "2019-01-16T14:04:32.944Z", + "Glossary/Git": { + "modified": "2019-07-13T19:51:02.847Z", "contributors": [ - "teoli", - "caiiiycuk", - "bill.gates" + "fuggy", + "4erty" ] }, - "Веб-разработка": { - "modified": "2019-03-24T00:00:53.915Z", + "Glossary/Global_object": { + "modified": "2020-01-11T18:59:38.482Z", "contributors": [ - "Dionys" + "Kiryhas" ] }, - "Веб-стандарты": { - "modified": "2019-03-24T00:00:23.706Z", + "Glossary/Global_variable": { + "modified": "2019-06-28T05:46:29.060Z", "contributors": [ - "Marat", - "Protopopulus" + "OlehRula" ] }, - "Вопросы_без_ответов": { - "modified": "2019-03-23T23:58:57.825Z", + "Glossary/Grid_Column": { + "modified": "2019-09-25T10:04:35.112Z", "contributors": [ - "glukin" + "ekirpichyov", + "albinasakhabutdinova" ] }, - "Динамически_изменяемый_пользовательский_интерфейс_на_XUL": { - "modified": "2019-06-25T10:50:01.432Z", + "Glossary/Grid": { + "modified": "2019-09-25T00:37:08.781Z", "contributors": [ - "teoli", - "kup", - "Megapotz" + "Zver64", + "boxa6", + "Paul_Yuhnovich" ] }, - "Доступность": { - "modified": "2019-01-16T14:51:09.522Z", + "Glossary/Host": { + "modified": "2019-03-18T20:56:13.920Z", "contributors": [ - "Sheppy", - "vilky", - "Cobalt747" + "iamvector" ] }, - "Заголовок_ссылки": { - "modified": "2019-03-23T23:43:21.855Z", + "Glossary/HTML": { + "modified": "2020-10-30T06:06:49.972Z", "contributors": [ - "Sheppy", - "Doctor Baaz" + "ksam", + "boxa6", + "oleg3280", + "Ananasovich", + "Rod1on", + "NerRox", + "talgautb" ] }, - "Контроль_качества": { - "modified": "2019-01-16T14:03:27.006Z", + "Glossary/HTML5": { + "modified": "2019-03-23T11:50:58.551Z", "contributors": [ - "Hypante" + "JCodeg", + "oleg3280", + "VEDigit" ] }, - "Локализация": { - "modified": "2019-01-16T14:53:07.899Z", + "Glossary/HTTP_2": { + "modified": "2019-11-06T06:45:14.792Z", "contributors": [ - "Sheppy", - "sM1Le", - "glukin" + "duckDominatrix", + "e-h-h" ] }, - "Настройка_среды_разработки_расширений": { - "modified": "2019-03-24T00:02:36.376Z", + "Glossary/HTTP": { + "modified": "2019-11-07T07:41:21.870Z", "contributors": [ - "alikkille", - "teoli", - "fscholz", - "Yozh88" + "duckDominatrix", + "gadjetron", + "MuradAz" ] }, - "Об_объектной_модели_документа": { - "modified": "2019-06-25T10:49:44.957Z", + "Glossary/https": { + "modified": "2019-01-17T02:14:25.160Z", "contributors": [ - "d.zheleznov", - "cognitive-cake", - "runicelf", - "Megapotz" + "bazoooker", + "dzandut" ] }, - "Переход_с_Internet_Explorer_на_Mozilla": { - "modified": "2019-01-16T15:00:06.072Z", + "Glossary/IANA": { + "modified": "2019-03-18T21:36:56.523Z", "contributors": [ - "karasiov", - "Yura", - "Naterera" + "pavelkarinin" ] }, - "Сборка_и_установка": { - "modified": "2019-03-24T00:05:30.187Z", + "Glossary/ICANN": { + "modified": "2019-03-18T21:36:45.102Z", "contributors": [ - "Protopopulus" + "pavelkarinin" ] }, - "Словарь": { - "modified": "2020-10-07T11:13:45.197Z", + "Glossary/Idempotent": { + "modified": "2020-08-24T16:46:00.432Z", "contributors": [ - "peterbe", - "SphinxKnight", - "wbamberg", - "BychekRU", - "abldi", - "MuradAz", - "Aleksej", - "Sheppy", - "teoli" + "dev4lex", + "snizh", + "pk.prog" ] }, - "Словарь/404": { - "modified": "2019-03-23T22:13:48.343Z", + "Glossary/Identifier": { + "modified": "2019-03-23T22:20:02.500Z", "contributors": [ - "cotolany", - "nudaworks" + "mlilin", + "Kaliukhovich" ] }, - "Словарь/502": { - "modified": "2019-03-18T21:41:50.347Z", + "Glossary/IETF": { + "modified": "2020-10-30T04:28:05.922Z", "contributors": [ - "gadjetron" + "ksam" ] }, - "Словарь/AJAX": { - "modified": "2020-10-30T05:21:31.612Z", + "Glossary/IIFE": { + "modified": "2019-08-02T04:11:30.483Z", "contributors": [ - "ksam", - "duckDominatrix", - "T1mL3arn", - "ifantom", - "mpetrikov", - "gudkovdanila", - "veselik", - "nikokosh" + "alexbutav", + "zavsievich", + "Hiker-Hope", + "anastasiya-solodkaya", + "TheodoreChe", + "c01nd01r" + ] + }, + "Glossary": { + "modified": "2020-10-07T11:13:45.197Z", + "contributors": [ + "peterbe", + "SphinxKnight", + "wbamberg", + "BychekRU", + "abldi", + "MuradAz", + "Aleksej", + "Sheppy", + "teoli" ] }, - "Словарь/API": { - "modified": "2020-10-30T06:23:36.856Z", + "Glossary/IndexedDB": { + "modified": "2020-09-25T14:17:01.625Z", "contributors": [ - "ksam", - "DashPisareva", - "nikitaermishin", - "Severno" + "swimmwatch" ] }, - "Словарь/ARIA": { - "modified": "2019-04-09T10:19:16.954Z", + "Glossary/Information_architecture": { + "modified": "2019-07-02T10:04:49.702Z", "contributors": [ - "JCodeg", - "bsergey" + "wizardbil" ] }, - "Словарь/ARPA": { - "modified": "2019-03-18T21:25:48.447Z", + "Glossary/Internet": { + "modified": "2019-06-17T12:53:37.150Z", "contributors": [ + "kss555", "bsergey" ] }, - "Словарь/ASCII": { - "modified": "2019-03-18T21:40:49.201Z", + "Glossary/IP_Address": { + "modified": "2019-03-18T21:27:42.696Z", "contributors": [ - "ValeriiBoiko" + "Luboshenko" ] }, - "Словарь/ATAG": { - "modified": "2019-03-18T21:25:01.427Z", + "Glossary/ISO": { + "modified": "2020-10-30T04:04:18.482Z", "contributors": [ - "bsergey" + "ksam" ] }, - "Словарь/Abstraction": { - "modified": "2019-03-23T22:51:57.044Z", + "Glossary/Java": { + "modified": "2019-08-04T18:12:34.992Z", "contributors": [ - "alitskevich", - "davidof" + "angelhearted" ] }, - "Словарь/Adobe-Flash": { - "modified": "2019-03-23T22:16:01.660Z", + "Glossary/JavaScript": { + "modified": "2020-10-30T03:58:08.340Z", "contributors": [ - "ifantom" + "ksam", + "ekirpichyov", + "JCodeg", + "boxa6", + "aleshkanet", + "oleg3280", + "MuradAz", + "silentwasd", + "Sheppy", + "Vovchikb6" ] }, - "Словарь/Algorithm": { - "modified": "2019-11-23T15:11:34.488Z", + "Glossary/jpeg": { + "modified": "2019-03-18T21:38:25.986Z", "contributors": [ - "Igor-Sangin", - "boxa6", - "ifantom" + "kayablue" ] }, - "Словарь/Apple_Safari": { - "modified": "2019-03-23T22:09:03.834Z", + "Glossary/jQuery": { + "modified": "2020-11-17T03:47:58.520Z", "contributors": [ - "bsergey", - "pgooood" + "SphinxKnight", + "annamolodcova1909", + "Sparks" ] }, - "Словарь/Arpanet": { - "modified": "2019-03-18T21:25:16.563Z", + "Glossary/JSON": { + "modified": "2019-01-17T00:40:57.677Z", "contributors": [ - "bsergey" + "ezekeli" ] }, - "Словарь/Asynchronous": { - "modified": "2019-03-18T21:40:41.315Z", + "Glossary/loop": { + "modified": "2020-02-28T13:59:22.366Z", "contributors": [ - "jeniasaigak", - "ValeriiBoiko" + "almaceleste" ] }, - "Словарь/Bandwidth": { - "modified": "2019-03-23T22:06:46.461Z", + "Glossary/Main_Axis": { + "modified": "2020-05-21T13:03:11.807Z", "contributors": [ - "Morjodrom" + "HImichun" ] }, - "Словарь/BiDi": { - "modified": "2019-03-18T21:25:00.810Z", + "Glossary/MathML": { + "modified": "2019-03-18T21:19:08.526Z", "contributors": [ "bsergey" ] }, - "Словарь/BigInt": { - "modified": "2020-08-27T06:12:45.928Z", + "Glossary/Method": { + "modified": "2020-10-30T06:40:44.910Z", "contributors": [ - "DarkExodusXX", - "maksakova" + "ksam" ] }, - "Словарь/Blink": { - "modified": "2019-03-18T20:43:00.706Z", + "Glossary/Microsoft_Internet_Explorer": { + "modified": "2019-03-18T21:41:51.997Z", "contributors": [ - "Frisle" + "djigach" ] }, - "Словарь/Boolean": { - "modified": "2020-05-05T17:38:43.691Z", + "Glossary/MIME_type": { + "modified": "2020-04-21T12:17:26.839Z", "contributors": [ - "Thr0TT1e", - "ekirpichyov", - "Anna-Myzukina", - "perioad", - "Shankshel", - "boxa6", - "Sheppy", - "jaguardev" + "an5000", + "elvin666666", + "margaritashvetsov", + "ilia-valchenko" ] }, - "Словарь/Bootstrap": { - "modified": "2020-10-30T10:23:10.825Z", + "Glossary/Mixin": { + "modified": "2020-04-09T10:41:29.634Z", "contributors": [ - "ksam" + "Drrragonica" ] }, - "Словарь/Browser": { - "modified": "2019-03-23T22:40:32.512Z", + "Glossary/Node.js": { + "modified": "2019-03-23T22:28:12.455Z", "contributors": [ - "anastasiya-solodkaya", - "AlexandrKalaidzhi", - "tronov", - "MuradAz" + "tim-zh", + "nikokosh" ] }, - "Словарь/Browsing_context": { - "modified": "2019-03-23T22:17:49.487Z", + "Glossary/Null": { + "modified": "2020-03-23T08:30:22.000Z", "contributors": [ - "anastasiya-solodkaya" + "wentout", + "tim-zh" ] }, - "Словарь/Bézier_curve": { - "modified": "2019-08-19T18:48:29.930Z", + "Glossary/Number": { + "modified": "2019-03-23T22:59:57.277Z", "contributors": [ - "regeneratorl" + "Sheppy", + "jaguardev" ] }, - "Словарь/CDN": { - "modified": "2019-07-08T10:40:37.612Z", + "Glossary/Object": { + "modified": "2019-03-23T22:22:47.659Z", "contributors": [ - "LesikTheCat" + "bsergey", + "haacki47" ] }, - "Словарь/CMS": { - "modified": "2019-03-23T22:17:50.404Z", + "Glossary/OOP": { + "modified": "2019-03-18T21:40:42.132Z", "contributors": [ - "anastasiya-solodkaya" + "ValeriiBoiko" ] }, - "Словарь/CORS": { - "modified": "2019-03-18T21:01:16.414Z", + "Glossary/OpenGL": { + "modified": "2019-11-14T05:58:50.039Z", "contributors": [ - "ruslan.khaertdinov", - "anastasiya-solodkaya" + "ClaS1k" ] }, - "Словарь/CRLF": { - "modified": "2019-03-18T21:18:06.376Z", + "Glossary/Origin": { + "modified": "2019-03-23T22:19:26.751Z", "contributors": [ - "alexbs" + "Angelskih" ] }, - "Словарь/CSP": { - "modified": "2020-03-11T16:49:32.227Z", + "Glossary/PHP": { + "modified": "2019-04-14T04:44:20.115Z", "contributors": [ - "almaceleste" + "MDReal32", + "kirill001" ] }, - "Словарь/CSRF": { - "modified": "2019-03-23T22:17:52.593Z", + "Glossary/Pixel": { + "modified": "2019-03-25T09:54:05.591Z", "contributors": [ - "anastasiya-solodkaya" + "boxa6" ] }, - "Словарь/CSS": { - "modified": "2020-11-27T18:16:28.046Z", + "Glossary/Polymorphism": { + "modified": "2019-10-14T05:46:10.620Z", "contributors": [ - "robert491", - "boxa6", - "andreybakhishev", - "oleg3280", - "AlexandrKalaidzhi" + "duckDominatrix" ] }, - "Словарь/CSS_Selector": { - "modified": "2020-12-07T13:33:11.621Z", + "Glossary/Primitive": { + "modified": "2020-02-16T08:27:27.366Z", "contributors": [ - "kucherenkoag", - "DashPisareva" + "vitaminX", + "bsergey", + "aleks43" ] }, - "Словарь/CSS_preprocessor": { - "modified": "2019-03-26T02:52:52.000Z", + "Glossary/privileged_code": { + "modified": "2019-03-23T22:25:30.067Z", "contributors": [ - "boxa6", - "bazoooker" + "pk.prog" ] }, - "Словарь/Call_stack": { - "modified": "2019-03-26T03:35:33.245Z", + "Glossary/Progressive_web_apps": { + "modified": "2020-10-23T07:12:55.057Z", "contributors": [ - "boxa6", - "Dimas-X", - "Iroshh" + "ksam" ] }, - "Словарь/Canvas": { - "modified": "2019-03-18T21:33:34.116Z", + "Glossary/Promise": { + "modified": "2019-05-15T10:24:56.596Z", "contributors": [ - "Lana-Light" + "Mashka241" ] }, - "Словарь/Card_sorting": { - "modified": "2019-09-13T15:24:23.423Z", + "Glossary/property": { + "modified": "2019-03-23T22:15:35.268Z", "contributors": [ - "maXimusIsMyName", - "nova-k" + "mlilin" ] }, - "Словарь/Character": { - "modified": "2019-03-26T03:36:39.039Z", + "Glossary/Prototype-based_programming": { + "modified": "2019-01-16T23:59:58.315Z", "contributors": [ - "boxa6" + "kulakowka", + "SedovDP", + "pk.prog" ] }, - "Словарь/Chrome": { - "modified": "2019-01-16T20:45:50.537Z", + "Glossary/Pseudo-element": { + "modified": "2019-03-18T21:09:36.141Z", "contributors": [ - "Aleksej" + "Mashka241" ] }, - "Словарь/Class": { - "modified": "2019-03-23T22:50:33.763Z", + "Glossary/Pseudocode": { + "modified": "2020-11-25T09:22:15.778Z", "contributors": [ - "ezekeli", - "scanick" + "tetragidrohlorid", + "ConstantineZz" ] }, - "Словарь/Codec": { - "modified": "2019-06-20T09:27:20.089Z", + "Glossary/Reflow": { + "modified": "2020-06-05T09:05:27.984Z", "contributors": [ - "CS313" + "ArturBasak" ] }, - "Словарь/Compile": { - "modified": "2020-08-27T07:13:45.873Z", + "Glossary/Regular_expression": { + "modified": "2019-04-18T02:00:21.122Z", "contributors": [ - "DarkExodusXX" + "eXcuteD" ] }, - "Словарь/Computer_Programming": { - "modified": "2020-02-28T20:10:24.813Z", + "Glossary/Request_header": { + "modified": "2020-03-13T19:20:00.006Z", "contributors": [ - "almaceleste" + "fuggy", + "andrewtk" ] }, - "Словарь/Conditional": { - "modified": "2020-02-28T19:51:16.047Z", + "Glossary/Responsive_web_design": { + "modified": "2019-03-18T21:43:12.877Z", "contributors": [ - "almaceleste" + "KirilSlender" ] }, - "Словарь/Constructor": { - "modified": "2019-03-18T21:40:38.410Z", + "Glossary/Round_Trip_Time_(RTT)": { + "modified": "2019-11-20T06:08:45.669Z", "contributors": [ - "ValeriiBoiko" + "Antosik" ] }, - "Словарь/Cookie": { - "modified": "2019-03-23T22:19:39.272Z", + "Glossary/safe": { + "modified": "2020-08-24T16:48:10.493Z", "contributors": [ - "anastasiya-solodkaya", - "smkoyan" + "dev4lex", + "InfinityBuddha", + "serhii73", + "pk.prog" ] }, - "Словарь/Copyleft": { - "modified": "2019-08-22T15:17:45.253Z", + "Glossary/Scroll_container": { + "modified": "2020-04-24T15:33:30.579Z", "contributors": [ - "regeneratorl" + "hisbvdis" ] }, - "Словарь/Crawler": { - "modified": "2019-10-16T05:50:09.685Z", + "Glossary/SDP": { + "modified": "2019-07-26T09:45:49.928Z", "contributors": [ - "e-h-h" + "Geloosa" ] }, - "Словарь/DNS": { - "modified": "2019-07-09T20:05:30.988Z", + "Glossary/Self-Executing_Anonymous_Function": { + "modified": "2019-03-18T21:20:03.779Z", "contributors": [ - "fuggy" + "Hiker-Hope" ] }, - "Словарь/DOM": { - "modified": "2019-03-23T22:40:33.690Z", + "Glossary/Semantics": { + "modified": "2020-05-29T09:05:50.440Z", "contributors": [ - "tronov", - "MuradAz" + "mriabokliach", + "EternalCosmos" ] }, - "Словарь/DOS_attack": { - "modified": "2019-08-14T18:10:26.015Z", + "Glossary/SEO": { + "modified": "2019-03-23T22:03:24.051Z", "contributors": [ - "Newage3018" + "dictor93" ] }, - "Словарь/Doctype": { - "modified": "2019-10-20T09:56:23.239Z", + "Glossary/Server": { + "modified": "2020-08-16T17:59:50.094Z", "contributors": [ - "alexbs", - "gogumaUno" + "bogatayabaza" ] }, - "Словарь/Domain_name": { - "modified": "2019-03-18T21:25:39.712Z", + "Glossary/SGML": { + "modified": "2020-10-30T05:53:44.653Z", "contributors": [ - "bsergey" + "ksam" ] }, - "Словарь/Dynamic_programming_language": { - "modified": "2019-03-23T22:22:41.086Z", + "Glossary/Simple_response_header": { + "modified": "2020-04-06T22:27:29.080Z", "contributors": [ - "pust0ta", - "thecodecreator" + "sivackovan" ] }, - "Словарь/ECMA": { - "modified": "2019-03-23T22:26:58.025Z", + "Glossary/Sloppy_mode": { + "modified": "2019-01-17T00:16:18.150Z", "contributors": [ "anastasiya-solodkaya", - "werreour" + "pk.prog" ] }, - "Словарь/ECMAScript": { - "modified": "2019-03-23T22:03:14.516Z", + "Glossary/Specification": { + "modified": "2019-03-23T22:19:46.992Z", "contributors": [ - "4erty" + "gogumaUno", + "anastasiya-solodkaya", + "JeanPaulLucien" ] }, - "Словарь/Empty_element": { - "modified": "2020-06-17T07:35:47.736Z", + "Glossary/SVG": { + "modified": "2019-03-18T21:43:05.908Z", "contributors": [ - "fuggy", - "Sheppy", - "Aleksej" + "KirilSlender" ] }, - "Словарь/Encapsulation": { - "modified": "2019-10-15T17:04:32.904Z", + "Glossary/Symbol": { + "modified": "2019-03-23T22:08:34.792Z", "contributors": [ - "duckDominatrix" + "4opper", + "yanakey", + "GRIDARK", + "animhotep", + "neutral" ] }, - "Словарь/Entity_header": { - "modified": "2020-03-13T19:29:42.150Z", + "Glossary/TCP": { + "modified": "2020-03-13T16:54:36.615Z", "contributors": [ "fuggy", - "opereverzeva" + "michael_v92" ] }, - "Словарь/Expando": { - "modified": "2019-03-23T22:25:14.834Z", + "Glossary/time_to_first_byte": { + "modified": "2019-11-20T06:03:31.278Z", "contributors": [ - "Chamie", - "Aksana-Tsishchanka" + "Antosik" ] }, - "Словарь/FPS": { - "modified": "2019-11-19T15:47:44.839Z", + "Glossary/Time_to_interactive": { + "modified": "2019-11-20T05:58:04.636Z", "contributors": [ "Antosik" ] }, - "Словарь/FTP": { - "modified": "2019-03-23T22:56:50.644Z", + "Glossary/TLS": { + "modified": "2019-03-18T20:53:40.382Z", "contributors": [ - "Aleksej" + "vadjradanta" ] }, - "Словарь/Falsy": { - "modified": "2020-02-29T14:01:11.239Z", + "Glossary/Truthy": { + "modified": "2020-08-31T04:11:21.430Z", "contributors": [ + "Dvash", "almaceleste", "Anna-Myzukina" ] }, - "Словарь/First-class_Function": { - "modified": "2019-03-23T22:26:14.132Z", + "Glossary/Type_coercion": { + "modified": "2020-02-29T11:20:13.549Z", "contributors": [ - "s1lver", - "B0dya", - "pk.prog" + "almaceleste" ] }, - "Словарь/First_CPU_idle": { - "modified": "2019-11-20T05:48:47.023Z", + "Glossary/Type_Conversion": { + "modified": "2020-02-29T13:57:43.565Z", "contributors": [ - "Antosik" + "almaceleste" ] }, - "Словарь/First_contentful_paint": { - "modified": "2019-11-20T05:40:40.814Z", + "Glossary/Type": { + "modified": "2020-03-23T07:29:25.211Z", "contributors": [ - "Antosik" + "wentout", + "almaceleste" ] }, - "Словарь/First_input_delay": { - "modified": "2020-11-29T12:51:47.015Z", + "Glossary/UI": { + "modified": "2019-03-31T19:21:03.782Z", "contributors": [ - "BehemothOz", - "Antosik" + "niktariy", + "boxa6" ] }, - "Словарь/First_interactive": { - "modified": "2019-11-20T05:51:30.233Z", + "Glossary/undefined": { + "modified": "2019-03-23T22:59:57.929Z", "contributors": [ - "Antosik" + "Sheppy", + "jaguardev" ] }, - "Словарь/First_paint": { - "modified": "2019-11-20T05:44:29.012Z", + "Glossary/URL": { + "modified": "2019-03-23T22:09:11.858Z", "contributors": [ - "Antosik" + "djigach", + "gadjetron", + "s-mage" ] }, - "Словарь/Flex_Item": { - "modified": "2020-03-08T07:29:42.816Z", + "Glossary/User_agent": { + "modified": "2019-04-09T06:22:31.182Z", "contributors": [ - "Radragon" + "JCodeg", + "fidelman", + "while0pass" ] }, - "Словарь/Flexbox": { - "modified": "2019-03-18T21:33:55.150Z", + "Glossary/Variable": { + "modified": "2019-03-23T22:22:44.135Z", "contributors": [ - "b.zvyagintsev" + "thecodecreator" ] }, - "Словарь/Forbidden_header_name": { - "modified": "2020-11-27T14:27:47.971Z", + "Glossary/Vendor_Prefix": { + "modified": "2020-06-20T15:20:37.026Z", + "contributors": [ + "bushuevky" + ] + }, + "Glossary/Viewport": { + "modified": "2019-09-13T09:25:23.206Z", + "contributors": [ + "deex_iv", + "ozil07" + ] + }, + "Glossary/W3C": { + "modified": "2019-03-23T22:19:42.916Z", "contributors": [ - "robert491", - "Alex90", - "crabovwik", "JeanPaulLucien" ] }, - "Словарь/Gecko": { - "modified": "2019-03-23T22:25:29.241Z", + "Glossary/WAI": { + "modified": "2019-03-18T20:56:13.772Z", "contributors": [ - "pk.prog" + "iamvector" ] }, - "Словарь/General_header": { - "modified": "2020-11-27T15:28:54.047Z", + "Glossary/WebKit": { + "modified": "2020-10-10T22:56:31.647Z", "contributors": [ - "robert491", - "Sergey.Terekhin" + "tz4678", + "Madihander" ] }, - "Словарь/Git": { - "modified": "2019-07-13T19:51:02.847Z", + "Glossary/WebSockets": { + "modified": "2020-03-13T16:54:50.064Z", "contributors": [ "fuggy", - "4erty" + "Sheppy", + "Pavel69" ] }, - "Словарь/Global_object": { - "modified": "2020-01-11T18:59:38.482Z", + "Glossary/WHATWG": { + "modified": "2019-07-07T09:42:47.815Z", "contributors": [ - "Kiryhas" + "fuggy" ] }, - "Словарь/Grid": { - "modified": "2019-09-25T00:37:08.781Z", + "Glossary/World_Wide_Web": { + "modified": "2019-04-10T12:11:00.638Z", "contributors": [ - "Zver64", - "boxa6", - "Paul_Yuhnovich" + "JCodeg", + "boxa6" ] }, - "Словарь/Grid_Column": { - "modified": "2019-09-25T10:04:35.112Z", + "Glossary/Wrapper": { + "modified": "2019-03-23T22:19:46.418Z", "contributors": [ - "ekirpichyov", - "albinasakhabutdinova" + "smkoyan" ] }, - "Словарь/HTML": { - "modified": "2020-10-30T06:06:49.972Z", + "Glossary/XHR_(XMLHttpRequest)": { + "modified": "2020-10-27T09:22:04.704Z", "contributors": [ - "ksam", - "boxa6", - "oleg3280", - "Ananasovich", - "Rod1on", - "NerRox", - "talgautb" + "duckDominatrix" ] }, - "Словарь/HTML5": { - "modified": "2019-03-23T11:50:58.551Z", + "Glossary/XHTML": { + "modified": "2019-03-24T00:04:41.651Z", "contributors": [ - "JCodeg", - "oleg3280", - "VEDigit" + "Sheppy", + "teoli", + "shaman" ] }, - "Словарь/HTTP": { - "modified": "2019-11-07T07:41:21.870Z", + "Glossary/XML": { + "modified": "2019-03-26T03:12:53.364Z", "contributors": [ - "duckDominatrix", - "gadjetron", - "MuradAz" + "boxa6", + "Houstton" ] }, - "Словарь/HTTP_2": { - "modified": "2019-11-06T06:45:14.792Z", + "Glossary/Argument": { + "modified": "2019-05-03T12:07:33.735Z", "contributors": [ - "duckDominatrix", - "e-h-h" + "Lana-Light" ] }, - "Словарь/Host": { - "modified": "2019-03-18T20:56:13.920Z", + "Glossary/Attribute": { + "modified": "2019-01-16T23:17:06.806Z", "contributors": [ - "iamvector" + "anastasiya-solodkaya", + "nikokosh" ] }, - "Словарь/IANA": { - "modified": "2019-03-18T21:36:56.523Z", + "Glossary/buffer": { + "modified": "2019-03-18T21:38:54.270Z", "contributors": [ - "pavelkarinin" + "PavelVolkovRussia", + "ivan-krot" ] }, - "Словарь/ICANN": { - "modified": "2019-03-18T21:36:45.102Z", + "Glossary/Statement": { + "modified": "2019-03-23T22:35:20.625Z", "contributors": [ - "pavelkarinin" + "DashPisareva", + "tronov", + "BychekRU" ] }, - "Словарь/IETF": { - "modified": "2020-10-30T04:28:05.922Z", + "Glossary/High-level_programming_language": { + "modified": "2020-01-06T03:30:38.101Z", "contributors": [ - "ksam" + "LesikTheCat" ] }, - "Словарь/IIFE": { - "modified": "2019-08-02T04:11:30.483Z", + "Glossary/Hypertext": { + "modified": "2019-03-18T21:41:54.496Z", "contributors": [ - "alexbutav", - "zavsievich", - "Hiker-Hope", - "anastasiya-solodkaya", - "TheodoreChe", - "c01nd01r" + "gadjetron" ] }, - "Словарь/IP_Address": { - "modified": "2019-03-18T21:27:42.696Z", + "Glossary/Decryption": { + "modified": "2019-03-18T20:41:22.238Z", "contributors": [ - "Luboshenko" + "Frisle" ] }, - "Словарь/ISO": { - "modified": "2020-10-30T04:04:18.482Z", + "Glossary/Domain": { + "modified": "2019-03-23T22:20:15.133Z", "contributors": [ - "ksam" + "richandhandsomeman" ] }, - "Словарь/Idempotent": { - "modified": "2020-08-24T16:46:00.432Z", + "Glossary/Accessibility": { + "modified": "2019-03-23T22:16:03.534Z", "contributors": [ - "dev4lex", - "snizh", - "pk.prog" + "iamvector", + "ifantom" ] }, - "Словарь/Identifier": { - "modified": "2019-03-23T22:20:02.500Z", + "Glossary/Head": { + "modified": "2019-03-18T21:25:04.199Z", "contributors": [ - "mlilin", - "Kaliukhovich" + "AlexeyIoffe" ] }, - "Словарь/IndexedDB": { - "modified": "2020-09-25T14:17:01.625Z", + "Glossary/Forbidden_response_header_name": { + "modified": "2019-03-18T21:30:41.483Z", "contributors": [ - "swimmwatch" + "crabovwik" ] }, - "Словарь/Information_architecture": { - "modified": "2019-07-02T10:04:49.702Z", + "Glossary/Developer_Tools": { + "modified": "2019-03-18T21:46:30.400Z", "contributors": [ - "wizardbil" + "bazoooker" ] }, - "Словарь/Internet": { - "modified": "2019-06-17T12:53:37.150Z", + "Glossary/ISP": { + "modified": "2019-03-18T21:16:47.489Z", "contributors": [ - "kss555", - "bsergey" + "skapesec" ] }, - "Словарь/JSON": { - "modified": "2019-01-17T00:40:57.677Z", + "Glossary/Constant": { + "modified": "2019-03-23T22:04:38.615Z", "contributors": [ - "ezekeli" + "JorJeG" ] }, - "Словарь/Java": { - "modified": "2019-08-04T18:12:34.992Z", + "Glossary/CIA": { + "modified": "2019-03-23T22:06:38.806Z", "contributors": [ - "angelhearted" + "Morjodrom" ] }, - "Словарь/JavaScript": { - "modified": "2020-10-30T03:58:08.340Z", + "Glossary/Cache": { + "modified": "2019-05-20T15:27:57.334Z", "contributors": [ - "ksam", - "ekirpichyov", - "JCodeg", - "boxa6", - "aleshkanet", - "oleg3280", - "MuradAz", - "silentwasd", - "Sheppy", - "Vovchikb6" + "vanjacksing" ] }, - "Словарь/MIME_type": { - "modified": "2020-04-21T12:17:26.839Z", + "Glossary/array": { + "modified": "2020-01-06T03:28:26.834Z", "contributors": [ - "an5000", - "elvin666666", - "margaritashvetsov", - "ilia-valchenko" + "LesikTheCat", + "sashakrauzer", + "Cyganov" ] }, - "Словарь/Main_Axis": { - "modified": "2020-05-21T13:03:11.807Z", + "Glossary/Metadata": { + "modified": "2019-03-18T21:23:05.612Z", "contributors": [ - "HImichun" + "SoMuchEffort" ] }, - "Словарь/MathML": { - "modified": "2019-03-18T21:19:08.526Z", + "Glossary/Hoisting": { + "modified": "2019-03-23T22:28:46.641Z", "contributors": [ - "bsergey" + "ArtyomResh", + "boldyrev-d", + "anastasiya-solodkaya", + "shkarlet", + "AlexKhram" ] }, - "Словарь/Method": { - "modified": "2020-10-30T06:40:44.910Z", + "Glossary/Port": { + "modified": "2019-03-23T22:26:53.058Z", "contributors": [ - "ksam" + "tim-zh" ] }, - "Словарь/Microsoft_Internet_Explorer": { - "modified": "2019-03-18T21:41:51.997Z", + "Glossary/Whitespace": { + "modified": "2019-04-29T04:51:03.174Z", "contributors": [ - "djigach" + "sergey.bannikov" ] }, - "Словарь/Mixin": { - "modified": "2020-04-09T10:41:29.634Z", + "Glossary/Proxy_server": { + "modified": "2020-10-29T15:29:38.405Z", "contributors": [ - "Drrragonica" + "Rams3ska" ] }, - "Словарь/Node.js": { - "modified": "2019-03-23T22:28:12.455Z", + "Glossary/Simple_header": { + "modified": "2019-03-18T21:32:57.580Z", "contributors": [ - "tim-zh", - "nikokosh" + "Skinny-Hunter" ] }, - "Словарь/Null": { - "modified": "2020-03-23T08:30:22.000Z", + "Glossary/Protocol": { + "modified": "2019-03-18T21:36:48.161Z", "contributors": [ - "wentout", - "tim-zh" + "reksar" ] }, - "Словарь/Number": { - "modified": "2019-03-23T22:59:57.277Z", + "Glossary/Prototype": { + "modified": "2019-03-23T22:22:22.879Z", "contributors": [ - "Sheppy", - "jaguardev" + "cezsored" ] }, - "Словарь/OOP": { - "modified": "2019-03-18T21:40:42.132Z", + "Glossary/Certified": { + "modified": "2019-03-18T20:41:22.573Z", "contributors": [ - "ValeriiBoiko" + "Frisle" ] }, - "Словарь/Object": { - "modified": "2019-03-23T22:22:47.659Z", + "Glossary/Synchronous": { + "modified": "2020-09-18T11:00:03.984Z", "contributors": [ - "bsergey", - "haacki47" + "victortemnov", + "jeniasaigak" ] }, - "Словарь/OpenGL": { - "modified": "2019-11-14T05:58:50.039Z", + "Glossary/Static_typing": { + "modified": "2019-08-04T18:24:12.862Z", "contributors": [ - "ClaS1k" + "angelhearted" ] }, - "Словарь/PHP": { - "modified": "2019-04-14T04:44:20.115Z", + "Glossary/String": { + "modified": "2019-03-23T22:43:22.623Z", "contributors": [ - "MDReal32", - "kirill001" + "anastasiya-solodkaya", + "arturparkhisenko" ] }, - "Словарь/Pixel": { - "modified": "2019-03-25T09:54:05.591Z", + "Glossary/Entity": { + "modified": "2019-04-29T04:00:32.874Z", "contributors": [ - "boxa6" + "sergey.bannikov" ] }, - "Словарь/Polymorphism": { - "modified": "2019-10-14T05:46:10.620Z", + "Glossary/Tag": { + "modified": "2019-03-23T22:18:08.637Z", "contributors": [ - "duckDominatrix" + "skapesec", + "AKonia" ] }, - "Словарь/Primitive": { - "modified": "2020-02-16T08:27:27.366Z", + "Glossary/Callback_function": { + "modified": "2019-03-18T21:32:02.443Z", "contributors": [ - "vitaminX", - "bsergey", - "aleks43" + "jeniasaigak" ] }, - "Словарь/Progressive_web_apps": { - "modified": "2020-10-23T07:12:55.057Z", + "Glossary/Function": { + "modified": "2019-03-23T22:38:18.825Z", "contributors": [ - "ksam" + "MuradAz" ] }, - "Словарь/Promise": { - "modified": "2019-05-15T10:24:56.596Z", + "Glossary/hash": { + "modified": "2019-03-23T22:13:59.337Z", "contributors": [ - "Mashka241" + "RealRedFox" ] }, - "Словарь/Prototype-based_programming": { - "modified": "2019-01-16T23:59:58.315Z", + "Glossary/Element": { + "modified": "2019-03-18T21:38:41.974Z", "contributors": [ - "kulakowka", - "SedovDP", - "pk.prog" + "skapesec", + "kayablue" ] }, - "Словарь/Pseudo-element": { - "modified": "2019-03-18T21:09:36.141Z", + "orphaned/Создание_расширения_для_Firefox_с_использованием_Mozilla_Build_System": { + "modified": "2019-01-16T16:11:17.475Z", "contributors": [ - "Mashka241" + "Kwinto", + "S e r g e y r" ] }, - "Словарь/Pseudocode": { - "modified": "2020-11-25T09:22:15.778Z", + "orphaned/Создание_расширения": { + "modified": "2019-03-24T00:02:37.950Z", "contributors": [ - "tetragidrohlorid", - "ConstantineZz" + "kaifonaft", + "teoli", + "kup", + "fscholz", + "Tmax", + "Yozh88" ] }, - "Словарь/Reflow": { - "modified": "2020-06-05T09:05:27.984Z", + "orphaned/Создание_расширения/Настройка_Firefox_для_разработки_расширений": { + "modified": "2019-03-23T23:59:36.564Z", "contributors": [ - "ArturBasak" + "Protopopulus" ] }, - "Словарь/Regular_expression": { - "modified": "2019-04-18T02:00:21.122Z", + "orphaned/Создание_расширения/Настройка_Firefox_для_разработки": { + "modified": "2019-03-23T23:59:35.072Z", "contributors": [ - "eXcuteD" + "Protopopulus" ] }, - "Словарь/Request_header": { - "modified": "2020-03-13T19:20:00.006Z", + "orphaned/Справочная_информация_по_Gecko_DOM": { + "modified": "2019-01-16T16:08:57.530Z", "contributors": [ - "fuggy", - "andrewtk" + "Megapotz" ] }, - "Словарь/Responsive_web_design": { - "modified": "2019-03-18T21:43:12.877Z", + "orphaned/Справочная_информация_по_Gecko_DOM/Введение": { + "modified": "2019-03-24T00:04:55.948Z", "contributors": [ - "KirilSlender" + "ivaskonyan", + "arturparkhisenko", + "T-V-N", + "Paul_Yuhnovich", + "arunpandianp", + "ethertank", + "shaman" ] }, - "Словарь/Round_Trip_Time_(RTT)": { - "modified": "2019-11-20T06:08:45.669Z", + "orphaned/Справочная_информация_по_Gecko_DOM/Предисловие": { + "modified": "2019-03-23T23:44:43.352Z", "contributors": [ - "Antosik" + "marat-curious", + "Megapotz" ] }, - "Словарь/SDP": { - "modified": "2019-07-26T09:45:49.928Z", + "orphaned/Справочная_информация_по_Gecko_DOM/Примеры": { + "modified": "2019-01-16T14:46:48.913Z", "contributors": [ - "Geloosa" + "Sheppy", + "abba7" ] }, - "Словарь/SEO": { - "modified": "2019-03-23T22:03:24.051Z", + "orphaned/Темы": { + "modified": "2019-01-16T14:53:24.105Z", "contributors": [ - "dictor93" + "teoli", + "glukin" ] }, - "Словарь/SGML": { - "modified": "2020-10-30T05:53:44.653Z", + "conflicting/Glossary/Chrome": { + "modified": "2019-03-23T23:17:01.096Z", "contributors": [ - "ksam" + "Norville", + "LunaticRL" ] }, - "Словарь/SVG": { - "modified": "2019-03-18T21:43:05.908Z", + "conflicting/Web/API/Document_Object_Model": { + "modified": "2019-06-25T10:49:54.010Z", "contributors": [ - "KirilSlender" + "ethertank", + "Megapotz" ] }, - "Словарь/Scroll_container": { - "modified": "2020-04-24T15:33:30.579Z", + "Mozilla/Developer_guide/Introduction": { + "modified": "2019-03-23T23:38:23.548Z", "contributors": [ - "hisbvdis" + "Nick_Pershin", + "greybax" ] }, - "Словарь/Self-Executing_Anonymous_Function": { - "modified": "2019-03-18T21:20:03.779Z", + "conflicting/Learn/CSS/Building_blocks/Selectors": { + "modified": "2020-07-16T22:25:39.788Z", "contributors": [ - "Hiker-Hope" + "sviter" ] }, - "Словарь/Semantics": { - "modified": "2020-05-29T09:05:50.440Z", + "conflicting/MDN/Tools": { + "modified": "2019-01-16T19:44:47.259Z", "contributors": [ - "mriabokliach", - "EternalCosmos" + "wbamberg", + "Mingun" ] }, - "Словарь/Server": { - "modified": "2020-08-16T17:59:50.094Z", + "conflicting/Tools/Performance": { + "modified": "2020-07-16T22:35:29.176Z", "contributors": [ - "bogatayabaza" + "wbamberg", + "CamelFoe" ] }, - "Словарь/Simple_response_header": { - "modified": "2020-04-06T22:27:29.080Z", + "conflicting/Mozilla/Firefox/Releases": { + "modified": "2020-07-16T22:35:57.039Z", "contributors": [ - "sivackovan" + "wbamberg", + "dimon4ezzz", + "Aleksej", + "uleming" ] }, - "Словарь/Sloppy_mode": { - "modified": "2019-01-17T00:16:18.150Z", + "conflicting/Web/Guide/Mobile": { + "modified": "2019-03-23T23:27:06.077Z", "contributors": [ - "anastasiya-solodkaya", - "pk.prog" + "wbamberg" ] }, - "Словарь/Specification": { - "modified": "2019-03-23T22:19:46.992Z", + "conflicting/Web/Progressive_web_apps": { + "modified": "2019-03-23T23:27:07.759Z", "contributors": [ - "gogumaUno", - "anastasiya-solodkaya", - "JeanPaulLucien" + "ArsenBespalov" ] }, - "Словарь/Symbol": { - "modified": "2019-03-23T22:08:34.792Z", + "conflicting/Web/Accessibility": { + "modified": "2019-03-23T22:57:21.133Z", "contributors": [ - "4opper", - "yanakey", - "GRIDARK", - "animhotep", - "neutral" + "Aleksej" ] }, - "Словарь/TCP": { - "modified": "2020-03-13T16:54:36.615Z", + "Web/API/DocumentOrShadowRoot/activeElement": { + "modified": "2019-03-23T23:07:52.737Z", "contributors": [ - "fuggy", - "michael_v92" + "wbamberg", + "fscholz", + "mrDinckleman", + "my8bit" ] }, - "Словарь/TLS": { - "modified": "2019-03-18T20:53:40.382Z", + "Web/API/DocumentOrShadowRoot/getSelection": { + "modified": "2019-03-23T22:34:05.751Z", "contributors": [ - "vadjradanta" + "YakovL" ] }, - "Словарь/Time_to_interactive": { - "modified": "2019-11-20T05:58:04.636Z", + "Web/API/HTMLElement/accessKey": { + "modified": "2019-03-23T22:51:14.902Z", "contributors": [ - "Antosik" + "In4in" ] }, - "Словарь/Truthy": { - "modified": "2020-08-31T04:11:21.430Z", + "conflicting/Web/API/EventTarget/addEventListener": { + "modified": "2020-12-08T04:43:39.858Z", "contributors": [ - "Dvash", - "almaceleste", - "Anna-Myzukina" + "bershanskiy", + "akrom123", + "paulvoloschuk" ] }, - "Словарь/Type": { - "modified": "2020-03-23T07:29:25.211Z", + "conflicting/Web/API/EventTarget/removeEventListener": { + "modified": "2019-03-23T22:07:41.302Z", "contributors": [ - "wentout", - "almaceleste" + "paulvoloschuk" ] }, - "Словарь/Type_Conversion": { - "modified": "2020-02-29T13:57:43.565Z", + "conflicting/Web/API/Geolocation": { + "modified": "2019-03-23T22:43:32.725Z", "contributors": [ - "almaceleste" + "AlexAlex" ] }, - "Словарь/Type_coercion": { - "modified": "2020-02-29T11:20:13.549Z", + "conflicting/Web/API/Node": { + "modified": "2019-03-23T22:53:30.789Z", "contributors": [ - "almaceleste" + "AlexAlex" ] }, - "Словарь/UI": { - "modified": "2019-03-31T19:21:03.782Z", + "conflicting/Web/API/Node_378aed5ed6869e50853edbc988cf9556": { + "modified": "2019-03-23T22:53:31.496Z", "contributors": [ - "niktariy", - "boxa6" + "AlexAlex" ] }, - "Словарь/URL": { - "modified": "2019-03-23T22:09:11.858Z", + "conflicting/Web/API/Push_API": { + "modified": "2019-03-23T22:33:26.535Z", "contributors": [ - "djigach", - "gadjetron", - "s-mage" + "vasyan", + "zvadym", + "curdwithraisins", + "amutylo", + "alfaslash" ] }, - "Словарь/User_agent": { - "modified": "2019-04-09T06:22:31.182Z", + "conflicting/Web/API/Crypto/getRandomValues": { + "modified": "2019-07-04T02:33:27.227Z", "contributors": [ - "JCodeg", - "fidelman", - "while0pass" + "freezer278", + "Jeremie" ] }, - "Словарь/Variable": { - "modified": "2019-03-23T22:22:44.135Z", + "conflicting/Web/API/Element": { + "modified": "2020-10-15T22:17:53.998Z", "contributors": [ - "thecodecreator" + "opereverzeva" ] }, - "Словарь/Vendor_Prefix": { - "modified": "2020-06-20T15:20:37.026Z", + "conflicting/Web/API/Window/localStorage": { + "modified": "2019-03-23T22:05:00.067Z", "contributors": [ - "bushuevky" + "ZVanoZ" ] }, - "Словарь/Viewport": { - "modified": "2019-09-13T09:25:23.206Z", + "conflicting/Web/API/SVGAElement/target": { + "modified": "2019-03-18T21:45:46.517Z", "contributors": [ - "deex_iv", - "ozil07" + "Liubava77" ] }, - "Словарь/W3C": { - "modified": "2019-03-23T22:19:42.916Z", + "conflicting/Web/API/WebRTC_API/Signaling_and_video_calling": { + "modified": "2020-11-01T04:44:10.388Z", "contributors": [ - "JeanPaulLucien" + "mechtool", + "kostya-skr", + "coderxone" ] }, - "Словарь/WAI": { - "modified": "2019-03-18T20:56:13.772Z", + "conflicting/Web/API/WindowOrWorkerGlobalScope": { + "modified": "2019-03-23T22:50:51.451Z", "contributors": [ - "iamvector" + "teoli" ] }, - "Словарь/WHATWG": { - "modified": "2019-07-07T09:42:47.815Z", + "conflicting/Web/API/WindowOrWorkerGlobalScope_e2691f7ad05781a30c5fc5bb3b3f633a": { + "modified": "2019-03-23T23:01:38.088Z", "contributors": [ - "fuggy" + "fscholz" ] }, - "Словарь/WebKit": { - "modified": "2020-10-10T22:56:31.647Z", + "conflicting/Web/CSS/:is": { + "modified": "2019-03-23T22:39:12.816Z", "contributors": [ - "tz4678", - "Madihander" + "BychekRU", + "JhonyLe" ] }, - "Словарь/WebSockets": { - "modified": "2020-03-13T16:54:50.064Z", + "conflicting/Web/CSS/@viewport": { + "modified": "2019-03-23T22:21:08.056Z", "contributors": [ - "fuggy", - "Sheppy", - "Pavel69" + "Hydrock" ] }, - "Словарь/World_Wide_Web": { - "modified": "2019-04-10T12:11:00.638Z", + "Web/CSS/CSS_Backgrounds_and_Borders": { + "modified": "2019-03-23T22:40:44.971Z", "contributors": [ - "JCodeg", - "boxa6" + "teoli" ] }, - "Словарь/Wrapper": { - "modified": "2019-03-23T22:19:46.418Z", + "Web/CSS/CSS_Backgrounds_and_Borders/Using_multiple_backgrounds": { + "modified": "2019-03-23T22:13:04.810Z", "contributors": [ - "smkoyan" + "J-N-Z" ] }, - "Словарь/XHR_(XMLHttpRequest)": { - "modified": "2020-10-27T09:22:04.704Z", + "Web/CSS/CSS_Color": { + "modified": "2019-03-23T22:34:30.410Z", "contributors": [ - "duckDominatrix" + "BychekRU", + "Krenair" ] }, - "Словарь/XHTML": { - "modified": "2019-03-24T00:04:41.651Z", + "conflicting/Web/CSS/CSS_Flexible_Box_Layout/Basic_Concepts_of_Flexbox": { + "modified": "2019-09-25T09:43:14.453Z", "contributors": [ - "Sheppy", - "teoli", - "shaman" + "RomanBush", + "billlater", + "KadirTopal", + "DmitriyPoltavskiy", + "MrDaedra", + "antenko", + "dixiony", + "SKaznadei", + "iamale" ] }, - "Словарь/XML": { - "modified": "2019-03-26T03:12:53.364Z", + "conflicting/Web/CSS/CSS_Basic_User_Interface": { + "modified": "2019-03-23T22:05:55.155Z", "contributors": [ - "boxa6", - "Houstton" + "SphinxKnight", + "ExE-Boss", + "mfluehr" ] }, - "Словарь/application_context": { - "modified": "2019-03-18T21:33:46.218Z", + "conflicting/Web/CSS/url()": { + "modified": "2020-04-29T08:14:17.353Z", "contributors": [ - "bsergey", - "Lana-Light" + "podocenov" ] }, - "Словарь/baseline": { - "modified": "2020-08-27T06:37:10.071Z", + "conflicting/Web/CSS/gap": { + "modified": "2020-10-15T22:05:04.554Z", "contributors": [ - "DarkExodusXX" + "oxmap", + "slychai85" ] }, - "Словарь/cacheable": { - "modified": "2019-03-23T22:25:05.632Z", + "conflicting/Web/CSS/url()_168028c4e5edd9e19c061adb4b604d4f": { + "modified": "2020-10-15T22:16:56.689Z", "contributors": [ - "vykulakov", - "pk.prog" + "opereverzeva", + "AliaksandrZahorski" ] }, - "Словарь/character_encoding": { - "modified": "2019-11-23T10:06:58.821Z", + "conflicting/Web/API/HTMLMediaElement/abort_event": { + "modified": "2019-04-30T14:17:57.211Z", "contributors": [ - "Igor-Sangin" + "wbamberg", + "Corba", + "fscholz", + "e-omo" ] }, - "Словарь/data_structure": { - "modified": "2019-03-23T22:40:22.188Z", + "conflicting/Web/API/Document_Object_Model_dd00a71ceceac547ab464128db6bd8ef": { + "modified": "2019-09-02T16:41:36.691Z", "contributors": [ - "alitskevich" + "NiroWoolf", + "Jeremie" ] }, - "Словарь/event": { - "modified": "2019-08-19T18:18:09.165Z", + "conflicting/Web/API/Web_Storage_API": { + "modified": "2019-03-23T23:13:28.239Z", "contributors": [ - "regeneratorl" + "Steln", + "akhabibullina" ] }, - "Словарь/first_meaningful_paint": { - "modified": "2019-11-19T16:13:59.472Z", + "conflicting/Web/API/WebRTC_API": { + "modified": "2019-03-23T22:34:55.398Z", "contributors": [ - "Antosik" + "MoksS", + "franzy1709" ] }, - "Словарь/global_variable": { - "modified": "2019-06-28T05:46:29.060Z", + "conflicting/Learn/CSS/Building_blocks/Cascade_and_inheritance": { + "modified": "2019-03-23T22:51:54.874Z", "contributors": [ - "OlehRula" + "Tankerxyz", + "BychekRU", + "F-302", + "sofiaglynyana" ] }, - "Словарь/https": { - "modified": "2019-01-17T02:14:25.160Z", + "conflicting/Learn/CSS/Building_blocks/Values_and_units": { + "modified": "2019-03-23T22:31:38.617Z", "contributors": [ - "bazoooker", - "dzandut" + "TuchaNK" ] }, - "Словарь/jQuery": { - "modified": "2020-11-17T03:47:58.520Z", + "conflicting/Learn/CSS/First_steps/How_CSS_works": { + "modified": "2019-03-18T21:17:13.180Z", "contributors": [ - "SphinxKnight", - "annamolodcova1909", - "Sparks" + "BychekRU", + "F-302" ] }, - "Словарь/jpeg": { - "modified": "2019-03-18T21:38:25.986Z", + "conflicting/Learn/CSS/First_steps": { + "modified": "2019-03-23T23:09:39.395Z", "contributors": [ - "kayablue" + "BychekRU", + "Aleksej", + "frontgirl", + "wjinca" ] }, - "Словарь/loop": { - "modified": "2020-02-28T13:59:22.366Z", + "conflicting/Learn/CSS/First_steps/How_CSS_is_structured": { + "modified": "2019-03-23T22:49:44.377Z", "contributors": [ - "almaceleste" + "Svart", + "F-302", + "Crystal" ] }, - "Словарь/origin": { - "modified": "2019-03-23T22:19:26.751Z", + "conflicting/Learn/CSS/Building_blocks/Selectors_918fb6c37a4d06789bc062c48d591992": { + "modified": "2020-02-28T21:44:59.981Z", "contributors": [ - "Angelskih" + "nkaskov", + "SergeyNikolaev70", + "1cprog", + "Tankerxyz", + "BigBond", + "mztrp", + "tnt4brain" ] }, - "Словарь/privileged_code": { - "modified": "2019-03-23T22:25:30.067Z", + "conflicting/Learn/CSS/Styling_text/Fundamentals": { + "modified": "2019-03-23T22:31:35.056Z", "contributors": [ - "pk.prog" + "DKas", + "TuchaNK" ] }, - "Словарь/property": { - "modified": "2019-03-23T22:15:35.268Z", + "conflicting/Learn/CSS/First_steps/How_CSS_works_b66915031fb62b5fee1201086144e209": { + "modified": "2019-10-10T16:46:49.900Z", "contributors": [ - "mlilin" + "gleb-svitelskiy", + "BychekRU", + "Aleksej", + "frontgirl" ] }, - "Словарь/safe": { - "modified": "2020-08-24T16:48:10.493Z", + "conflicting/Learn/CSS/First_steps/How_CSS_works_64ba4331a7a5f4319c6e06b06ccdd521": { + "modified": "2019-03-23T22:33:27.543Z", "contributors": [ - "dev4lex", - "InfinityBuddha", - "serhii73", - "pk.prog" + "BychekRU", + "F-302" ] }, - "Словарь/time_to_first_byte": { - "modified": "2019-11-20T06:03:31.278Z", + "conflicting/Learn/CSS/Building_blocks/Styling_tables": { + "modified": "2019-03-23T23:09:44.945Z", "contributors": [ - "Antosik" + "BychekRU", + "ldone" ] }, - "Словарь/undefined": { - "modified": "2019-03-23T22:59:57.929Z", + "conflicting/Learn/CSS": { + "modified": "2019-09-11T09:43:50.277Z", "contributors": [ - "Sheppy", - "jaguardev" + "SphinxKnight", + "Aleksej", + "vtambourine", + "KrishnaKevalam", + "jswisher" ] }, - "Словарь/Аргумент": { - "modified": "2019-05-03T12:07:33.735Z", + "conflicting/Web/Media/Formats": { + "modified": "2019-03-23T22:40:43.218Z", "contributors": [ - "Lana-Light" + "SedovDP", + "a-goodwin", + "PPerminov", + "MuradAz" ] }, - "Словарь/Атрибут": { - "modified": "2019-01-16T23:17:06.806Z", + "conflicting/Web/HTTP/CORS": { + "modified": "2019-07-16T07:11:05.759Z", "contributors": [ - "anastasiya-solodkaya", - "nikokosh" + "curdwithraisins" ] }, - "Словарь/Буфер": { - "modified": "2019-03-18T21:38:54.270Z", + "conflicting/Web/JavaScript/Guide/Introduction": { + "modified": "2019-05-16T15:03:00.750Z", "contributors": [ - "PavelVolkovRussia", - "ivan-krot" + "wbamberg", + "BychekRU", + "fscholz", + "teoli", + "smfd", + "uleming" ] }, - "Словарь/Выражение": { - "modified": "2019-03-23T22:35:20.625Z", + "conflicting/Web/JavaScript/Guide/Introduction_6f341ba6db4b060ccbd8dce4a0d5214b": { + "modified": "2019-05-16T14:33:41.396Z", "contributors": [ - "DashPisareva", - "tronov", - "BychekRU" + "wbamberg", + "ivan.p", + "fscholz", + "teoli", + "smfd", + "uleming" ] }, - "Словарь/Высокоуровневый_язык_программированияprogramming_language": { - "modified": "2020-01-06T03:30:38.101Z", + "conflicting/Web/JavaScript/Guide": { + "modified": "2019-03-23T23:06:22.825Z", "contributors": [ - "LesikTheCat" + "wbamberg", + "warsan", + "AlexChuev", + "razarusu" ] }, - "Словарь/Гипертекст": { - "modified": "2019-03-18T21:41:54.496Z", + "conflicting/Learn/JavaScript/Objects": { + "modified": "2019-06-04T15:16:30.349Z", "contributors": [ - "gadjetron" + "MiishaG", + "Trubochkin", + "MefistofelUgur", + "rockad", + "susov", + "movasyl", + "forestbird", + "hydrognomik", + "RayzRazko", + "Leo240", + "impetuhant", + "Saviloff", + "VolodymyrKr", + "iegik" ] }, - "Словарь/Дешифрование": { - "modified": "2019-03-18T20:41:22.238Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/Boolean": { + "modified": "2019-03-23T23:08:22.785Z", "contributors": [ - "Frisle" + "Mingun" ] }, - "Словарь/Домен": { - "modified": "2019-03-23T22:20:15.133Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/Date": { + "modified": "2020-02-07T02:50:13.993Z", "contributors": [ - "richandhandsomeman" + "alexbs", + "deepdarkness", + "Mingun" ] }, - "Словарь/Доступность": { - "modified": "2019-03-23T22:16:03.534Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/Error": { + "modified": "2019-03-23T23:08:50.114Z", "contributors": [ - "iamvector", - "ifantom" + "rinbik", + "Mingun" ] }, - "Словарь/Заголовок": { - "modified": "2019-03-18T21:25:04.199Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/EvalError": { + "modified": "2019-03-23T23:08:32.207Z", "contributors": [ - "AlexeyIoffe" + "Mingun" ] }, - "Словарь/Запрещённое_имя_заголовка_ответа": { - "modified": "2019-03-18T21:30:41.483Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/Function": { + "modified": "2019-03-24T00:03:59.291Z", "contributors": [ - "crabovwik" + "Devinora", + "pk.prog", + "Mingun", + "teoli", + "fscholz", + "Skorney" ] }, - "Словарь/Инструменты_разработчика": { - "modified": "2019-03-18T21:46:30.400Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/GeneratorFunction": { + "modified": "2020-10-15T22:22:51.990Z", "contributors": [ - "bazoooker" + "ekirpichyov" ] }, - "Словарь/Интернет-провайдер": { - "modified": "2019-03-18T21:16:47.489Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/InternalError": { + "modified": "2019-03-23T23:08:27.124Z", "contributors": [ - "skapesec" + "Mingun" ] }, - "Словарь/КЦД": { - "modified": "2019-03-23T22:06:38.806Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/Intl/Collator": { + "modified": "2020-04-21T07:27:03.529Z", "contributors": [ - "Morjodrom" + "fscholz", + "Mingun" ] }, - "Словарь/Константа": { - "modified": "2019-03-23T22:04:38.615Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat": { + "modified": "2020-04-21T09:00:46.875Z", "contributors": [ - "JorJeG" + "fscholz", + "Mingun" ] }, - "Словарь/Кэш": { - "modified": "2019-05-20T15:27:57.334Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat": { + "modified": "2020-04-21T09:08:23.861Z", "contributors": [ - "vanjacksing" + "fscholz", + "Mingun" ] }, - "Словарь/Массив": { - "modified": "2020-01-06T03:28:26.834Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/Map": { + "modified": "2019-04-17T08:32:17.620Z", "contributors": [ - "LesikTheCat", - "sashakrauzer", - "Cyganov" + "craby-c", + "SphinxKnight", + "Grinv" ] }, - "Словарь/Метаданные": { - "modified": "2019-03-18T21:23:05.612Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/Number": { + "modified": "2019-03-23T23:08:18.833Z", "contributors": [ - "SoMuchEffort" + "Mingun" ] }, - "Словарь/Поднятие": { - "modified": "2019-03-23T22:28:46.641Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/Object": { + "modified": "2020-03-13T11:04:21.413Z", "contributors": [ - "ArtyomResh", - "boldyrev-d", - "anastasiya-solodkaya", - "shkarlet", - "AlexKhram" + "fishr-flash", + "AMurkin", + "Mingun", + "teoli", + "kreshikhin" ] }, - "Словарь/Порт": { - "modified": "2019-03-23T22:26:53.058Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/Promise": { + "modified": "2019-10-16T18:35:40.649Z", "contributors": [ - "tim-zh" + "tsimafey", + "viosng", + "alexicum", + "AlexKhram" ] }, - "Словарь/Пробельные_символы": { - "modified": "2019-04-29T04:51:03.174Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/Proxy/Proxy": { + "modified": "2020-11-18T06:44:17.889Z", "contributors": [ - "sergey.bannikov" + "kosarev_va", + "SphinxKnight" ] }, - "Словарь/Прокси_сервер": { - "modified": "2020-10-29T15:29:38.405Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/RangeError": { + "modified": "2019-03-23T23:08:28.689Z", "contributors": [ - "Rams3ska" + "Mingun" ] }, - "Словарь/Простой_заголовок": { - "modified": "2019-03-18T21:32:57.580Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/ReferenceError": { + "modified": "2019-03-23T23:08:22.399Z", "contributors": [ - "Skinny-Hunter" + "Mingun" ] }, - "Словарь/Протокол": { - "modified": "2019-03-18T21:36:48.161Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/RegExp": { + "modified": "2019-03-23T23:05:56.982Z", "contributors": [ - "reksar" + "Mingun" ] }, - "Словарь/Прототип": { - "modified": "2019-03-23T22:22:22.879Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/Set": { + "modified": "2020-10-15T22:08:32.198Z", "contributors": [ - "cezsored" + "AndreyGlyan", + "qqwweeaassdd", + "paramoshkinandrew" ] }, - "Словарь/Сертифицировано": { - "modified": "2019-03-18T20:41:22.573Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/String": { + "modified": "2019-08-27T15:11:15.337Z", "contributors": [ - "Frisle" + "Yialo", + "EugeneTarasenko", + "ukrlex01", + "arctic-hare", + "webnarmin", + "Mingun" ] }, - "Словарь/Синхронный": { - "modified": "2020-09-18T11:00:03.984Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/Symbol": { + "modified": "2019-03-23T22:50:51.135Z", "contributors": [ - "victortemnov", - "jeniasaigak" + "SphinxKnight", + "neutral" ] }, - "Словарь/Статическая_типизация": { - "modified": "2019-08-04T18:24:12.862Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/SyntaxError": { + "modified": "2019-03-23T23:08:31.199Z", "contributors": [ - "angelhearted" + "Mingun" ] }, - "Словарь/Строка": { - "modified": "2019-03-23T22:43:22.623Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/TypedArray": { + "modified": "2020-10-15T21:49:43.029Z", "contributors": [ - "anastasiya-solodkaya", - "arturparkhisenko" + "pk.prog" ] }, - "Словарь/Сущности": { - "modified": "2019-04-29T04:00:32.874Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/TypeError": { + "modified": "2019-03-23T23:08:29.800Z", "contributors": [ - "sergey.bannikov" + "Mingun" ] }, - "Словарь/Тег": { - "modified": "2019-03-23T22:18:08.637Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/URIError": { + "modified": "2019-03-23T23:08:26.327Z", "contributors": [ - "skapesec", - "AKonia" + "Mingun" ] }, - "Словарь/Функция": { - "modified": "2019-03-23T22:38:18.825Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/WeakMap": { + "modified": "2020-10-15T22:08:59.129Z", "contributors": [ - "MuradAz" + "kan.a" ] }, - "Словарь/Элемент": { - "modified": "2019-03-18T21:38:41.974Z", + "conflicting/Web/JavaScript/Reference/Global_Objects/WeakSet": { + "modified": "2019-03-23T22:33:26.886Z", "contributors": [ - "skapesec", - "kayablue" + "stRavens" ] }, - "Словарь/функция_обратного_вызова": { - "modified": "2019-03-18T21:32:02.443Z", + "conflicting/Web/JavaScript/Reference/Operators": { + "modified": "2020-10-15T21:14:39.538Z", "contributors": [ - "jeniasaigak" + "Nichon4", + "fscholz", + "wbamberg", + "MedvedevWeb", + "kachid", + "shark_ate_my_shorts", + "ktsabolov", + "BychekRU", + "Anthelion", + "Aleksej", + "teoli", + "Dionys", + "karasiov" ] }, - "Словарь/хеш": { - "modified": "2019-03-23T22:13:59.337Z", + "conflicting/Web/JavaScript/Reference/Operators_8d54701de06af40a7c984517cbe87b3e": { + "modified": "2020-03-12T19:39:48.712Z", "contributors": [ - "RealRedFox" + "JasonRammoray", + "Piterden", + "Siteograf", + "AlexChuev", + "dtretyakov", + "SphinxKnight", + "BurkovBA" ] }, - "Создание_расширения": { - "modified": "2019-03-24T00:02:37.950Z", + "conflicting/Web/JavaScript/Reference/Operators_7c8eb9475d97a4a734c5991857698560": { + "modified": "2020-03-12T19:37:00.110Z", "contributors": [ - "kaifonaft", - "teoli", - "kup", + "CoruNethron", + "kss555", + "joezavtra", + "d1soft", + "byshik", + "AlekKras", + "angyvolin", + "artem328", + "goodwin64", + "tselishev-semen", + "dtretyakov", "fscholz", - "Tmax", - "Yozh88" + "teoli", + "karasiov" ] }, - "Создание_расширения/Настройка_Firefox_для_разработки": { - "modified": "2019-03-23T23:59:35.072Z", + "conflicting/Web/JavaScript/Reference/Operators_843c998343f0cdaa5699874c806d4cea": { + "modified": "2020-03-12T19:42:07.763Z", "contributors": [ - "Protopopulus" + "Coo1Cmd", + "BychekRU", + "Frenk1", + "alexbaumgertner", + "SergeyShpak" ] }, - "Создание_расширения/Настройка_Firefox_для_разработки_расширений": { - "modified": "2019-03-23T23:59:36.564Z", + "conflicting/Web/JavaScript/Reference/Operators_69135a8d5772f8b6e45265523df05d89": { + "modified": "2020-09-29T02:39:38.965Z", "contributors": [ - "Protopopulus" + "nikolasmelui", + "X7Becka", + "nakhodkiin", + "BychekRU", + "nbaksalyar", + "CatWhoCode" ] }, - "Создание_расширения_для_Firefox_с_использованием_Mozilla_Build_System": { - "modified": "2019-01-16T16:11:17.475Z", + "conflicting/Web/JavaScript/Reference/Statements/switch": { + "modified": "2020-10-15T21:54:01.294Z", "contributors": [ - "Kwinto", - "S e r g e y r" + "ekirpichyov", + "AntonPtitsyn" ] }, - "Справочная_информация_по_Gecko_DOM": { - "modified": "2019-01-16T16:08:57.530Z", + "conflicting/Web/Progressive_web_apps_628955cdadd77b10ec99de034fc76374": { + "modified": "2019-03-18T20:52:07.177Z", "contributors": [ - "Megapotz" + "chrisdavidmills", + "ruslan_g02" ] }, - "Справочная_информация_по_Gecko_DOM/Введение": { - "modified": "2019-03-24T00:04:55.948Z", + "conflicting/Web/HTTP/CSP": { + "modified": "2019-03-23T23:04:20.797Z", "contributors": [ - "ivaskonyan", - "arturparkhisenko", - "T-V-N", - "Paul_Yuhnovich", - "arunpandianp", - "ethertank", - "shaman" + "sivashev", + "Aleksej", + "Tihoem" ] }, - "Справочная_информация_по_Gecko_DOM/Предисловие": { - "modified": "2019-03-23T23:44:43.352Z", + "conflicting/Web/API": { + "modified": "2019-03-25T10:51:55.253Z", "contributors": [ - "marat-curious", - "Megapotz" + "boxa6", + "andreybakhishev", + "wbamberg", + "fscholz", + "Cyemka" ] }, - "Справочная_информация_по_Gecko_DOM/Примеры": { - "modified": "2019-01-16T14:46:48.913Z", + "conflicting/Web/Guide": { + "modified": "2019-03-24T00:00:53.915Z", "contributors": [ - "Sheppy", - "abba7" + "Dionys" ] }, - "Темы": { - "modified": "2019-01-16T14:53:24.105Z", + "conflicting/Web/API/Document_Object_Model_5521049528397035462607d58539e0cc": { + "modified": "2019-06-25T10:49:44.957Z", "contributors": [ - "teoli", - "glukin" + "d.zheleznov", + "cognitive-cake", + "runicelf", + "Megapotz" ] } } \ No newline at end of file diff --git a/files/ru/conflicting/glossary/chrome/index.html b/files/ru/conflicting/glossary/chrome/index.html index e9f42b17a8..eedafb7f55 100644 --- a/files/ru/conflicting/glossary/chrome/index.html +++ b/files/ru/conflicting/glossary/chrome/index.html @@ -1,10 +1,11 @@ --- title: Chrome -slug: Chrome +slug: conflicting/Glossary/Chrome tags: - Toolkit API translation_of: Glossary/Chrome translation_of_original: Chrome +original_slug: Chrome ---

Chrome применительно к Mozilla имеет несколько разных значений.

Браузерный chrome / Chrome

diff --git a/files/ru/conflicting/learn/css/building_blocks/cascade_and_inheritance/index.html b/files/ru/conflicting/learn/css/building_blocks/cascade_and_inheritance/index.html index a192eb1d28..346f30c01e 100644 --- a/files/ru/conflicting/learn/css/building_blocks/cascade_and_inheritance/index.html +++ b/files/ru/conflicting/learn/css/building_blocks/cascade_and_inheritance/index.html @@ -1,16 +1,17 @@ --- title: Каскадность и наследование -slug: Web/Guide/CSS/Getting_started/Cascading_and_inheritance +slug: conflicting/Learn/CSS/Building_blocks/Cascade_and_inheritance tags: - Beginner - CSS - - 'CSS:Getting_Started' + - CSS:Getting_Started - Guide - Web - Веб - Новичку translation_of: Learn/CSS/Building_blocks/Cascade_and_inheritance translation_of_original: Web/Guide/CSS/Getting_started/Cascading_and_inheritance +original_slug: Web/Guide/CSS/Getting_started/Cascading_and_inheritance ---

{{ CSSTutorialTOC() }}

diff --git a/files/ru/conflicting/learn/css/building_blocks/selectors/index.html b/files/ru/conflicting/learn/css/building_blocks/selectors/index.html index a6d9e5d116..f883db7b62 100644 --- a/files/ru/conflicting/learn/css/building_blocks/selectors/index.html +++ b/files/ru/conflicting/learn/css/building_blocks/selectors/index.html @@ -1,8 +1,9 @@ --- title: 'CSS properties: what they are and how to use them' -slug: Learn/CSS/CSS_properties +slug: conflicting/Learn/CSS/Building_blocks/Selectors translation_of: Learn/CSS/Building_blocks/Selectors translation_of_original: Learn/CSS/CSS_properties +original_slug: Learn/CSS/CSS_properties ---

{{Glossary("CSS")}} определяет как должна выглядеть вебстраница. Он использует предопределенные правила вместе с селекторами и свойствами для применения стилей к элементам HTML или группам элементов.

diff --git a/files/ru/conflicting/learn/css/building_blocks/selectors_918fb6c37a4d06789bc062c48d591992/index.html b/files/ru/conflicting/learn/css/building_blocks/selectors_918fb6c37a4d06789bc062c48d591992/index.html index 797aefefa3..f66eb23b48 100644 --- a/files/ru/conflicting/learn/css/building_blocks/selectors_918fb6c37a4d06789bc062c48d591992/index.html +++ b/files/ru/conflicting/learn/css/building_blocks/selectors_918fb6c37a4d06789bc062c48d591992/index.html @@ -1,8 +1,10 @@ --- title: Selectors -slug: Web/Guide/CSS/Getting_started/Selectors +slug: >- + conflicting/Learn/CSS/Building_blocks/Selectors_918fb6c37a4d06789bc062c48d591992 translation_of: Learn/CSS/Building_blocks/Selectors translation_of_original: Web/Guide/CSS/Getting_started/Selectors +original_slug: Web/Guide/CSS/Getting_started/Selectors ---

{{ CSSTutorialTOC() }}

diff --git a/files/ru/conflicting/learn/css/building_blocks/styling_tables/index.html b/files/ru/conflicting/learn/css/building_blocks/styling_tables/index.html index 82b7edae60..738d092cbe 100644 --- a/files/ru/conflicting/learn/css/building_blocks/styling_tables/index.html +++ b/files/ru/conflicting/learn/css/building_blocks/styling_tables/index.html @@ -1,12 +1,13 @@ --- title: Таблицы -slug: Web/Guide/CSS/Getting_started/Таблицы +slug: conflicting/Learn/CSS/Building_blocks/Styling_tables tags: - CSS - Веб - Руководство translation_of: Learn/CSS/Building_blocks/Styling_tables translation_of_original: Web/Guide/CSS/Getting_started/Tables +original_slug: Web/Guide/CSS/Getting_started/Таблицы ---

{{CSSTutorialTOC}}{{previousPage("/ru/docs/Web/Guide/CSS/Getting_Started/Layout", "Layout")}}

diff --git a/files/ru/conflicting/learn/css/building_blocks/values_and_units/index.html b/files/ru/conflicting/learn/css/building_blocks/values_and_units/index.html index 911a8010b6..504ee90832 100644 --- a/files/ru/conflicting/learn/css/building_blocks/values_and_units/index.html +++ b/files/ru/conflicting/learn/css/building_blocks/values_and_units/index.html @@ -1,8 +1,9 @@ --- title: Color -slug: Web/Guide/CSS/Getting_started/Color +slug: conflicting/Learn/CSS/Building_blocks/Values_and_units translation_of: Learn/CSS/Introduction_to_CSS/Values_and_units#Colors translation_of_original: Web/Guide/CSS/Getting_started/Color +original_slug: Web/Guide/CSS/Getting_started/Color ---

{{ CSSTutorialTOC() }}

diff --git a/files/ru/conflicting/learn/css/first_steps/how_css_is_structured/index.html b/files/ru/conflicting/learn/css/first_steps/how_css_is_structured/index.html index 9e9a4231a9..5f825e836d 100644 --- a/files/ru/conflicting/learn/css/first_steps/how_css_is_structured/index.html +++ b/files/ru/conflicting/learn/css/first_steps/how_css_is_structured/index.html @@ -1,8 +1,9 @@ --- title: Чистый СSS код -slug: Web/Guide/CSS/Getting_started/Readable_CSS +slug: conflicting/Learn/CSS/First_steps/How_CSS_is_structured translation_of: Learn/CSS/Introduction_to_CSS/Syntax#Beyond_syntax_make_CSS_readable translation_of_original: Web/Guide/CSS/Getting_started/Readable_CSS +original_slug: Web/Guide/CSS/Getting_started/Readable_CSS ---

{{ CSSTutorialTOC() }}

diff --git a/files/ru/conflicting/learn/css/first_steps/how_css_works/index.html b/files/ru/conflicting/learn/css/first_steps/how_css_works/index.html index 9edeb9fe1f..8e7fae4eb2 100644 --- a/files/ru/conflicting/learn/css/first_steps/how_css_works/index.html +++ b/files/ru/conflicting/learn/css/first_steps/how_css_works/index.html @@ -1,8 +1,9 @@ --- title: Как работает CSS -slug: Web/Guide/CSS/Getting_started/How_CSS_works +slug: conflicting/Learn/CSS/First_steps/How_CSS_works translation_of: Learn/CSS/First_steps/How_CSS_works translation_of_original: Web/Guide/CSS/Getting_started/How_CSS_works +original_slug: Web/Guide/CSS/Getting_started/How_CSS_works ---

{{ CSSTutorialTOC() }}

diff --git a/files/ru/conflicting/learn/css/first_steps/how_css_works_64ba4331a7a5f4319c6e06b06ccdd521/index.html b/files/ru/conflicting/learn/css/first_steps/how_css_works_64ba4331a7a5f4319c6e06b06ccdd521/index.html index 3041d28920..05b7c9e54c 100644 --- a/files/ru/conflicting/learn/css/first_steps/how_css_works_64ba4331a7a5f4319c6e06b06ccdd521/index.html +++ b/files/ru/conflicting/learn/css/first_steps/how_css_works_64ba4331a7a5f4319c6e06b06ccdd521/index.html @@ -1,10 +1,11 @@ --- title: Зачем нужен CSS? -slug: Web/Guide/CSS/Getting_started/Why_use_CSS +slug: >- + conflicting/Learn/CSS/First_steps/How_CSS_works_64ba4331a7a5f4319c6e06b06ccdd521 tags: - Beginner - CSS - - 'CSS:Getting_Started' + - CSS:Getting_Started - Example - Guide - Web @@ -13,6 +14,7 @@ tags: - Руководство translation_of: Learn/CSS/First_steps/How_CSS_works translation_of_original: Web/Guide/CSS/Getting_started/Why_use_CSS +original_slug: Web/Guide/CSS/Getting_started/Why_use_CSS ---

{{ CSSTutorialTOC() }}

diff --git a/files/ru/conflicting/learn/css/first_steps/how_css_works_b66915031fb62b5fee1201086144e209/index.html b/files/ru/conflicting/learn/css/first_steps/how_css_works_b66915031fb62b5fee1201086144e209/index.html index 95df2fe915..b97a4ef068 100644 --- a/files/ru/conflicting/learn/css/first_steps/how_css_works_b66915031fb62b5fee1201086144e209/index.html +++ b/files/ru/conflicting/learn/css/first_steps/how_css_works_b66915031fb62b5fee1201086144e209/index.html @@ -1,16 +1,18 @@ --- title: Что такое CSS? -slug: Web/Guide/CSS/Getting_started/What_is_CSS +slug: >- + conflicting/Learn/CSS/First_steps/How_CSS_works_b66915031fb62b5fee1201086144e209 tags: - Beginner - CSS - - 'CSS:Getting_Started' + - CSS:Getting_Started - Example - Guide - Веб - Новичку translation_of: Learn/CSS/First_steps/How_CSS_works translation_of_original: Web/Guide/CSS/Getting_started/What_is_CSS +original_slug: Web/Guide/CSS/Getting_started/What_is_CSS ---
{{ CSSTutorialTOC() }}
diff --git a/files/ru/conflicting/learn/css/first_steps/index.html b/files/ru/conflicting/learn/css/first_steps/index.html index b2f6ebed77..e7f3f73dce 100644 --- a/files/ru/conflicting/learn/css/first_steps/index.html +++ b/files/ru/conflicting/learn/css/first_steps/index.html @@ -1,10 +1,10 @@ --- title: CSS для начинающих -slug: Web/Guide/CSS/Getting_started +slug: conflicting/Learn/CSS/First_steps tags: - Beginner - CSS - - 'CSS:Getting_Started' + - CSS:Getting_Started - Guide - Needs - NeedsBeginnerUpdate @@ -16,6 +16,7 @@ tags: - Руководство translation_of: Learn/CSS/First_steps translation_of_original: Web/Guide/CSS/Getting_started +original_slug: Web/Guide/CSS/Getting_started ---

Это руководство (самоучитель) познакомит вас с базовыми возможностями и языком (синтаксом) Каскадных таблиц стилей (CSS). CSS используется для изменения внешнего вида структурированного документа, такого как веб-страница. Руководство также включает простые упражнения, которые вы сможете выполнить на своем компьютере и увидеть, как работает CSS, а также его возможности в современных браузерах.

diff --git a/files/ru/conflicting/learn/css/index.html b/files/ru/conflicting/learn/css/index.html index 7529234ef5..2a639c4b61 100644 --- a/files/ru/conflicting/learn/css/index.html +++ b/files/ru/conflicting/learn/css/index.html @@ -1,6 +1,6 @@ --- title: Руководство разработчика CSS -slug: Web/Guide/CSS +slug: conflicting/Learn/CSS tags: - CSS - Landing @@ -8,5 +8,6 @@ tags: - TopicStub translation_of: Learn/CSS translation_of_original: Web/Guide/CSS +original_slug: Web/Guide/CSS --- prepare for redirect diff --git a/files/ru/conflicting/learn/css/styling_text/fundamentals/index.html b/files/ru/conflicting/learn/css/styling_text/fundamentals/index.html index a25565cf79..f61ad3b65e 100644 --- a/files/ru/conflicting/learn/css/styling_text/fundamentals/index.html +++ b/files/ru/conflicting/learn/css/styling_text/fundamentals/index.html @@ -1,8 +1,9 @@ --- title: Text styles -slug: Web/Guide/CSS/Getting_started/Text_styles +slug: conflicting/Learn/CSS/Styling_text/Fundamentals translation_of: Learn/CSS/Styling_text/Fundamentals translation_of_original: Web/Guide/CSS/Getting_started/Text_styles +original_slug: Web/Guide/CSS/Getting_started/Text_styles ---

{{ CSSTutorialTOC() }}

diff --git a/files/ru/conflicting/learn/javascript/objects/index.html b/files/ru/conflicting/learn/javascript/objects/index.html index d07cf043cc..1fe76e2806 100644 --- a/files/ru/conflicting/learn/javascript/objects/index.html +++ b/files/ru/conflicting/learn/javascript/objects/index.html @@ -1,8 +1,9 @@ --- title: Вступление в Объектно-ориентированный JavaScript -slug: Web/JavaScript/Introduction_to_Object-Oriented_JavaScript +slug: conflicting/Learn/JavaScript/Objects translation_of: Learn/JavaScript/Objects translation_of_original: Web/JavaScript/Introduction_to_Object-Oriented_JavaScript +original_slug: Web/JavaScript/Introduction_to_Object-Oriented_JavaScript ---

Объектно-ориентированный до основания, JavaScript предоставляет мощные и гибкие {{Glossary("OOP")}} возможности. Эта статья начинается с введения в объектно-ориентированное программирование, затем рассматривает модель объекта JavaScript и, наконец, демонстрирует концепции объектно-ориентированного программирования в JavaScript.

diff --git a/files/ru/conflicting/mdn/contribute/index.html b/files/ru/conflicting/mdn/contribute/index.html index a8227dafed..d5989bfd3c 100644 --- a/files/ru/conflicting/mdn/contribute/index.html +++ b/files/ru/conflicting/mdn/contribute/index.html @@ -1,11 +1,12 @@ --- title: Участие в MDN -slug: MDN_at_ten/Contributing_to_MDN +slug: conflicting/MDN/Contribute tags: - MDN Мета - Mozilla - Участие translation_of: MDN_at_ten/Contributing_to_MDN +original_slug: MDN_at_ten/Contributing_to_MDN ---
diff --git a/files/ru/conflicting/mdn/tools/index.html b/files/ru/conflicting/mdn/tools/index.html index 88a0659232..ba40675886 100644 --- a/files/ru/conflicting/mdn/tools/index.html +++ b/files/ru/conflicting/mdn/tools/index.html @@ -1,12 +1,13 @@ --- title: Руководство пользователя MDN -slug: MDN/User_guide +slug: conflicting/MDN/Tools tags: - Documentation - Landing - MDN translation_of: MDN/Tools translation_of_original: MDN/User_guide +original_slug: MDN/User_guide ---
{{MDNSidebar}}

Сайт сети разработчиков Mozilla является продвинутой системой для поиска, чтения и внесения документации и примеров исходного кода для веб-разработчиков (а также для разработчиков под браузер Firefox и ОС Firefox). Руководство пользователя MDN предоставляет статьи, в подробностях описывающие, как использовать MDN для поиска нужной вам документации и, если вы желаете, как помочь сделать материалы лучше: более полными и обширными.

diff --git a/files/ru/conflicting/mozilla/add-ons/index.html b/files/ru/conflicting/mozilla/add-ons/index.html index f147f764bb..de1f3416a5 100644 --- a/files/ru/conflicting/mozilla/add-ons/index.html +++ b/files/ru/conflicting/mozilla/add-ons/index.html @@ -1,9 +1,10 @@ --- title: Создание расширения -slug: Building_an_Extension +slug: conflicting/Mozilla/Add-ons tags: - Расширение - Создание +original_slug: Building_an_Extension ---

Введение

Этот урок по шагам покажет Вам как создать простое Расширение – сутью которого является добавление в панель статуса Firefox блока со строкой "Hello, World!"

diff --git a/files/ru/conflicting/mozilla/firefox/releases/index.html b/files/ru/conflicting/mozilla/firefox/releases/index.html index ba7f7887f2..7fbfd3fe07 100644 --- a/files/ru/conflicting/mozilla/firefox/releases/index.html +++ b/files/ru/conflicting/mozilla/firefox/releases/index.html @@ -1,8 +1,9 @@ --- title: Замечания к релизу -slug: Tools/Release_notes +slug: conflicting/Mozilla/Firefox/Releases translation_of: Mozilla/Firefox/Releases translation_of_original: Tools/Release_notes +original_slug: Tools/Release_notes ---
{{ToolsSidebar}}

Firefox 48

diff --git a/files/ru/conflicting/tools/performance/index.html b/files/ru/conflicting/tools/performance/index.html index 10e4254907..6bf96a6c91 100644 --- a/files/ru/conflicting/tools/performance/index.html +++ b/files/ru/conflicting/tools/performance/index.html @@ -1,6 +1,6 @@ --- title: Профилирование JavaScript -slug: Tools/Profiler +slug: conflicting/Tools/Performance tags: - Firefox - Отладка @@ -10,6 +10,7 @@ tags: - инструменты translation_of: Tools/Performance translation_of_original: Tools/Profiler +original_slug: Tools/Profiler ---
{{ToolsSidebar}}

Используйте средства профилирования, чтобы находить узкие места в своём JavaScript коде.  Профайлер периодически проверяет состояние стека вызовов JavaScript и составляет статистику на основе полученных в результате измерения величин.

diff --git a/files/ru/conflicting/web/accessibility/index.html b/files/ru/conflicting/web/accessibility/index.html index ce48a75de2..93cd4b80cb 100644 --- a/files/ru/conflicting/web/accessibility/index.html +++ b/files/ru/conflicting/web/accessibility/index.html @@ -1,6 +1,6 @@ --- title: Веб-разработка -slug: Web/Accessibility/Веб-разработка +slug: conflicting/Web/Accessibility tags: - ARIA - Web Development @@ -8,6 +8,7 @@ tags: - доступность translation_of: Web/Accessibility translation_of_original: Web/Accessibility/Web_Development +original_slug: Web/Accessibility/Веб-разработка ---

Здесь ссылки на более подробную информацию для разработчиков о доступности (accessibility) в Веб и в XUL.

diff --git a/files/ru/conflicting/web/api/canvas_api/a_basic_ray-caster/index.html b/files/ru/conflicting/web/api/canvas_api/a_basic_ray-caster/index.html index 23b14adb7c..b96f0a95a3 100644 --- a/files/ru/conflicting/web/api/canvas_api/a_basic_ray-caster/index.html +++ b/files/ru/conflicting/web/api/canvas_api/a_basic_ray-caster/index.html @@ -1,8 +1,9 @@ --- title: A Basic RayCaster -slug: A_Basic_RayCaster +slug: conflicting/Web/API/Canvas_API/A_basic_ray-caster tags: - Canvas_examples +original_slug: A_Basic_RayCaster ---

 

diff --git a/files/ru/conflicting/web/api/crypto/getrandomvalues/index.html b/files/ru/conflicting/web/api/crypto/getrandomvalues/index.html index d56506a90a..0193cc0447 100644 --- a/files/ru/conflicting/web/api/crypto/getrandomvalues/index.html +++ b/files/ru/conflicting/web/api/crypto/getrandomvalues/index.html @@ -1,6 +1,6 @@ --- title: RandomSource -slug: Web/API/RandomSource +slug: conflicting/Web/API/Crypto/getRandomValues tags: - API - Interface @@ -11,6 +11,7 @@ tags: - Web Crypto API translation_of: Web/API/Crypto/getRandomValues translation_of_original: Web/API/RandomSource +original_slug: Web/API/RandomSource ---

{{APIRef("Web Crypto API")}}

diff --git a/files/ru/conflicting/web/api/document_object_model/index.html b/files/ru/conflicting/web/api/document_object_model/index.html index 3acab80018..def3b15b61 100644 --- a/files/ru/conflicting/web/api/document_object_model/index.html +++ b/files/ru/conflicting/web/api/document_object_model/index.html @@ -1,10 +1,11 @@ --- title: DOM -slug: DOM +slug: conflicting/Web/API/Document_Object_Model tags: - DOM translation_of: Web/API/Document_Object_Model translation_of_original: DOM +original_slug: DOM ---

Объектная модель документа (DOM) — это API для HTML и XML документов. Она предоставляет структуру документа, что позволяет изменять его содержимое и внешний вид. По сути, она связывает веб-страницы со скриптами или языками программирования.

diff --git a/files/ru/conflicting/web/api/document_object_model_5521049528397035462607d58539e0cc/index.html b/files/ru/conflicting/web/api/document_object_model_5521049528397035462607d58539e0cc/index.html index ab6a5c0435..ba7d7d07d8 100644 --- a/files/ru/conflicting/web/api/document_object_model_5521049528397035462607d58539e0cc/index.html +++ b/files/ru/conflicting/web/api/document_object_model_5521049528397035462607d58539e0cc/index.html @@ -1,10 +1,11 @@ --- title: Об объектной модели документа -slug: Об_объектной_модели_документа +slug: conflicting/Web/API/Document_Object_Model_5521049528397035462607d58539e0cc tags: - DOM translation_of: Web/API/Document_Object_Model translation_of_original: DOM/About_the_Document_Object_Model +original_slug: Об_объектной_модели_документа ---

Что такое DOM?

diff --git a/files/ru/conflicting/web/api/document_object_model_dd00a71ceceac547ab464128db6bd8ef/index.html b/files/ru/conflicting/web/api/document_object_model_dd00a71ceceac547ab464128db6bd8ef/index.html index 1671813170..4d8706e804 100644 --- a/files/ru/conflicting/web/api/document_object_model_dd00a71ceceac547ab464128db6bd8ef/index.html +++ b/files/ru/conflicting/web/api/document_object_model_dd00a71ceceac547ab464128db6bd8ef/index.html @@ -1,6 +1,6 @@ --- title: DOM developer guide -slug: Web/Guide/API/DOM +slug: conflicting/Web/API/Document_Object_Model_dd00a71ceceac547ab464128db6bd8ef tags: - API - DOM @@ -10,6 +10,7 @@ tags: - TopicStub translation_of: Web/API/Document_Object_Model translation_of_original: Web/Guide/API/DOM +original_slug: Web/Guide/API/DOM ---

{{draft}}

diff --git a/files/ru/conflicting/web/api/element/index.html b/files/ru/conflicting/web/api/element/index.html index af6ec4765c..8656365064 100644 --- a/files/ru/conflicting/web/api/element/index.html +++ b/files/ru/conflicting/web/api/element/index.html @@ -1,10 +1,11 @@ --- title: Slotable -slug: Web/API/Slotable +slug: conflicting/Web/API/Element tags: - миксины translation_of: Web/API/Slottable translation_of_original: Web/API/Slotable +original_slug: Web/API/Slotable ---

{{APIRef("Shadow DOM")}}

diff --git a/files/ru/conflicting/web/api/eventtarget/addeventlistener/index.html b/files/ru/conflicting/web/api/eventtarget/addeventlistener/index.html index a428f9724c..ce515d9e4f 100644 --- a/files/ru/conflicting/web/api/eventtarget/addeventlistener/index.html +++ b/files/ru/conflicting/web/api/eventtarget/addeventlistener/index.html @@ -1,9 +1,10 @@ --- title: EventTarget.attachEvent() -slug: Web/API/EventTarget/attachEvent +slug: conflicting/Web/API/EventTarget/addEventListener tags: - Junk translation_of: Web/API/EventTarget/addEventListener translation_of_original: Web/API/EventTarget/attachEvent +original_slug: Web/API/EventTarget/attachEvent ---

{{DOMxRef("EventTarget.addEventListener","EventTarget.addEventListener()")}}

diff --git a/files/ru/conflicting/web/api/eventtarget/removeeventlistener/index.html b/files/ru/conflicting/web/api/eventtarget/removeeventlistener/index.html index 9a62ecb63c..c83a135fd4 100644 --- a/files/ru/conflicting/web/api/eventtarget/removeeventlistener/index.html +++ b/files/ru/conflicting/web/api/eventtarget/removeeventlistener/index.html @@ -1,8 +1,9 @@ --- title: EventTarget.detachEvent() -slug: Web/API/EventTarget/detachEvent +slug: conflicting/Web/API/EventTarget/removeEventListener translation_of: Web/API/EventTarget/removeEventListener translation_of_original: Web/API/EventTarget/detachEvent +original_slug: Web/API/EventTarget/detachEvent ---

{{APIRef("DOM Events")}}

diff --git a/files/ru/conflicting/web/api/geolocation/index.html b/files/ru/conflicting/web/api/geolocation/index.html index 7287eee669..9a15927312 100644 --- a/files/ru/conflicting/web/api/geolocation/index.html +++ b/files/ru/conflicting/web/api/geolocation/index.html @@ -1,8 +1,9 @@ --- title: NavigatorGeolocation -slug: Web/API/NavigatorGeolocation +slug: conflicting/Web/API/Geolocation translation_of: Web/API/Geolocation translation_of_original: Web/API/NavigatorGeolocation +original_slug: Web/API/NavigatorGeolocation ---
{{APIRef("Geolocation API")}}
diff --git a/files/ru/conflicting/web/api/htmlmediaelement/abort_event/index.html b/files/ru/conflicting/web/api/htmlmediaelement/abort_event/index.html index d8029e2378..22fadfb200 100644 --- a/files/ru/conflicting/web/api/htmlmediaelement/abort_event/index.html +++ b/files/ru/conflicting/web/api/htmlmediaelement/abort_event/index.html @@ -1,10 +1,11 @@ --- title: abort -slug: Web/Events/abort +slug: conflicting/Web/API/HTMLMediaElement/abort_event tags: - Событие translation_of: Web/API/HTMLMediaElement/abort_event translation_of_original: Web/Events/abort +original_slug: Web/Events/abort ---

Событие "abort" вызывается когда загрузка какого-либо ресурса была прервана.

diff --git a/files/ru/conflicting/web/api/index.html b/files/ru/conflicting/web/api/index.html index 9ffb624bc7..325f2ca52b 100644 --- a/files/ru/conflicting/web/api/index.html +++ b/files/ru/conflicting/web/api/index.html @@ -1,10 +1,11 @@ --- title: WebAPI -slug: Web/WebAPI +slug: conflicting/Web/API tags: - API translation_of: Web/API translation_of_original: WebAPI +original_slug: Web/WebAPI ---

WebAPI is a term used to refer to a suite of device compatibility and access APIs that allow Web apps and content to access device hardware (such as battery status or the device vibration hardware), as well as access to data stored on the device (such as the calendar or contacts list). By adding these APIs, we hope to expand what the Web can do today to also include what only proprietary platforms were able to do in the past.

diff --git a/files/ru/conflicting/web/api/node/index.html b/files/ru/conflicting/web/api/node/index.html index 7f7dbfb782..867810d345 100644 --- a/files/ru/conflicting/web/api/node/index.html +++ b/files/ru/conflicting/web/api/node/index.html @@ -1,8 +1,9 @@ --- title: Node.baseURIObject -slug: Web/API/Node/baseURIObject +slug: conflicting/Web/API/Node translation_of: Web/API/Node translation_of_original: Web/API/Node/baseURIObject +original_slug: Web/API/Node/baseURIObject ---
{{APIRef("DOM")}} {{Non-standard_header}}
diff --git a/files/ru/conflicting/web/api/node_378aed5ed6869e50853edbc988cf9556/index.html b/files/ru/conflicting/web/api/node_378aed5ed6869e50853edbc988cf9556/index.html index 11b342e6c3..8de371b4cf 100644 --- a/files/ru/conflicting/web/api/node_378aed5ed6869e50853edbc988cf9556/index.html +++ b/files/ru/conflicting/web/api/node_378aed5ed6869e50853edbc988cf9556/index.html @@ -1,8 +1,9 @@ --- title: Node.nodePrincipal -slug: Web/API/Node/nodePrincipal +slug: conflicting/Web/API/Node_378aed5ed6869e50853edbc988cf9556 translation_of: Web/API/Node translation_of_original: Web/API/Node/nodePrincipal +original_slug: Web/API/Node/nodePrincipal ---
{{APIRef("DOM")}}
diff --git a/files/ru/conflicting/web/api/push_api/index.html b/files/ru/conflicting/web/api/push_api/index.html index 40086e4e91..1a1de71329 100644 --- a/files/ru/conflicting/web/api/push_api/index.html +++ b/files/ru/conflicting/web/api/push_api/index.html @@ -1,8 +1,9 @@ --- title: Использование Push API -slug: Web/API/Push_API/Using_the_Push_API +slug: conflicting/Web/API/Push_API translation_of: Web/API/Push_API translation_of_original: Web/API/Push_API/Using_the_Push_API +original_slug: Web/API/Push_API/Using_the_Push_API ---

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

diff --git a/files/ru/conflicting/web/api/svgaelement/target/index.html b/files/ru/conflicting/web/api/svgaelement/target/index.html index dcd76310d4..376099e1f3 100644 --- a/files/ru/conflicting/web/api/svgaelement/target/index.html +++ b/files/ru/conflicting/web/api/svgaelement/target/index.html @@ -1,8 +1,9 @@ --- title: SVGAElement.target -slug: Web/API/SVGAElement/SVGAlement.target +slug: conflicting/Web/API/SVGAElement/target translation_of: Web/API/SVGAElement/target translation_of_original: Web/API/SVGAElement/SVGAlement.target +original_slug: Web/API/SVGAElement/SVGAlement.target ---

{{APIRef("SVGAElement")}}

diff --git a/files/ru/conflicting/web/api/web_storage_api/index.html b/files/ru/conflicting/web/api/web_storage_api/index.html index b63a374c8c..b6e37422a6 100644 --- a/files/ru/conflicting/web/api/web_storage_api/index.html +++ b/files/ru/conflicting/web/api/web_storage_api/index.html @@ -1,8 +1,9 @@ --- title: DOM Storage guide -slug: Web/Guide/API/DOM/Storage +slug: conflicting/Web/API/Web_Storage_API translation_of: Web/API/Web_Storage_API translation_of_original: Web/Guide/API/DOM/Storage +original_slug: Web/Guide/API/DOM/Storage ---

 

diff --git a/files/ru/conflicting/web/api/webrtc_api/index.html b/files/ru/conflicting/web/api/webrtc_api/index.html index d8fbf01983..59ab196363 100644 --- a/files/ru/conflicting/web/api/webrtc_api/index.html +++ b/files/ru/conflicting/web/api/webrtc_api/index.html @@ -1,8 +1,9 @@ --- title: WebRTC -slug: Web/Guide/API/WebRTC +slug: conflicting/Web/API/WebRTC_API translation_of: Web/API/WebRTC_API translation_of_original: Web/Guide/API/WebRTC +original_slug: Web/Guide/API/WebRTC ---

WebRTC (где RTC расшифровывается как Real-Time Communications) - это технология, которая позволяет передавать данные и потоковое аудио/видео между браузерами. Как набор стандартов в целом, WebRTC предоставляет любым поддерживающим этот стандарт, браузерам обмениваться данными и устраивать сеансы телеконференций в режиме точка-точка, без необходимости устанавливать какие-либо плагины и стороннее програмное обеспечение.

diff --git a/files/ru/conflicting/web/api/webrtc_api/signaling_and_video_calling/index.html b/files/ru/conflicting/web/api/webrtc_api/signaling_and_video_calling/index.html index 863dde7e14..b8473336af 100644 --- a/files/ru/conflicting/web/api/webrtc_api/signaling_and_video_calling/index.html +++ b/files/ru/conflicting/web/api/webrtc_api/signaling_and_video_calling/index.html @@ -1,8 +1,9 @@ --- title: Основы WebRTC -slug: Web/API/WebRTC_API/WebRTC_basics +slug: conflicting/Web/API/WebRTC_API/Signaling_and_video_calling translation_of: Web/API/WebRTC_API/Signaling_and_video_calling translation_of_original: Web/API/WebRTC_API/WebRTC_basics +original_slug: Web/API/WebRTC_API/WebRTC_basics ---

{{WebRTCSidebar}}

diff --git a/files/ru/conflicting/web/api/window/localstorage/index.html b/files/ru/conflicting/web/api/window/localstorage/index.html index f0fab82609..7e9f60bb88 100644 --- a/files/ru/conflicting/web/api/window/localstorage/index.html +++ b/files/ru/conflicting/web/api/window/localstorage/index.html @@ -1,8 +1,9 @@ --- title: LocalStorage -slug: Web/API/Storage/LocalStorage +slug: conflicting/Web/API/Window/localStorage translation_of: Web/API/Window/localStorage translation_of_original: Web/API/Web_Storage_API/Local_storage +original_slug: Web/API/Storage/LocalStorage ---

localStorage это аналог sessionStorage, с некоторыми same-origin правилами, но значения хранятся постоянно (в отличии от sessions). localStorage появился в Firefox 3.5.

diff --git a/files/ru/conflicting/web/api/windoworworkerglobalscope/index.html b/files/ru/conflicting/web/api/windoworworkerglobalscope/index.html index f51b72c102..69bc73a64f 100644 --- a/files/ru/conflicting/web/api/windoworworkerglobalscope/index.html +++ b/files/ru/conflicting/web/api/windoworworkerglobalscope/index.html @@ -1,6 +1,6 @@ --- title: WindowBase64 -slug: Web/API/WindowBase64 +slug: conflicting/Web/API/WindowOrWorkerGlobalScope tags: - API - HTML-DOM @@ -10,6 +10,7 @@ tags: - WindowBase64 translation_of: Web/API/WindowOrWorkerGlobalScope translation_of_original: Web/API/WindowBase64 +original_slug: Web/API/WindowBase64 ---

{{APIRef("HTML DOM")}}

diff --git a/files/ru/conflicting/web/api/windoworworkerglobalscope_e2691f7ad05781a30c5fc5bb3b3f633a/index.html b/files/ru/conflicting/web/api/windoworworkerglobalscope_e2691f7ad05781a30c5fc5bb3b3f633a/index.html index ac80f42b5f..21a473532e 100644 --- a/files/ru/conflicting/web/api/windoworworkerglobalscope_e2691f7ad05781a30c5fc5bb3b3f633a/index.html +++ b/files/ru/conflicting/web/api/windoworworkerglobalscope_e2691f7ad05781a30c5fc5bb3b3f633a/index.html @@ -1,11 +1,12 @@ --- title: WindowTimers -slug: Web/API/WindowTimers +slug: conflicting/Web/API/WindowOrWorkerGlobalScope_e2691f7ad05781a30c5fc5bb3b3f633a tags: - API - HTML DOM translation_of: Web/API/WindowOrWorkerGlobalScope translation_of_original: Web/API/WindowTimers +original_slug: Web/API/WindowTimers ---
{{APIRef("HTML DOM")}}
diff --git a/files/ru/conflicting/web/api/xmlhttprequest/index.html b/files/ru/conflicting/web/api/xmlhttprequest/index.html index 0de9dfed9d..0d2e6c16e7 100644 --- a/files/ru/conflicting/web/api/xmlhttprequest/index.html +++ b/files/ru/conflicting/web/api/xmlhttprequest/index.html @@ -1,9 +1,10 @@ --- title: XMLHttpRequest -slug: XMLHttpRequest +slug: conflicting/Web/API/XMLHttpRequest tags: - AJAX - XMLHttpRequest +original_slug: XMLHttpRequest ---

XMLHttpRequest — это объект JavaScript, созданный Microsoft и адаптированный Mozilla. Вы можете использовать его для простой передачи данных через HTTP. Несмотря на свое название, он может быть использован не только для XML документов, но и, например, для JSON.

diff --git a/files/ru/conflicting/web/css/@viewport/index.html b/files/ru/conflicting/web/css/@viewport/index.html index 3cb5768532..6778691ba7 100644 --- a/files/ru/conflicting/web/css/@viewport/index.html +++ b/files/ru/conflicting/web/css/@viewport/index.html @@ -1,8 +1,9 @@ --- title: user-zoom -slug: Web/CSS/@viewport/user-zoom +slug: conflicting/Web/CSS/@viewport translation_of: Web/CSS/@viewport translation_of_original: Web/CSS/@viewport/user-zoom +original_slug: Web/CSS/@viewport/user-zoom ---
{{ CSSRef }}
diff --git a/files/ru/conflicting/web/css/_colon_is/index.html b/files/ru/conflicting/web/css/_colon_is/index.html index 6a9dab56ac..d2ed013366 100644 --- a/files/ru/conflicting/web/css/_colon_is/index.html +++ b/files/ru/conflicting/web/css/_colon_is/index.html @@ -1,14 +1,15 @@ --- title: ':any' -slug: 'Web/CSS/:any' +slug: conflicting/Web/CSS/:is tags: - CSS - Experimental - Псевдоклассы - Руководство - Экспериментальное -translation_of: 'Web/CSS/:is' -translation_of_original: 'Web/CSS/:any' +translation_of: Web/CSS/:is +translation_of_original: Web/CSS/:any +original_slug: Web/CSS/:any ---
{{CSSRef}}{{SeeCompatTable}}
diff --git a/files/ru/conflicting/web/css/css_basic_user_interface/index.html b/files/ru/conflicting/web/css/css_basic_user_interface/index.html index 2a4028644d..3a739dcff4 100644 --- a/files/ru/conflicting/web/css/css_basic_user_interface/index.html +++ b/files/ru/conflicting/web/css/css_basic_user_interface/index.html @@ -1,6 +1,6 @@ --- title: CSS Basic User Interface -slug: Web/CSS/CSS_User_Interface +slug: conflicting/Web/CSS/CSS_Basic_User_Interface tags: - CSS - CSS Basic User Interface @@ -10,6 +10,7 @@ tags: - TopicStub translation_of: Web/CSS/CSS_Basic_User_Interface translation_of_original: Web/CSS/CSS_User_Interface +original_slug: Web/CSS/CSS_User_Interface ---
{{CSSRef}}
diff --git a/files/ru/conflicting/web/css/css_flexible_box_layout/basic_concepts_of_flexbox/index.html b/files/ru/conflicting/web/css/css_flexible_box_layout/basic_concepts_of_flexbox/index.html index 3f0b229d20..e40fb04a90 100644 --- a/files/ru/conflicting/web/css/css_flexible_box_layout/basic_concepts_of_flexbox/index.html +++ b/files/ru/conflicting/web/css/css_flexible_box_layout/basic_concepts_of_flexbox/index.html @@ -1,8 +1,9 @@ --- title: Используем CSS Flexible Boxes -slug: Web/CSS/CSS_Flexible_Box_Layout/Using_CSS_flexible_boxes +slug: conflicting/Web/CSS/CSS_Flexible_Box_Layout/Basic_Concepts_of_Flexbox translation_of: Web/CSS/CSS_Flexible_Box_Layout/Basic_Concepts_of_Flexbox translation_of_original: Web/CSS/CSS_Flexible_Box_Layout/Using_CSS_flexible_boxes +original_slug: Web/CSS/CSS_Flexible_Box_Layout/Using_CSS_flexible_boxes ---
Эта статья устарела и удалена из английской версии. Вместо неё идёт перенаправление на статью:

Основные понятия Flexbox

diff --git a/files/ru/conflicting/web/css/gap/index.html b/files/ru/conflicting/web/css/gap/index.html index 90daa7c0ea..bc37f159e8 100644 --- a/files/ru/conflicting/web/css/gap/index.html +++ b/files/ru/conflicting/web/css/gap/index.html @@ -1,8 +1,9 @@ --- title: grid-gap -slug: Web/CSS/grid-gap +slug: conflicting/Web/CSS/gap translation_of: Web/CSS/gap translation_of_original: Web/CSS/grid-gap +original_slug: Web/CSS/grid-gap ---

{{Deprecated_Header}}

diff --git a/files/ru/conflicting/web/css/url()/index.html b/files/ru/conflicting/web/css/url()/index.html index 755d1adfe4..abbc8af65a 100644 --- a/files/ru/conflicting/web/css/url()/index.html +++ b/files/ru/conflicting/web/css/url()/index.html @@ -1,6 +1,6 @@ --- title: url() -slug: Web/CSS/filter-function/url +slug: conflicting/Web/CSS/url() tags: - CSS - Начинающий @@ -8,6 +8,7 @@ tags: - Функция translation_of: Web/CSS/url() translation_of_original: Web/CSS/filter-function/url +original_slug: Web/CSS/filter-function/url ---
{{cssref}}
diff --git a/files/ru/conflicting/web/css/url()_168028c4e5edd9e19c061adb4b604d4f/index.html b/files/ru/conflicting/web/css/url()_168028c4e5edd9e19c061adb4b604d4f/index.html index 82965bf827..c3184e46fa 100644 --- a/files/ru/conflicting/web/css/url()_168028c4e5edd9e19c061adb4b604d4f/index.html +++ b/files/ru/conflicting/web/css/url()_168028c4e5edd9e19c061adb4b604d4f/index.html @@ -1,12 +1,13 @@ --- title: -slug: Web/CSS/url +slug: conflicting/Web/CSS/url()_168028c4e5edd9e19c061adb4b604d4f tags: - Адрес - Типы данных - относительный адрес translation_of: Web/CSS/url() translation_of_original: Web/CSS/url +original_slug: Web/CSS/url ---
{{CssRef}}
diff --git a/files/ru/conflicting/web/guide/index.html b/files/ru/conflicting/web/guide/index.html index 3dd0b4cbcc..2ea0c7199a 100644 --- a/files/ru/conflicting/web/guide/index.html +++ b/files/ru/conflicting/web/guide/index.html @@ -1,8 +1,9 @@ --- title: Веб-разработка -slug: Веб-разработка +slug: conflicting/Web/Guide translation_of: Web/Guide translation_of_original: Web_Development +original_slug: Веб-разработка ---

Веб-разработка включает в себя все аспекты разработки веб-сайта или веб-приложения. Статьи этого раздела освещают создание как простых веб-сайтов, так и сложных, интерактивных веб-приложений с использованием новейших технологий разработки для веб.

diff --git a/files/ru/conflicting/web/guide/mobile/index.html b/files/ru/conflicting/web/guide/mobile/index.html index cc288a9c45..028d0c71ed 100644 --- a/files/ru/conflicting/web/guide/mobile/index.html +++ b/files/ru/conflicting/web/guide/mobile/index.html @@ -1,6 +1,6 @@ --- title: Mobile Web development -slug: Web_Development/Mobile +slug: conflicting/Web/Guide/Mobile tags: - Mobile - NeedsTranslation @@ -8,6 +8,7 @@ tags: - Web Development translation_of: Web/Guide/Mobile translation_of_original: Web_Development/Mobile +original_slug: Web_Development/Mobile ---

Developing web sites to be viewed on mobile devices requires approaches that ensure a web site works as well on mobile devices as it does on desktop browsers. The following articles describe some of these approaches.

    diff --git a/files/ru/conflicting/web/http/cors/index.html b/files/ru/conflicting/web/http/cors/index.html index c3d53cb730..0d44c873b3 100644 --- a/files/ru/conflicting/web/http/cors/index.html +++ b/files/ru/conflicting/web/http/cors/index.html @@ -1,8 +1,9 @@ --- title: Server-Side Access Control (CORS) -slug: Web/HTTP/Server-Side_Access_Control +slug: conflicting/Web/HTTP/CORS translation_of: Web/HTTP/CORS translation_of_original: Web/HTTP/Server-Side_Access_Control +original_slug: Web/HTTP/Server-Side_Access_Control ---

    Системы контроля доступа производят идентификацию авторизацииаутентификацию, подтверждение доступа и подотчетность сущностей с помощью учетных данных для входа, включая пароль, личный идентификационный номер (PINs), биометрическое сканирование и физический или электронный ключ.

    diff --git a/files/ru/conflicting/web/http/csp/index.html b/files/ru/conflicting/web/http/csp/index.html index 5a3bfeae33..df563abc30 100644 --- a/files/ru/conflicting/web/http/csp/index.html +++ b/files/ru/conflicting/web/http/csp/index.html @@ -1,11 +1,12 @@ --- title: CSP (Политика Защиты Контента) -slug: Web/Security/CSP +slug: conflicting/Web/HTTP/CSP tags: - CSP - Landing translation_of: Web/HTTP/CSP translation_of_original: Web/Security/CSP +original_slug: Web/Security/CSP ---
    {{gecko_minversion_header("2.0")}}
    diff --git a/files/ru/conflicting/web/javascript/guide/index.html b/files/ru/conflicting/web/javascript/guide/index.html index a0f5770315..3e4633d7b3 100644 --- a/files/ru/conflicting/web/javascript/guide/index.html +++ b/files/ru/conflicting/web/javascript/guide/index.html @@ -1,8 +1,9 @@ --- title: Predefined Core Objects -slug: Web/JavaScript/Guide/Predefined_Core_Objects +slug: conflicting/Web/JavaScript/Guide translation_of: Web/JavaScript/Guide translation_of_original: Web/JavaScript/Guide/Predefined_Core_Objects +original_slug: Web/JavaScript/Guide/Predefined_Core_Objects ---

    Эта глава описывает предопределённые объекты в стандартном JavaScript: Array, Boolean, Date, Function, Math, Number, RegExp, и String.

    diff --git a/files/ru/conflicting/web/javascript/guide/introduction/index.html b/files/ru/conflicting/web/javascript/guide/introduction/index.html index 6d58fafb80..c8132f92df 100644 --- a/files/ru/conflicting/web/javascript/guide/introduction/index.html +++ b/files/ru/conflicting/web/javascript/guide/introduction/index.html @@ -1,8 +1,9 @@ --- title: Об этом учебнике -slug: Web/JavaScript/Guide/About +slug: conflicting/Web/JavaScript/Guide/Introduction translation_of: Web/JavaScript/Guide/Introduction translation_of_original: Web/JavaScript/Guide/About +original_slug: Web/JavaScript/Guide/About ---

    JavaScript это кросс-платформенный, объектно-ориентированный интерпретируемый язык программирования. В этом учебнике описано все, что вам нужно знать для того, чтобы начать ипользовать JavaScript.

    diff --git a/files/ru/conflicting/web/javascript/guide/introduction_6f341ba6db4b060ccbd8dce4a0d5214b/index.html b/files/ru/conflicting/web/javascript/guide/introduction_6f341ba6db4b060ccbd8dce4a0d5214b/index.html index 5db1f95ca4..2cea75700e 100644 --- a/files/ru/conflicting/web/javascript/guide/introduction_6f341ba6db4b060ccbd8dce4a0d5214b/index.html +++ b/files/ru/conflicting/web/javascript/guide/introduction_6f341ba6db4b060ccbd8dce4a0d5214b/index.html @@ -1,8 +1,9 @@ --- title: Обзор JavaScript -slug: Web/JavaScript/Guide/JavaScript_Overview +slug: conflicting/Web/JavaScript/Guide/Introduction_6f341ba6db4b060ccbd8dce4a0d5214b translation_of: Web/JavaScript/Guide/Introduction translation_of_original: Web/JavaScript/Guide/JavaScript_Overview +original_slug: Web/JavaScript/Guide/JavaScript_Overview ---

    Эта глава является введением в JavaScript и описывает некоторые из базовых понятий.

    diff --git a/files/ru/conflicting/web/javascript/reference/global_objects/boolean/index.html b/files/ru/conflicting/web/javascript/reference/global_objects/boolean/index.html index f0188080f1..83fb169e1e 100644 --- a/files/ru/conflicting/web/javascript/reference/global_objects/boolean/index.html +++ b/files/ru/conflicting/web/javascript/reference/global_objects/boolean/index.html @@ -1,6 +1,6 @@ --- title: Boolean.prototype -slug: Web/JavaScript/Reference/Global_Objects/Boolean/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/Boolean tags: - Boolean - JavaScript @@ -8,6 +8,7 @@ tags: - Prototype translation_of: Web/JavaScript/Reference/Global_Objects/Boolean translation_of_original: Web/JavaScript/Reference/Global_Objects/Boolean/prototype +original_slug: Web/JavaScript/Reference/Global_Objects/Boolean/prototype ---
    {{JSRef("Global_Objects", "Boolean")}}
    diff --git a/files/ru/conflicting/web/javascript/reference/global_objects/date/index.html b/files/ru/conflicting/web/javascript/reference/global_objects/date/index.html index 956a7555a1..bb3a1eb411 100644 --- a/files/ru/conflicting/web/javascript/reference/global_objects/date/index.html +++ b/files/ru/conflicting/web/javascript/reference/global_objects/date/index.html @@ -1,6 +1,6 @@ --- title: Date.prototype -slug: Web/JavaScript/Reference/Global_Objects/Date/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/Date tags: - Date - JavaScript @@ -10,6 +10,7 @@ tags: - Référence(2) translation_of: Web/JavaScript/Reference/Global_Objects/Date translation_of_original: Web/JavaScript/Reference/Global_Objects/Date/prototype +original_slug: Web/JavaScript/Reference/Global_Objects/Date/prototype ---
    {{JSRef("Global_Objects", "Date")}}
    diff --git a/files/ru/conflicting/web/javascript/reference/global_objects/error/index.html b/files/ru/conflicting/web/javascript/reference/global_objects/error/index.html index 668277c4e0..d92653c075 100644 --- a/files/ru/conflicting/web/javascript/reference/global_objects/error/index.html +++ b/files/ru/conflicting/web/javascript/reference/global_objects/error/index.html @@ -1,12 +1,13 @@ --- title: Error.prototype -slug: Web/JavaScript/Reference/Global_Objects/Error/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/Error tags: - Error - JavaScript - Property translation_of: Web/JavaScript/Reference/Global_Objects/Error translation_of_original: Web/JavaScript/Reference/Global_Objects/Error/prototype +original_slug: Web/JavaScript/Reference/Global_Objects/Error/prototype ---
    {{JSRef("Global_Objects", "Error", "EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError")}}
    diff --git a/files/ru/conflicting/web/javascript/reference/global_objects/evalerror/index.html b/files/ru/conflicting/web/javascript/reference/global_objects/evalerror/index.html index e7de1a018e..94204588e2 100644 --- a/files/ru/conflicting/web/javascript/reference/global_objects/evalerror/index.html +++ b/files/ru/conflicting/web/javascript/reference/global_objects/evalerror/index.html @@ -1,6 +1,6 @@ --- title: EvalError.prototype -slug: Web/JavaScript/Reference/Global_Objects/EvalError/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/EvalError tags: - Error - EvalError @@ -8,6 +8,7 @@ tags: - Property translation_of: Web/JavaScript/Reference/Global_Objects/EvalError translation_of_original: Web/JavaScript/Reference/Global_Objects/EvalError/prototype +original_slug: Web/JavaScript/Reference/Global_Objects/EvalError/prototype ---
    {{JSRef("Global_Objects", "Error", "EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError")}}
    diff --git a/files/ru/conflicting/web/javascript/reference/global_objects/function/index.html b/files/ru/conflicting/web/javascript/reference/global_objects/function/index.html index acf9fc5c6e..40db9c03d2 100644 --- a/files/ru/conflicting/web/javascript/reference/global_objects/function/index.html +++ b/files/ru/conflicting/web/javascript/reference/global_objects/function/index.html @@ -1,6 +1,6 @@ --- title: Function.prototype -slug: Web/JavaScript/Reference/Global_Objects/Function/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/Function tags: - Function - JavaScript @@ -10,6 +10,7 @@ tags: - Référence(2) translation_of: Web/JavaScript/Reference/Global_Objects/Function translation_of_original: Web/JavaScript/Reference/Global_Objects/Function/prototype +original_slug: Web/JavaScript/Reference/Global_Objects/Function/prototype ---
    {{JSRef("Global_Objects", "Function")}}
    diff --git a/files/ru/conflicting/web/javascript/reference/global_objects/generatorfunction/index.html b/files/ru/conflicting/web/javascript/reference/global_objects/generatorfunction/index.html index b9974a46a3..7821c0d48c 100644 --- a/files/ru/conflicting/web/javascript/reference/global_objects/generatorfunction/index.html +++ b/files/ru/conflicting/web/javascript/reference/global_objects/generatorfunction/index.html @@ -1,8 +1,9 @@ --- title: GeneratorFunction.prototype -slug: Web/JavaScript/Reference/Global_Objects/GeneratorFunction/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/GeneratorFunction translation_of: Web/JavaScript/Reference/Global_Objects/GeneratorFunction translation_of_original: Web/JavaScript/Reference/Global_Objects/GeneratorFunction/prototype +original_slug: Web/JavaScript/Reference/Global_Objects/GeneratorFunction/prototype ---
    {{JSRef}}
    diff --git a/files/ru/conflicting/web/javascript/reference/global_objects/internalerror/index.html b/files/ru/conflicting/web/javascript/reference/global_objects/internalerror/index.html index 633ffbf9fb..0aa65612d3 100644 --- a/files/ru/conflicting/web/javascript/reference/global_objects/internalerror/index.html +++ b/files/ru/conflicting/web/javascript/reference/global_objects/internalerror/index.html @@ -1,6 +1,6 @@ --- title: InternalError.prototype -slug: Web/JavaScript/Reference/Global_Objects/InternalError/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/InternalError tags: - Error - InternalError @@ -9,6 +9,7 @@ tags: - Property translation_of: Web/JavaScript/Reference/Global_Objects/InternalError translation_of_original: Web/JavaScript/Reference/Global_Objects/InternalError/prototype +original_slug: Web/JavaScript/Reference/Global_Objects/InternalError/prototype ---
    {{JSRef("Global_Objects", "Error", "EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError")}} {{non-standard_header}}
    diff --git a/files/ru/conflicting/web/javascript/reference/global_objects/intl/collator/index.html b/files/ru/conflicting/web/javascript/reference/global_objects/intl/collator/index.html index eb708cca36..8c3e037a3f 100644 --- a/files/ru/conflicting/web/javascript/reference/global_objects/intl/collator/index.html +++ b/files/ru/conflicting/web/javascript/reference/global_objects/intl/collator/index.html @@ -1,6 +1,6 @@ --- title: Intl.Collator.prototype -slug: Web/JavaScript/Reference/Global_Objects/Intl/Collator/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/Intl/Collator tags: - Collator - Internationalization @@ -9,6 +9,7 @@ tags: - Prototype translation_of: Web/JavaScript/Reference/Global_Objects/Intl/Collator translation_of_original: Web/JavaScript/Reference/Global_Objects/Intl/Collator/prototype +original_slug: Web/JavaScript/Reference/Global_Objects/Intl/Collator/prototype ---
    {{JSRef("Global_Objects", "Collator", "Intl,DateTimeFormat,NumberFormat")}}
    diff --git a/files/ru/conflicting/web/javascript/reference/global_objects/intl/datetimeformat/index.html b/files/ru/conflicting/web/javascript/reference/global_objects/intl/datetimeformat/index.html index a22ec7aeaa..7338c53fd2 100644 --- a/files/ru/conflicting/web/javascript/reference/global_objects/intl/datetimeformat/index.html +++ b/files/ru/conflicting/web/javascript/reference/global_objects/intl/datetimeformat/index.html @@ -1,6 +1,6 @@ --- title: Intl.DateTimeFormat.prototype -slug: Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat tags: - DateTimeFormat - Internationalization @@ -9,6 +9,7 @@ tags: - Prototype translation_of: Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat translation_of_original: Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/prototype +original_slug: Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/prototype ---
    {{JSRef("Global_Objects", "DateTimeFormat", "Intl,Collator,NumberFormat")}}
    diff --git a/files/ru/conflicting/web/javascript/reference/global_objects/intl/numberformat/index.html b/files/ru/conflicting/web/javascript/reference/global_objects/intl/numberformat/index.html index fd9fbeeac8..3f5329e5fc 100644 --- a/files/ru/conflicting/web/javascript/reference/global_objects/intl/numberformat/index.html +++ b/files/ru/conflicting/web/javascript/reference/global_objects/intl/numberformat/index.html @@ -1,6 +1,6 @@ --- title: Intl.NumberFormat.prototype -slug: Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat tags: - Internationalization - JavaScript @@ -9,6 +9,7 @@ tags: - Prototype translation_of: Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat translation_of_original: Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/prototype +original_slug: Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/prototype ---
    {{JSRef("Global_Objects", "NumberFormat", "Intl,Collator,DateTimeFormat")}}
    diff --git a/files/ru/conflicting/web/javascript/reference/global_objects/map/index.html b/files/ru/conflicting/web/javascript/reference/global_objects/map/index.html index a3af6a0c61..2cdca5b3b0 100644 --- a/files/ru/conflicting/web/javascript/reference/global_objects/map/index.html +++ b/files/ru/conflicting/web/javascript/reference/global_objects/map/index.html @@ -1,8 +1,9 @@ --- title: Map.prototype -slug: Web/JavaScript/Reference/Global_Objects/Map/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/Map translation_of: Web/JavaScript/Reference/Global_Objects/Map translation_of_original: Web/JavaScript/Reference/Global_Objects/Map/prototype +original_slug: Web/JavaScript/Reference/Global_Objects/Map/prototype ---
    {{JSRef}}
    diff --git a/files/ru/conflicting/web/javascript/reference/global_objects/number/index.html b/files/ru/conflicting/web/javascript/reference/global_objects/number/index.html index 259d8a3fb3..251386b750 100644 --- a/files/ru/conflicting/web/javascript/reference/global_objects/number/index.html +++ b/files/ru/conflicting/web/javascript/reference/global_objects/number/index.html @@ -1,6 +1,6 @@ --- title: Number.prototype -slug: Web/JavaScript/Reference/Global_Objects/Number/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/Number tags: - JavaScript - Number @@ -9,6 +9,7 @@ tags: - Reference translation_of: Web/JavaScript/Reference/Global_Objects/Number translation_of_original: Web/JavaScript/Reference/Global_Objects/Number/prototype +original_slug: Web/JavaScript/Reference/Global_Objects/Number/prototype ---
    {{JSRef("Global_Objects", "Number")}}
    diff --git a/files/ru/conflicting/web/javascript/reference/global_objects/object/index.html b/files/ru/conflicting/web/javascript/reference/global_objects/object/index.html index aaa398171d..27b29f5934 100644 --- a/files/ru/conflicting/web/javascript/reference/global_objects/object/index.html +++ b/files/ru/conflicting/web/javascript/reference/global_objects/object/index.html @@ -1,6 +1,6 @@ --- title: Object.prototype -slug: Web/JavaScript/Reference/Global_Objects/Object/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/Object tags: - JavaScript - Object @@ -8,6 +8,7 @@ tags: - Reference translation_of: Web/JavaScript/Reference/Global_Objects/Object translation_of_original: Web/JavaScript/Reference/Global_Objects/Object/prototype +original_slug: Web/JavaScript/Reference/Global_Objects/Object/prototype ---
    {{JSRef("Global_Objects", "Object")}}
    diff --git a/files/ru/conflicting/web/javascript/reference/global_objects/promise/index.html b/files/ru/conflicting/web/javascript/reference/global_objects/promise/index.html index 65384e8346..517ac975fc 100644 --- a/files/ru/conflicting/web/javascript/reference/global_objects/promise/index.html +++ b/files/ru/conflicting/web/javascript/reference/global_objects/promise/index.html @@ -1,12 +1,13 @@ --- title: Promise.prototype -slug: Web/JavaScript/Reference/Global_Objects/Promise/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/Promise tags: - JavaScript - Обещание - Свойство translation_of: Web/JavaScript/Reference/Global_Objects/Promise translation_of_original: Web/JavaScript/Reference/Global_Objects/Promise/prototype +original_slug: Web/JavaScript/Reference/Global_Objects/Promise/prototype ---
    {{JSRef}}
    diff --git a/files/ru/conflicting/web/javascript/reference/global_objects/proxy/proxy/index.html b/files/ru/conflicting/web/javascript/reference/global_objects/proxy/proxy/index.html index 472e9d4735..6690f5b5bf 100644 --- a/files/ru/conflicting/web/javascript/reference/global_objects/proxy/proxy/index.html +++ b/files/ru/conflicting/web/javascript/reference/global_objects/proxy/proxy/index.html @@ -1,6 +1,6 @@ --- title: Proxy handler -slug: Web/JavaScript/Reference/Global_Objects/Proxy/handler +slug: conflicting/Web/JavaScript/Reference/Global_Objects/Proxy/Proxy tags: - ECMAScript 2015 - JavaScript @@ -12,6 +12,7 @@ tags: - ловушки translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy translation_of_original: Web/JavaScript/Reference/Global_Objects/Proxy/handler +original_slug: Web/JavaScript/Reference/Global_Objects/Proxy/handler ---
    {{JSRef}}
    diff --git a/files/ru/conflicting/web/javascript/reference/global_objects/rangeerror/index.html b/files/ru/conflicting/web/javascript/reference/global_objects/rangeerror/index.html index 0e1df7fb7c..9f3a393d34 100644 --- a/files/ru/conflicting/web/javascript/reference/global_objects/rangeerror/index.html +++ b/files/ru/conflicting/web/javascript/reference/global_objects/rangeerror/index.html @@ -1,6 +1,6 @@ --- title: RangeError.prototype -slug: Web/JavaScript/Reference/Global_Objects/RangeError/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/RangeError tags: - Error - JavaScript @@ -9,6 +9,7 @@ tags: - RangeError translation_of: Web/JavaScript/Reference/Global_Objects/RangeError translation_of_original: Web/JavaScript/Reference/Global_Objects/RangeError/prototype +original_slug: Web/JavaScript/Reference/Global_Objects/RangeError/prototype ---
    {{JSRef("Global_Objects", "Error", "EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError")}}
    diff --git a/files/ru/conflicting/web/javascript/reference/global_objects/referenceerror/index.html b/files/ru/conflicting/web/javascript/reference/global_objects/referenceerror/index.html index 1c73b6cb4e..541fdaf0a1 100644 --- a/files/ru/conflicting/web/javascript/reference/global_objects/referenceerror/index.html +++ b/files/ru/conflicting/web/javascript/reference/global_objects/referenceerror/index.html @@ -1,6 +1,6 @@ --- title: ReferenceError.prototype -slug: Web/JavaScript/Reference/Global_Objects/ReferenceError/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/ReferenceError tags: - Error - JavaScript @@ -9,6 +9,7 @@ tags: - ReferenceError translation_of: Web/JavaScript/Reference/Global_Objects/ReferenceError translation_of_original: Web/JavaScript/Reference/Global_Objects/ReferenceError/prototype +original_slug: Web/JavaScript/Reference/Global_Objects/ReferenceError/prototype ---
    {{JSRef("Global_Objects", "Error", "EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError")}}
    diff --git a/files/ru/conflicting/web/javascript/reference/global_objects/regexp/index.html b/files/ru/conflicting/web/javascript/reference/global_objects/regexp/index.html index b0a655760c..8162ff726f 100644 --- a/files/ru/conflicting/web/javascript/reference/global_objects/regexp/index.html +++ b/files/ru/conflicting/web/javascript/reference/global_objects/regexp/index.html @@ -1,6 +1,6 @@ --- title: RegExp.prototype -slug: Web/JavaScript/Reference/Global_Objects/RegExp/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/RegExp tags: - JavaScript - Property @@ -10,6 +10,7 @@ tags: - регулярные выражения translation_of: Web/JavaScript/Reference/Global_Objects/RegExp translation_of_original: Web/JavaScript/Reference/Global_Objects/RegExp/prototype +original_slug: Web/JavaScript/Reference/Global_Objects/RegExp/prototype ---
    {{JSRef("Global_Objects", "RegExp")}}
    diff --git a/files/ru/conflicting/web/javascript/reference/global_objects/set/index.html b/files/ru/conflicting/web/javascript/reference/global_objects/set/index.html index a09b758046..6609e026ae 100644 --- a/files/ru/conflicting/web/javascript/reference/global_objects/set/index.html +++ b/files/ru/conflicting/web/javascript/reference/global_objects/set/index.html @@ -1,8 +1,9 @@ --- title: Set.prototype -slug: Web/JavaScript/Reference/Global_Objects/Set/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/Set translation_of: Web/JavaScript/Reference/Global_Objects/Set translation_of_original: Web/JavaScript/Reference/Global_Objects/Set/prototype +original_slug: Web/JavaScript/Reference/Global_Objects/Set/prototype ---
    {{JSRef}}
    diff --git a/files/ru/conflicting/web/javascript/reference/global_objects/string/index.html b/files/ru/conflicting/web/javascript/reference/global_objects/string/index.html index 66537d9ae8..8a2b8f4d63 100644 --- a/files/ru/conflicting/web/javascript/reference/global_objects/string/index.html +++ b/files/ru/conflicting/web/javascript/reference/global_objects/string/index.html @@ -1,6 +1,6 @@ --- title: String.prototype -slug: Web/JavaScript/Reference/Global_Objects/String/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/String tags: - JavaScript - Property @@ -9,6 +9,7 @@ tags: - String translation_of: Web/JavaScript/Reference/Global_Objects/String translation_of_original: Web/JavaScript/Reference/Global_Objects/String/prototype +original_slug: Web/JavaScript/Reference/Global_Objects/String/prototype ---
    {{JSRef("Global_Objects", "String")}}
    diff --git a/files/ru/conflicting/web/javascript/reference/global_objects/symbol/index.html b/files/ru/conflicting/web/javascript/reference/global_objects/symbol/index.html index b9ce5254e6..9da7ee5440 100644 --- a/files/ru/conflicting/web/javascript/reference/global_objects/symbol/index.html +++ b/files/ru/conflicting/web/javascript/reference/global_objects/symbol/index.html @@ -1,6 +1,6 @@ --- title: Symbol.prototype -slug: Web/JavaScript/Reference/Global_Objects/Symbol/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/Symbol tags: - ECMAScript6 - JavaScript @@ -8,6 +8,7 @@ tags: - Символы translation_of: Web/JavaScript/Reference/Global_Objects/Symbol translation_of_original: Web/JavaScript/Reference/Global_Objects/Symbol/prototype +original_slug: Web/JavaScript/Reference/Global_Objects/Symbol/prototype ---
    {{JSRef}}
    diff --git a/files/ru/conflicting/web/javascript/reference/global_objects/syntaxerror/index.html b/files/ru/conflicting/web/javascript/reference/global_objects/syntaxerror/index.html index 840ac61f2b..20340178e9 100644 --- a/files/ru/conflicting/web/javascript/reference/global_objects/syntaxerror/index.html +++ b/files/ru/conflicting/web/javascript/reference/global_objects/syntaxerror/index.html @@ -1,6 +1,6 @@ --- title: SyntaxError.prototype -slug: Web/JavaScript/Reference/Global_Objects/SyntaxError/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/SyntaxError tags: - Error - JavaScript @@ -9,6 +9,7 @@ tags: - SyntaxError translation_of: Web/JavaScript/Reference/Global_Objects/SyntaxError translation_of_original: Web/JavaScript/Reference/Global_Objects/SyntaxError/prototype +original_slug: Web/JavaScript/Reference/Global_Objects/SyntaxError/prototype ---
    {{JSRef("Global_Objects", "Error", "EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError")}}
    diff --git a/files/ru/conflicting/web/javascript/reference/global_objects/typedarray/index.html b/files/ru/conflicting/web/javascript/reference/global_objects/typedarray/index.html index 1b79a06ad9..76b18ce93b 100644 --- a/files/ru/conflicting/web/javascript/reference/global_objects/typedarray/index.html +++ b/files/ru/conflicting/web/javascript/reference/global_objects/typedarray/index.html @@ -1,11 +1,12 @@ --- title: TypedArray.prototype -slug: Web/JavaScript/Reference/Global_Objects/TypedArray/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/TypedArray tags: - TypedArray - Типизированный массив translation_of: Web/JavaScript/Reference/Global_Objects/TypedArray translation_of_original: Web/JavaScript/Reference/Global_Objects/TypedArray/prototype +original_slug: Web/JavaScript/Reference/Global_Objects/TypedArray/prototype ---
    {{JSRef}}
    diff --git a/files/ru/conflicting/web/javascript/reference/global_objects/typeerror/index.html b/files/ru/conflicting/web/javascript/reference/global_objects/typeerror/index.html index 87a22a4a94..0c83655781 100644 --- a/files/ru/conflicting/web/javascript/reference/global_objects/typeerror/index.html +++ b/files/ru/conflicting/web/javascript/reference/global_objects/typeerror/index.html @@ -1,6 +1,6 @@ --- title: TypeError.prototype -slug: Web/JavaScript/Reference/Global_Objects/TypeError/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/TypeError tags: - Error - JavaScript @@ -9,6 +9,7 @@ tags: - TypeError translation_of: Web/JavaScript/Reference/Global_Objects/TypeError translation_of_original: Web/JavaScript/Reference/Global_Objects/TypeError/prototype +original_slug: Web/JavaScript/Reference/Global_Objects/TypeError/prototype ---
    {{JSRef("Global_Objects", "Error", "EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError")}}
    diff --git a/files/ru/conflicting/web/javascript/reference/global_objects/urierror/index.html b/files/ru/conflicting/web/javascript/reference/global_objects/urierror/index.html index 9998443521..65bae4f674 100644 --- a/files/ru/conflicting/web/javascript/reference/global_objects/urierror/index.html +++ b/files/ru/conflicting/web/javascript/reference/global_objects/urierror/index.html @@ -1,6 +1,6 @@ --- title: URIError.prototype -slug: Web/JavaScript/Reference/Global_Objects/URIError/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/URIError tags: - Error - JavaScript @@ -9,6 +9,7 @@ tags: - URIError translation_of: Web/JavaScript/Reference/Global_Objects/URIError translation_of_original: Web/JavaScript/Reference/Global_Objects/URIError/prototype +original_slug: Web/JavaScript/Reference/Global_Objects/URIError/prototype ---
    {{JSRef("Global_Objects", "Error", "EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError")}}
    diff --git a/files/ru/conflicting/web/javascript/reference/global_objects/weakmap/index.html b/files/ru/conflicting/web/javascript/reference/global_objects/weakmap/index.html index 56e1cf2fd8..aa72a7f092 100644 --- a/files/ru/conflicting/web/javascript/reference/global_objects/weakmap/index.html +++ b/files/ru/conflicting/web/javascript/reference/global_objects/weakmap/index.html @@ -1,8 +1,9 @@ --- title: WeakMap.prototype -slug: Web/JavaScript/Reference/Global_Objects/WeakMap/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/WeakMap translation_of: Web/JavaScript/Reference/Global_Objects/WeakMap translation_of_original: Web/JavaScript/Reference/Global_Objects/WeakMap/prototype +original_slug: Web/JavaScript/Reference/Global_Objects/WeakMap/prototype ---
    {{JSRef}}
    diff --git a/files/ru/conflicting/web/javascript/reference/global_objects/weakset/index.html b/files/ru/conflicting/web/javascript/reference/global_objects/weakset/index.html index 00725e2331..fe31196afe 100644 --- a/files/ru/conflicting/web/javascript/reference/global_objects/weakset/index.html +++ b/files/ru/conflicting/web/javascript/reference/global_objects/weakset/index.html @@ -1,6 +1,6 @@ --- title: WeakSet.prototype -slug: Web/JavaScript/Reference/Global_Objects/WeakSet/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/WeakSet tags: - ECMAScript6 - JavaScript @@ -8,6 +8,7 @@ tags: - WeakSet translation_of: Web/JavaScript/Reference/Global_Objects/WeakSet translation_of_original: Web/JavaScript/Reference/Global_Objects/WeakSet/prototype +original_slug: Web/JavaScript/Reference/Global_Objects/WeakSet/prototype ---
    {{JSRef("Global_Objects", "WeakSet")}}
    diff --git a/files/ru/conflicting/web/javascript/reference/operators/index.html b/files/ru/conflicting/web/javascript/reference/operators/index.html index f1091e3706..85a37e17a8 100644 --- a/files/ru/conflicting/web/javascript/reference/operators/index.html +++ b/files/ru/conflicting/web/javascript/reference/operators/index.html @@ -1,11 +1,12 @@ --- title: Арифметические операции -slug: Web/JavaScript/Reference/Operators/Arithmetic_Operators +slug: conflicting/Web/JavaScript/Reference/Operators tags: - JavaScript - Операторы translation_of: Web/JavaScript/Reference/Operators translation_of_original: Web/JavaScript/Reference/Operators/Arithmetic_Operators +original_slug: Web/JavaScript/Reference/Operators/Arithmetic_Operators ---
    {{jsSidebar("Operators")}}
    diff --git a/files/ru/conflicting/web/javascript/reference/operators_69135a8d5772f8b6e45265523df05d89/index.html b/files/ru/conflicting/web/javascript/reference/operators_69135a8d5772f8b6e45265523df05d89/index.html index ee0565dc94..a08c948525 100644 --- a/files/ru/conflicting/web/javascript/reference/operators_69135a8d5772f8b6e45265523df05d89/index.html +++ b/files/ru/conflicting/web/javascript/reference/operators_69135a8d5772f8b6e45265523df05d89/index.html @@ -1,11 +1,13 @@ --- title: Операторы сравнения -slug: Web/JavaScript/Reference/Operators/Операторы_сравнения +slug: >- + conflicting/Web/JavaScript/Reference/Operators_69135a8d5772f8b6e45265523df05d89 tags: - JavaScript - Операторы translation_of: Web/JavaScript/Reference/Operators translation_of_original: Web/JavaScript/Reference/Operators/Comparison_Operators +original_slug: Web/JavaScript/Reference/Operators/Операторы_сравнения ---
    {{jsSidebar("Operators")}}
    diff --git a/files/ru/conflicting/web/javascript/reference/operators_7c8eb9475d97a4a734c5991857698560/index.html b/files/ru/conflicting/web/javascript/reference/operators_7c8eb9475d97a4a734c5991857698560/index.html index ba4703c2c3..11aea9ec89 100644 --- a/files/ru/conflicting/web/javascript/reference/operators_7c8eb9475d97a4a734c5991857698560/index.html +++ b/files/ru/conflicting/web/javascript/reference/operators_7c8eb9475d97a4a734c5991857698560/index.html @@ -1,11 +1,13 @@ --- title: Битовые операции -slug: Web/JavaScript/Reference/Operators/Bitwise_Operators +slug: >- + conflicting/Web/JavaScript/Reference/Operators_7c8eb9475d97a4a734c5991857698560 tags: - JavaScript - Оператор translation_of: Web/JavaScript/Reference/Operators translation_of_original: Web/JavaScript/Reference/Operators/Bitwise_Operators +original_slug: Web/JavaScript/Reference/Operators/Bitwise_Operators ---
    {{jsSidebar("Operators")}}
    diff --git a/files/ru/conflicting/web/javascript/reference/operators_843c998343f0cdaa5699874c806d4cea/index.html b/files/ru/conflicting/web/javascript/reference/operators_843c998343f0cdaa5699874c806d4cea/index.html index b840f1e584..eeb43a5072 100644 --- a/files/ru/conflicting/web/javascript/reference/operators_843c998343f0cdaa5699874c806d4cea/index.html +++ b/files/ru/conflicting/web/javascript/reference/operators_843c998343f0cdaa5699874c806d4cea/index.html @@ -1,8 +1,10 @@ --- title: Логические операторы -slug: Web/JavaScript/Reference/Operators/Логические_операторы +slug: >- + conflicting/Web/JavaScript/Reference/Operators_843c998343f0cdaa5699874c806d4cea translation_of: Web/JavaScript/Reference/Operators translation_of_original: Web/JavaScript/Reference/Operators/Logical_Operators +original_slug: Web/JavaScript/Reference/Operators/Логические_операторы ---
    {{jsSidebar("Operators")}}
    diff --git a/files/ru/conflicting/web/javascript/reference/operators_8d54701de06af40a7c984517cbe87b3e/index.html b/files/ru/conflicting/web/javascript/reference/operators_8d54701de06af40a7c984517cbe87b3e/index.html index 5399324df0..a084333733 100644 --- a/files/ru/conflicting/web/javascript/reference/operators_8d54701de06af40a7c984517cbe87b3e/index.html +++ b/files/ru/conflicting/web/javascript/reference/operators_8d54701de06af40a7c984517cbe87b3e/index.html @@ -1,11 +1,13 @@ --- title: Операторы присваивания -slug: Web/JavaScript/Reference/Operators/Assignment_Operators +slug: >- + conflicting/Web/JavaScript/Reference/Operators_8d54701de06af40a7c984517cbe87b3e tags: - JavaScript - Оператор translation_of: Web/JavaScript/Reference/Operators#Assignment_operators translation_of_original: Web/JavaScript/Reference/Operators/Assignment_Operators +original_slug: Web/JavaScript/Reference/Operators/Assignment_Operators ---
    {{jsSidebar("Operators")}}
    diff --git a/files/ru/conflicting/web/javascript/reference/statements/switch/index.html b/files/ru/conflicting/web/javascript/reference/statements/switch/index.html index c1f3f6b923..373d7c8a17 100644 --- a/files/ru/conflicting/web/javascript/reference/statements/switch/index.html +++ b/files/ru/conflicting/web/javascript/reference/statements/switch/index.html @@ -1,6 +1,6 @@ --- title: default -slug: Web/JavaScript/Reference/Statements/default +slug: conflicting/Web/JavaScript/Reference/Statements/switch tags: - JavaScript - Keyword @@ -8,6 +8,7 @@ tags: - export translation_of: Web/JavaScript/Reference/Statements/switch translation_of_original: Web/JavaScript/Reference/Statements/default +original_slug: Web/JavaScript/Reference/Statements/default ---
    {{jsSidebar("Statements")}}
    diff --git a/files/ru/conflicting/web/media/formats/index.html b/files/ru/conflicting/web/media/formats/index.html index 9f86b15ff2..a6ae3f4e38 100644 --- a/files/ru/conflicting/web/media/formats/index.html +++ b/files/ru/conflicting/web/media/formats/index.html @@ -1,8 +1,9 @@ --- title: Форматы медиа поддерживаемые HTML audio и video элементами -slug: Web/HTML/Поддерживаемые_медиа_форматы +slug: conflicting/Web/Media/Formats translation_of: Web/Media/Formats translation_of_original: Web/HTML/Supported_media_formats +original_slug: Web/HTML/Поддерживаемые_медиа_форматы ---

    {{ HTMLElement("audio") }} и {{ HTMLElement("video") }} элементы предоставляют поддержку для проигрывания аудио и видео медиа без нужды в плагинах. Формат медиафайла состоит из контейнера, содержащего один или несколько потоков данных, закодированных с использованием формата сжатия, называемого кодеком. Контейнер идентифицируется по расширению файла. Потоки внутри контейнера имеют несколько типов, которые могут включать в себя видео, аудио, данные или титры. Один контейнер (т. е. медиафайл) может содержать несколько потоков одного типа. В аудио- и видео- потоках находятся кодеки. Кодек — сокращенние слов "кодера-декодер" — является алгоритмом сжатия данных в файле. Каждый тип контейнера имеет только определенные кодеки, которые он поддерживает.

    diff --git a/files/ru/conflicting/web/progressive_web_apps/index.html b/files/ru/conflicting/web/progressive_web_apps/index.html index 8d8c8ba678..ff8150db65 100644 --- a/files/ru/conflicting/web/progressive_web_apps/index.html +++ b/files/ru/conflicting/web/progressive_web_apps/index.html @@ -1,8 +1,9 @@ --- title: Адаптивный дизайн -slug: Web_Development/Mobile/Responsive_design +slug: conflicting/Web/Progressive_web_apps translation_of: Web/Progressive_web_apps translation_of_original: Web/Guide/Responsive_design +original_slug: Web_Development/Mobile/Responsive_design ---

    As a reaction to the problems associated with the separate sites approach to developing Web sites for both mobile and desktop, a relatively new idea (which is actually quite old) is growing in popularity: ditch user-agent detection, and instead make your page respond on the client-side to the browser’s capabilities. This approach, introduced by Ethan Marcotte in his article for A List Apart, came to be known as Responsive Web Design. Like the separate sites approach, responsive Web design has positive and negative aspects.

    The Advantages

    diff --git a/files/ru/conflicting/web/progressive_web_apps_628955cdadd77b10ec99de034fc76374/index.html b/files/ru/conflicting/web/progressive_web_apps_628955cdadd77b10ec99de034fc76374/index.html index 1ed152b1e8..26b2ec685c 100644 --- a/files/ru/conflicting/web/progressive_web_apps_628955cdadd77b10ec99de034fc76374/index.html +++ b/files/ru/conflicting/web/progressive_web_apps_628955cdadd77b10ec99de034fc76374/index.html @@ -1,6 +1,6 @@ --- title: Заметный -slug: Web/Progressive_web_apps/Заметный +slug: conflicting/Web/Progressive_web_apps_628955cdadd77b10ec99de034fc76374 tags: - Веб-манифест - Видимый @@ -10,6 +10,7 @@ tags: - Современные веб-приложения translation_of: Web/Progressive_web_apps translation_of_original: Web/Progressive_web_apps/Discoverable +original_slug: Web/Progressive_web_apps/Заметный ---
    Как только вы опубликуете новое веб-приложение, вы захотите, чтобы мир узнал об этом. Поисковые системы, конечно, помогают, но, обычно, большее внимание уделяется тому, как Ваши приложения представлены на результатах поиска. Новый манифест W3C для веб-приложений может помочь с этим и предоставить дополнительные возможности.
    diff --git a/files/ru/games/anatomy/index.html b/files/ru/games/anatomy/index.html index 0396fc4159..6935f33666 100644 --- a/files/ru/games/anatomy/index.html +++ b/files/ru/games/anatomy/index.html @@ -1,7 +1,8 @@ --- title: Анатомия видеоигры -slug: Games/Анатомия +slug: Games/Anatomy translation_of: Games/Anatomy +original_slug: Games/Анатомия ---
    {{GamesSidebar}}
    diff --git a/files/ru/games/introduction/index.html b/files/ru/games/introduction/index.html index 65d1aed2c0..56359a41eb 100644 --- a/files/ru/games/introduction/index.html +++ b/files/ru/games/introduction/index.html @@ -1,11 +1,12 @@ --- title: Ввод в разработку Web-игр -slug: Games/Ввод +slug: Games/Introduction tags: - Firefox OS - Игры - уроки translation_of: Games/Introduction +original_slug: Games/Ввод ---
    {{GamesSidebar}}
    diff --git a/files/ru/games/tools/asm.js/index.html b/files/ru/games/tools/asm.js/index.html index 3f9b2afde0..08e08bb6bc 100644 --- a/files/ru/games/tools/asm.js/index.html +++ b/files/ru/games/tools/asm.js/index.html @@ -1,11 +1,12 @@ --- title: asm.js -slug: Games/Инструменты/asm.js +slug: Games/Tools/asm.js tags: - JavaScript - WebAssembly - asm.js translation_of: Games/Tools/asm.js +original_slug: Games/Инструменты/asm.js ---
    {{GamesSidebar}}
    diff --git a/files/ru/games/tools/index.html b/files/ru/games/tools/index.html index 8981085874..8129376e06 100644 --- a/files/ru/games/tools/index.html +++ b/files/ru/games/tools/index.html @@ -1,7 +1,8 @@ --- title: Инструменты для разработки игр -slug: Games/Инструменты +slug: Games/Tools translation_of: Games/Tools +original_slug: Games/Инструменты ---
    {{GamesSidebar}}
    {{IncludeSubnav("/en-US/docs/Games")}}
    diff --git a/files/ru/games/tutorials/2d_breakout_game_phaser/bounce_off_the_walls/index.html b/files/ru/games/tutorials/2d_breakout_game_phaser/bounce_off_the_walls/index.html index aedabaaf25..0b945f61fc 100644 --- a/files/ru/games/tutorials/2d_breakout_game_phaser/bounce_off_the_walls/index.html +++ b/files/ru/games/tutorials/2d_breakout_game_phaser/bounce_off_the_walls/index.html @@ -1,7 +1,8 @@ --- title: Отскакивания -slug: Games/Tutorials/Создание_2D_Breakout_игры_на_Phaser/Bounce_off_the_walls +slug: Games/Tutorials/2D_breakout_game_Phaser/Bounce_off_the_walls translation_of: Games/Tutorials/2D_breakout_game_Phaser/Bounce_off_the_walls +original_slug: Games/Tutorials/Создание_2D_Breakout_игры_на_Phaser/Bounce_off_the_walls ---
    {{GamesSidebar}}
    diff --git a/files/ru/games/tutorials/2d_breakout_game_phaser/build_the_brick_field/index.html b/files/ru/games/tutorials/2d_breakout_game_phaser/build_the_brick_field/index.html index ffdd6c1d6d..4b68f11f31 100644 --- a/files/ru/games/tutorials/2d_breakout_game_phaser/build_the_brick_field/index.html +++ b/files/ru/games/tutorials/2d_breakout_game_phaser/build_the_brick_field/index.html @@ -1,7 +1,8 @@ --- title: Создание кирпичей -slug: Games/Tutorials/Создание_2D_Breakout_игры_на_Phaser/Создание_кирпичей +slug: Games/Tutorials/2D_breakout_game_Phaser/Build_the_brick_field translation_of: Games/Tutorials/2D_breakout_game_Phaser/Build_the_brick_field +original_slug: Games/Tutorials/Создание_2D_Breakout_игры_на_Phaser/Создание_кирпичей ---
    {{GamesSidebar}}
    diff --git a/files/ru/games/tutorials/2d_breakout_game_phaser/collision_detection/index.html b/files/ru/games/tutorials/2d_breakout_game_phaser/collision_detection/index.html index e3fb27724b..f8bf45148e 100644 --- a/files/ru/games/tutorials/2d_breakout_game_phaser/collision_detection/index.html +++ b/files/ru/games/tutorials/2d_breakout_game_phaser/collision_detection/index.html @@ -1,7 +1,8 @@ --- title: Обработка коллизий -slug: Games/Tutorials/Создание_2D_Breakout_игры_на_Phaser/Обработка_коллизий +slug: Games/Tutorials/2D_breakout_game_Phaser/Collision_detection translation_of: Games/Tutorials/2D_breakout_game_Phaser/Collision_detection +original_slug: Games/Tutorials/Создание_2D_Breakout_игры_на_Phaser/Обработка_коллизий ---
    {{GamesSidebar}}
    diff --git a/files/ru/games/tutorials/2d_breakout_game_phaser/extra_lives/index.html b/files/ru/games/tutorials/2d_breakout_game_phaser/extra_lives/index.html index b6bb403469..94734655f6 100644 --- a/files/ru/games/tutorials/2d_breakout_game_phaser/extra_lives/index.html +++ b/files/ru/games/tutorials/2d_breakout_game_phaser/extra_lives/index.html @@ -1,7 +1,8 @@ --- title: Жизни -slug: Games/Tutorials/Создание_2D_Breakout_игры_на_Phaser/Жизни +slug: Games/Tutorials/2D_breakout_game_Phaser/Extra_lives translation_of: Games/Tutorials/2D_breakout_game_Phaser/Extra_lives +original_slug: Games/Tutorials/Создание_2D_Breakout_игры_на_Phaser/Жизни ---
    {{GamesSidebar}}
    diff --git a/files/ru/games/tutorials/2d_breakout_game_phaser/game_over/index.html b/files/ru/games/tutorials/2d_breakout_game_phaser/game_over/index.html index a617f8969d..1916b9b931 100644 --- a/files/ru/games/tutorials/2d_breakout_game_phaser/game_over/index.html +++ b/files/ru/games/tutorials/2d_breakout_game_phaser/game_over/index.html @@ -1,7 +1,8 @@ --- title: Game over -slug: Games/Tutorials/Создание_2D_Breakout_игры_на_Phaser/Game_over +slug: Games/Tutorials/2D_breakout_game_Phaser/Game_over translation_of: Games/Tutorials/2D_breakout_game_Phaser/Game_over +original_slug: Games/Tutorials/Создание_2D_Breakout_игры_на_Phaser/Game_over ---
    {{GamesSidebar}}
    diff --git a/files/ru/games/tutorials/2d_breakout_game_phaser/index.html b/files/ru/games/tutorials/2d_breakout_game_phaser/index.html index 05a0439cc7..c99663b5ef 100644 --- a/files/ru/games/tutorials/2d_breakout_game_phaser/index.html +++ b/files/ru/games/tutorials/2d_breakout_game_phaser/index.html @@ -1,6 +1,6 @@ --- title: 2D игра на Phaser -slug: Games/Tutorials/Создание_2D_Breakout_игры_на_Phaser +slug: Games/Tutorials/2D_breakout_game_Phaser tags: - 2D - Canvas @@ -11,6 +11,7 @@ tags: - Руководство - туториал translation_of: Games/Tutorials/2D_breakout_game_Phaser +original_slug: Games/Tutorials/Создание_2D_Breakout_игры_на_Phaser ---
    {{GamesSidebar}}
    diff --git a/files/ru/games/tutorials/2d_breakout_game_phaser/initialize_the_framework/index.html b/files/ru/games/tutorials/2d_breakout_game_phaser/initialize_the_framework/index.html index bf1fac5bfc..aab8ab6cf4 100644 --- a/files/ru/games/tutorials/2d_breakout_game_phaser/initialize_the_framework/index.html +++ b/files/ru/games/tutorials/2d_breakout_game_phaser/initialize_the_framework/index.html @@ -1,6 +1,6 @@ --- title: Инициализация фреймворка -slug: Games/Tutorials/Создание_2D_Breakout_игры_на_Phaser/Initialize_the_framework +slug: Games/Tutorials/2D_breakout_game_Phaser/Initialize_the_framework tags: - 2D - Canvas @@ -10,6 +10,7 @@ tags: - Игры - Руководство translation_of: Games/Tutorials/2D_breakout_game_Phaser/Initialize_the_framework +original_slug: Games/Tutorials/Создание_2D_Breakout_игры_на_Phaser/Initialize_the_framework ---
    {{GamesSidebar}}
    diff --git a/files/ru/games/tutorials/2d_breakout_game_phaser/load_the_assets_and_print_them_on_screen/index.html b/files/ru/games/tutorials/2d_breakout_game_phaser/load_the_assets_and_print_them_on_screen/index.html index 57274a84c0..278bc8c91c 100644 --- a/files/ru/games/tutorials/2d_breakout_game_phaser/load_the_assets_and_print_them_on_screen/index.html +++ b/files/ru/games/tutorials/2d_breakout_game_phaser/load_the_assets_and_print_them_on_screen/index.html @@ -1,7 +1,7 @@ --- title: Загрузка ресурсов и их вывод slug: >- - Games/Tutorials/Создание_2D_Breakout_игры_на_Phaser/Load_the_assets_and_print_them_on_screen + Games/Tutorials/2D_breakout_game_Phaser/Load_the_assets_and_print_them_on_screen tags: - 2D - Canvas @@ -9,6 +9,8 @@ tags: - Phaser translation_of: >- Games/Tutorials/2D_breakout_game_Phaser/Load_the_assets_and_print_them_on_screen +original_slug: >- + Games/Tutorials/Создание_2D_Breakout_игры_на_Phaser/Load_the_assets_and_print_them_on_screen ---
    {{GamesSidebar}}
    diff --git a/files/ru/games/tutorials/2d_breakout_game_phaser/move_the_ball/index.html b/files/ru/games/tutorials/2d_breakout_game_phaser/move_the_ball/index.html index deed4a9494..38f9ccd46a 100644 --- a/files/ru/games/tutorials/2d_breakout_game_phaser/move_the_ball/index.html +++ b/files/ru/games/tutorials/2d_breakout_game_phaser/move_the_ball/index.html @@ -1,6 +1,6 @@ --- title: Движение мяча -slug: Games/Tutorials/Создание_2D_Breakout_игры_на_Phaser/Move_the_ball +slug: Games/Tutorials/2D_breakout_game_Phaser/Move_the_ball tags: - 2D - Beginner @@ -8,6 +8,7 @@ tags: - JavaScript - Phaser translation_of: Games/Tutorials/2D_breakout_game_Phaser/Move_the_ball +original_slug: Games/Tutorials/Создание_2D_Breakout_игры_на_Phaser/Move_the_ball ---
    {{GamesSidebar}}
    diff --git a/files/ru/games/tutorials/2d_breakout_game_phaser/physics/index.html b/files/ru/games/tutorials/2d_breakout_game_phaser/physics/index.html index 20acffa239..d7acbb92d3 100644 --- a/files/ru/games/tutorials/2d_breakout_game_phaser/physics/index.html +++ b/files/ru/games/tutorials/2d_breakout_game_phaser/physics/index.html @@ -1,6 +1,6 @@ --- title: Физика -slug: Games/Tutorials/Создание_2D_Breakout_игры_на_Phaser/Physics +slug: Games/Tutorials/2D_breakout_game_Phaser/Physics tags: - 2D - Beginner @@ -8,6 +8,7 @@ tags: - JavaScript - Phaser translation_of: Games/Tutorials/2D_breakout_game_Phaser/Physics +original_slug: Games/Tutorials/Создание_2D_Breakout_игры_на_Phaser/Physics ---
    {{GamesSidebar}}
    diff --git a/files/ru/games/tutorials/2d_breakout_game_phaser/player_paddle_and_controls/index.html b/files/ru/games/tutorials/2d_breakout_game_phaser/player_paddle_and_controls/index.html index 46713cdddb..35001ea66d 100644 --- a/files/ru/games/tutorials/2d_breakout_game_phaser/player_paddle_and_controls/index.html +++ b/files/ru/games/tutorials/2d_breakout_game_phaser/player_paddle_and_controls/index.html @@ -1,7 +1,8 @@ --- title: Платформа и управление -slug: Games/Tutorials/Создание_2D_Breakout_игры_на_Phaser/Платформа_и_управление +slug: Games/Tutorials/2D_breakout_game_Phaser/Player_paddle_and_controls translation_of: Games/Tutorials/2D_breakout_game_Phaser/Player_paddle_and_controls +original_slug: Games/Tutorials/Создание_2D_Breakout_игры_на_Phaser/Платформа_и_управление ---
    {{GamesSidebar}}
    diff --git a/files/ru/games/tutorials/2d_breakout_game_phaser/scaling/index.html b/files/ru/games/tutorials/2d_breakout_game_phaser/scaling/index.html index 395e9f52de..78495b48fa 100644 --- a/files/ru/games/tutorials/2d_breakout_game_phaser/scaling/index.html +++ b/files/ru/games/tutorials/2d_breakout_game_phaser/scaling/index.html @@ -1,6 +1,6 @@ --- title: Масштабирование -slug: Games/Tutorials/Создание_2D_Breakout_игры_на_Phaser/Scaling +slug: Games/Tutorials/2D_breakout_game_Phaser/Scaling tags: - 2D - Canvas @@ -8,6 +8,7 @@ tags: - Phaser - Начинающий translation_of: Games/Tutorials/2D_breakout_game_Phaser/Scaling +original_slug: Games/Tutorials/Создание_2D_Breakout_игры_на_Phaser/Scaling ---
    {{GamesSidebar}}
    diff --git a/files/ru/games/tutorials/2d_breakout_game_phaser/the_score/index.html b/files/ru/games/tutorials/2d_breakout_game_phaser/the_score/index.html index 9f4b18ace1..e7a01d4c61 100644 --- a/files/ru/games/tutorials/2d_breakout_game_phaser/the_score/index.html +++ b/files/ru/games/tutorials/2d_breakout_game_phaser/the_score/index.html @@ -1,7 +1,8 @@ --- title: Очки -slug: Games/Tutorials/Создание_2D_Breakout_игры_на_Phaser/Очки +slug: Games/Tutorials/2D_breakout_game_Phaser/The_score translation_of: Games/Tutorials/2D_breakout_game_Phaser/The_score +original_slug: Games/Tutorials/Создание_2D_Breakout_игры_на_Phaser/Очки ---
    {{GamesSidebar}}
    diff --git a/files/ru/games/tutorials/2d_breakout_game_phaser/win_the_game/index.html b/files/ru/games/tutorials/2d_breakout_game_phaser/win_the_game/index.html index 21ff763bbf..72e57116a1 100644 --- a/files/ru/games/tutorials/2d_breakout_game_phaser/win_the_game/index.html +++ b/files/ru/games/tutorials/2d_breakout_game_phaser/win_the_game/index.html @@ -1,7 +1,8 @@ --- title: Победа -slug: Games/Tutorials/Создание_2D_Breakout_игры_на_Phaser/Победа +slug: Games/Tutorials/2D_breakout_game_Phaser/Win_the_game translation_of: Games/Tutorials/2D_breakout_game_Phaser/Win_the_game +original_slug: Games/Tutorials/Создание_2D_Breakout_игры_на_Phaser/Победа ---
    {{GamesSidebar}}
    diff --git a/files/ru/games/tutorials/2d_breakout_game_pure_javascript/build_the_brick_field/index.html b/files/ru/games/tutorials/2d_breakout_game_pure_javascript/build_the_brick_field/index.html index 91c7ea5405..c2b6c134d0 100644 --- a/files/ru/games/tutorials/2d_breakout_game_pure_javascript/build_the_brick_field/index.html +++ b/files/ru/games/tutorials/2d_breakout_game_pure_javascript/build_the_brick_field/index.html @@ -1,7 +1,8 @@ --- title: Создаем зону кирпичей -slug: Games/Tutorials/2D_Breakout_game_pure_JavaScript/Создаем_зону_кирпичей +slug: Games/Tutorials/2D_Breakout_game_pure_JavaScript/Build_the_brick_field translation_of: Games/Tutorials/2D_Breakout_game_pure_JavaScript/Build_the_brick_field +original_slug: Games/Tutorials/2D_Breakout_game_pure_JavaScript/Создаем_зону_кирпичей ---
    {{GamesSidebar}}
    diff --git a/files/ru/games/tutorials/2d_breakout_game_pure_javascript/collision_detection/index.html b/files/ru/games/tutorials/2d_breakout_game_pure_javascript/collision_detection/index.html index 576f17e7cc..3f03e0f748 100644 --- a/files/ru/games/tutorials/2d_breakout_game_pure_javascript/collision_detection/index.html +++ b/files/ru/games/tutorials/2d_breakout_game_pure_javascript/collision_detection/index.html @@ -1,7 +1,8 @@ --- title: Обнаружение столкновений -slug: Games/Tutorials/2D_Breakout_game_pure_JavaScript/Обнаружение_столкновений +slug: Games/Tutorials/2D_Breakout_game_pure_JavaScript/Collision_detection translation_of: Games/Tutorials/2D_Breakout_game_pure_JavaScript/Collision_detection +original_slug: Games/Tutorials/2D_Breakout_game_pure_JavaScript/Обнаружение_столкновений ---
    {{GamesSidebar}}
    diff --git a/files/ru/games/tutorials/2d_breakout_game_pure_javascript/create_the_canvas_and_draw_on_it/index.html b/files/ru/games/tutorials/2d_breakout_game_pure_javascript/create_the_canvas_and_draw_on_it/index.html index 84f23b0e2a..aa69757156 100644 --- a/files/ru/games/tutorials/2d_breakout_game_pure_javascript/create_the_canvas_and_draw_on_it/index.html +++ b/files/ru/games/tutorials/2d_breakout_game_pure_javascript/create_the_canvas_and_draw_on_it/index.html @@ -1,7 +1,7 @@ --- title: Создание Canvas и рисование на нём slug: >- - Games/Tutorials/2D_Breakout_game_pure_JavaScript/Создание_Canvas_и_рисование_на_нём + Games/Tutorials/2D_Breakout_game_pure_JavaScript/Create_the_Canvas_and_draw_on_it tags: - JavaScript - Игры @@ -9,6 +9,8 @@ tags: - создание игр translation_of: >- Games/Tutorials/2D_Breakout_game_pure_JavaScript/Create_the_Canvas_and_draw_on_it +original_slug: >- + Games/Tutorials/2D_Breakout_game_pure_JavaScript/Создание_Canvas_и_рисование_на_нём ---
    {{GamesSidebar}}
    diff --git a/files/ru/games/tutorials/2d_breakout_game_pure_javascript/finishing_up/index.html b/files/ru/games/tutorials/2d_breakout_game_pure_javascript/finishing_up/index.html index d8f40896e1..6a62e46e4e 100644 --- a/files/ru/games/tutorials/2d_breakout_game_pure_javascript/finishing_up/index.html +++ b/files/ru/games/tutorials/2d_breakout_game_pure_javascript/finishing_up/index.html @@ -1,12 +1,13 @@ --- title: Заключение -slug: Games/Tutorials/2D_Breakout_game_pure_JavaScript/Заключение +slug: Games/Tutorials/2D_Breakout_game_pure_JavaScript/Finishing_up tags: - Игры - Канва - Начинающий - жизни translation_of: Games/Tutorials/2D_Breakout_game_pure_JavaScript/Finishing_up +original_slug: Games/Tutorials/2D_Breakout_game_pure_JavaScript/Заключение ---
    {{GamesSidebar}}
    diff --git a/files/ru/games/tutorials/2d_breakout_game_pure_javascript/mouse_controls/index.html b/files/ru/games/tutorials/2d_breakout_game_pure_javascript/mouse_controls/index.html index b3ab4efaca..50ed197298 100644 --- a/files/ru/games/tutorials/2d_breakout_game_pure_javascript/mouse_controls/index.html +++ b/files/ru/games/tutorials/2d_breakout_game_pure_javascript/mouse_controls/index.html @@ -1,12 +1,13 @@ --- title: Управление мышью -slug: Games/Tutorials/2D_Breakout_game_pure_JavaScript/Управление_мышью +slug: Games/Tutorials/2D_Breakout_game_pure_JavaScript/Mouse_controls tags: - Игры - Начинающий - канвас - мышь translation_of: Games/Tutorials/2D_Breakout_game_pure_JavaScript/Mouse_controls +original_slug: Games/Tutorials/2D_Breakout_game_pure_JavaScript/Управление_мышью ---
    {{GamesSidebar}}
    diff --git a/files/ru/games/tutorials/2d_breakout_game_pure_javascript/move_the_ball/index.html b/files/ru/games/tutorials/2d_breakout_game_pure_javascript/move_the_ball/index.html index f6d26cfc52..45f650d6b4 100644 --- a/files/ru/games/tutorials/2d_breakout_game_pure_javascript/move_the_ball/index.html +++ b/files/ru/games/tutorials/2d_breakout_game_pure_javascript/move_the_ball/index.html @@ -1,6 +1,6 @@ --- title: Переместить мяч -slug: Games/Tutorials/2D_Breakout_game_pure_JavaScript/Переместить_мяч +slug: Games/Tutorials/2D_Breakout_game_pure_JavaScript/Move_the_ball tags: - 2D - Canvas @@ -10,6 +10,7 @@ tags: - передвижение - пишем игру на javascript translation_of: Games/Tutorials/2D_Breakout_game_pure_JavaScript/Move_the_ball +original_slug: Games/Tutorials/2D_Breakout_game_pure_JavaScript/Переместить_мяч ---
    {{GamesSidebar}}
    diff --git a/files/ru/glossary/404/index.html b/files/ru/glossary/404/index.html index f198be3c1c..aa92181684 100644 --- a/files/ru/glossary/404/index.html +++ b/files/ru/glossary/404/index.html @@ -1,7 +1,8 @@ --- title: '404' -slug: Словарь/404 +slug: Glossary/404 translation_of: Glossary/404 +original_slug: Словарь/404 ---

    Ошибка 404 - код стандартного ответа, означающий, что {{Glossary("Server", "сервер")}} не может найти ресурс по запрашиваемому адресу.

    diff --git a/files/ru/glossary/502/index.html b/files/ru/glossary/502/index.html index 5879d7c153..e7419ccf16 100644 --- a/files/ru/glossary/502/index.html +++ b/files/ru/glossary/502/index.html @@ -1,11 +1,12 @@ --- title: Код ошибки 502 -slug: Словарь/502 +slug: Glossary/502 tags: - '502' - Глоссарий - Коды ошибок HTTP translation_of: Glossary/502 +original_slug: Словарь/502 ---

    Код ошибки в протоколе {{Glossary("HTTP")}}, означающий "Ошибка шлюза".

    diff --git a/files/ru/glossary/abstraction/index.html b/files/ru/glossary/abstraction/index.html index 860db30148..4fdfba39c1 100644 --- a/files/ru/glossary/abstraction/index.html +++ b/files/ru/glossary/abstraction/index.html @@ -1,7 +1,8 @@ --- title: Абстракция -slug: Словарь/Abstraction +slug: Glossary/Abstraction translation_of: Glossary/Abstraction +original_slug: Словарь/Abstraction ---

    Абстракция(обобщение) в {{Glossary("computer programming", "программировании")}} это способ дать упрощённое представление о компонентах системы, скрыть их сложность и детали реализации, предоставив подходящий {{Glossary("API", "программный интерфейс")}}.

    diff --git a/files/ru/glossary/accessibility/index.html b/files/ru/glossary/accessibility/index.html index 2d2b7fc6da..5c9ab60f03 100644 --- a/files/ru/glossary/accessibility/index.html +++ b/files/ru/glossary/accessibility/index.html @@ -1,11 +1,12 @@ --- title: Accessibility -slug: Словарь/Доступность +slug: Glossary/Accessibility tags: - Доступность web-контента - Словарь - доступность translation_of: Glossary/Accessibility +original_slug: Словарь/Доступность ---

    Accessibility (Web Accessibility, A11Y - "Доступность Web-контента") - регламентирует лучшие практики обеспечения работоспособности и доступности сайта вне зависимости от физических и технических ограничений. Web Accessibility описывается и обсуждается в рамках Инициативы по обеспечению доступности {{Glossary("W3С")}} ({{Glossary("WAI","Web Accessibility Initiative (WAI)")}}).

    diff --git a/files/ru/glossary/adobe_flash/index.html b/files/ru/glossary/adobe_flash/index.html index 645dc39095..d9b241ab93 100644 --- a/files/ru/glossary/adobe_flash/index.html +++ b/files/ru/glossary/adobe_flash/index.html @@ -1,12 +1,13 @@ --- title: Adobe Flash -slug: Словарь/Adobe-Flash +slug: Glossary/Adobe_Flash tags: - Adobe - Flash - Словарь - инфраструктура translation_of: Glossary/Adobe_Flash +original_slug: Словарь/Adobe-Flash ---

    Adobe Flash, Flash - устаревшая технология, разработанная Adobe, благодаря которой стали возможными {{Interwiki("wikipedia", "Rich Internet Application", "RIA")}} (Rich Internet Application), векторная графика и мультимедия. Для использования Flash необходимо установить соответствующий плагин в ваш {{Glossary("Browser","браузер")}}.

    diff --git a/files/ru/glossary/ajax/index.html b/files/ru/glossary/ajax/index.html index 6c727c56cf..bd13d82abd 100644 --- a/files/ru/glossary/ajax/index.html +++ b/files/ru/glossary/ajax/index.html @@ -1,12 +1,13 @@ --- title: AJAX -slug: Словарь/AJAX +slug: Glossary/AJAX tags: - AJAX - Glossary - Словарь - инфраструктура translation_of: Glossary/AJAX +original_slug: Словарь/AJAX ---

    Асинхронный {{Glossary ("JavaScript")}} And {{Glossary ("XML")}} (AJAX) - это практика программирования для создания более сложных, динамических веб-страниц с использованием технологии, известной как {{Glossary("XHR_(XMLHttpRequest)","XMLHttpRequest")}}..

    diff --git a/files/ru/glossary/algorithm/index.html b/files/ru/glossary/algorithm/index.html index 83fc20ca7e..61cd5b1a56 100644 --- a/files/ru/glossary/algorithm/index.html +++ b/files/ru/glossary/algorithm/index.html @@ -1,11 +1,12 @@ --- title: Алгоритм -slug: Словарь/Algorithm +slug: Glossary/Algorithm tags: - CodingScripting - Glossary - Словарь translation_of: Glossary/Algorithm +original_slug: Словарь/Algorithm ---

    Алгоритм - это независимая серия инструкций для выполнения функции.

    diff --git a/files/ru/glossary/api/index.html b/files/ru/glossary/api/index.html index b83cecf0fe..621cdec35b 100644 --- a/files/ru/glossary/api/index.html +++ b/files/ru/glossary/api/index.html @@ -1,10 +1,11 @@ --- title: API -slug: Словарь/API +slug: Glossary/API tags: - Словарь - инфраструктура translation_of: Glossary/API +original_slug: Словарь/API ---

    API (Application Programming Interface - интерфейс программных приложений )   это установка функций и правил позволяющая взаимодействовать между программным обеспечением, которое предоставляет API и другими программными компонентами. В Веб разработке, под API обычно подразумевают набор стандартных методов, свойств, событий и URL ссылок для взаимодействия с Веб контентом.

    diff --git a/files/ru/glossary/apple_safari/index.html b/files/ru/glossary/apple_safari/index.html index fafc97520d..bac747d02f 100644 --- a/files/ru/glossary/apple_safari/index.html +++ b/files/ru/glossary/apple_safari/index.html @@ -1,6 +1,6 @@ --- title: Apple Safari -slug: Словарь/Apple_Safari +slug: Glossary/Apple_Safari tags: - Glossary - Navigation @@ -8,6 +8,7 @@ tags: - Навигация - Словарь translation_of: Glossary/Apple_Safari +original_slug: Словарь/Apple_Safari ---

    Safari (Сафари) - это {{Glossary("Browser","веб-браузер")}} разработанный компанией Apple, входит в состав операционных систем Mac OS X и iOS. Safari работает на движке WebKit.

    diff --git a/files/ru/glossary/application_context/index.html b/files/ru/glossary/application_context/index.html index f14a41fa76..9989eea079 100644 --- a/files/ru/glossary/application_context/index.html +++ b/files/ru/glossary/application_context/index.html @@ -1,11 +1,12 @@ --- title: Контекст приложения -slug: Словарь/application_context +slug: Glossary/application_context tags: - CodingScripting - Glossary - Словарь translation_of: Glossary/application_context +original_slug: Словарь/application_context ---

    Контекст приложения - это  browsing context (контекст просмотра) верхнего уровня, к которому применяется манифест

    diff --git a/files/ru/glossary/argument/index.html b/files/ru/glossary/argument/index.html index c1314c28f9..ae32934042 100644 --- a/files/ru/glossary/argument/index.html +++ b/files/ru/glossary/argument/index.html @@ -1,11 +1,12 @@ --- title: Аргумент -slug: Словарь/Аргумент +slug: Glossary/Argument tags: - CodingScripting - Glossary - JavaScript translation_of: Glossary/Argument +original_slug: Словарь/Аргумент ---

    Аргумент - это {{glossary("value")}} ({{Glossary("primitive")}} или {{Glossary("object")}}) , переданное в качестве входных данных в {{Glossary("function")}}.

    diff --git a/files/ru/glossary/aria/index.html b/files/ru/glossary/aria/index.html index 3571787b67..cc5265c347 100644 --- a/files/ru/glossary/aria/index.html +++ b/files/ru/glossary/aria/index.html @@ -1,12 +1,13 @@ --- title: ARIA -slug: Словарь/ARIA +slug: Glossary/ARIA tags: - Accessibility - Glossary - Словарь - доступность translation_of: Glossary/ARIA +original_slug: Словарь/ARIA ---

    ARIA (Accessible Rich {{glossary("Internet")}} Applications) является {{Glossary("W3C")}} спецификацией для добавления семантики и других метаданных в {{Glossary("HTML")}} при использовании вспомогательных технологий.

    diff --git a/files/ru/glossary/arpa/index.html b/files/ru/glossary/arpa/index.html index 4de5199f91..0e56b840f5 100644 --- a/files/ru/glossary/arpa/index.html +++ b/files/ru/glossary/arpa/index.html @@ -1,12 +1,13 @@ --- title: ARPA -slug: Словарь/ARPA +slug: Glossary/ARPA tags: - Glossary - Infrastructure - Словарь - инфраструктура translation_of: Glossary/ARPA +original_slug: Словарь/ARPA ---

    .arpa (address and routing parameter area) является {{glossary("TLD","доменом верхнего уровня")}}, который используется в интернет-инфраструктуре, особенно в обратном DNS запросе (т.е., определить {{glossary("domain name", "имя домена")}} для заданного {{glossary("IP address", "IP адреса")}}).

    diff --git a/files/ru/glossary/arpanet/index.html b/files/ru/glossary/arpanet/index.html index e3261c859a..c4b205ef8a 100644 --- a/files/ru/glossary/arpanet/index.html +++ b/files/ru/glossary/arpanet/index.html @@ -1,12 +1,13 @@ --- title: Arpanet -slug: Словарь/Arpanet +slug: Glossary/Arpanet tags: - Glossary - Infrastructure - Словарь - инфраструктура translation_of: Glossary/Arpanet +original_slug: Словарь/Arpanet ---

    Компьютерная сеть ARPAnet (advanced research projects agency network) является одной из первых компьютерных сетей, была создана в 1969 как надежная среда для передачи конфиденциальных военных данных и для подключения ведущих исследовательских групп по всей территории Соединенных Штатов. Изначально ARPAnet использовал NCP (протокол сетевого управления), а затем первую версию интернет-протокола или пакета {{glossary ("TCP")}} / {{glossary ("IPv6", "IP")}}, что делает ARPAnet выдающейся частью зарождающегося {{glossary("Internet","Интернета")}}. ARPAnet была закрыта в начале 1990 года.

    diff --git a/files/ru/glossary/array/index.html b/files/ru/glossary/array/index.html index 3fb91ee460..ceeeb06fb1 100644 --- a/files/ru/glossary/array/index.html +++ b/files/ru/glossary/array/index.html @@ -1,12 +1,13 @@ --- title: Maccив -slug: Словарь/Массив +slug: Glossary/array tags: - JavaScript - - 'Массив,' + - Массив, - Программирование - Словарь translation_of: Glossary/array +original_slug: Словарь/Массив ---

    Массив это упорядоченный набор информации (смотрите еще {{Glossary("Примитив")}} или {{Glossary("Объект")}} зависит от языка). Массивы используются, что сохранять множество значений или единичные переменные. Это относится к переменным, которые могут сохранять только одно значение.

    diff --git a/files/ru/glossary/ascii/index.html b/files/ru/glossary/ascii/index.html index a0b95692b3..92422b71da 100644 --- a/files/ru/glossary/ascii/index.html +++ b/files/ru/glossary/ascii/index.html @@ -1,10 +1,11 @@ --- title: ASCII -slug: Словарь/ASCII +slug: Glossary/ASCII tags: - Glossary - Infrastructure translation_of: Glossary/ASCII +original_slug: Словарь/ASCII ---

    ASCII (American Standard Code for Information Interchange) это один из самых известных методов кодирования, используемый компьютерами для превращения букв, чисел, знаков препинания и кодов управления в цифровую форму. С 2007, {{Glossary("UTF-8")}} заменил его в Web.

    diff --git a/files/ru/glossary/asynchronous/index.html b/files/ru/glossary/asynchronous/index.html index 36ca8210e4..573b4a3d93 100644 --- a/files/ru/glossary/asynchronous/index.html +++ b/files/ru/glossary/asynchronous/index.html @@ -1,11 +1,12 @@ --- title: Асинхронный -slug: Словарь/Asynchronous +slug: Glossary/Asynchronous tags: - Glossary - Web - WebMechanics translation_of: Glossary/Asynchronous +original_slug: Словарь/Asynchronous ---

    Асинхронный относится к среде связи, где каждый участник получает и обрабатывает сообщение, когда это удобно, или возможно, а не сразу.

    diff --git a/files/ru/glossary/atag/index.html b/files/ru/glossary/atag/index.html index 9723709297..d282b4ecc8 100644 --- a/files/ru/glossary/atag/index.html +++ b/files/ru/glossary/atag/index.html @@ -1,6 +1,6 @@ --- title: ATAG -slug: Словарь/ATAG +slug: Glossary/ATAG tags: - ATAG - Accessibility @@ -9,6 +9,7 @@ tags: - Общедоступность - Словарь translation_of: Glossary/ATAG +original_slug: Словарь/ATAG ---

    ATAG (Authoring Tool {{glossary("Accessibility")}} Guidelines) - это {{Glossary("W3C")}} рекомендации для создания общедоступных инструментов разработчика, которые создают общедоступный контент.

    diff --git a/files/ru/glossary/attribute/index.html b/files/ru/glossary/attribute/index.html index c7b35806e5..28c88e31b1 100644 --- a/files/ru/glossary/attribute/index.html +++ b/files/ru/glossary/attribute/index.html @@ -1,10 +1,11 @@ --- title: Атрибут -slug: Словарь/Атрибут +slug: Glossary/Attribute tags: - HTML - Словарь translation_of: Glossary/Attribute +original_slug: Словарь/Атрибут ---

    Атрибут является частью {{Glossary("tag", "тега")}}, позволяющей менять его поведение или добавлять метаданные. Атрибут всегда представлен в виде название=значение, которые определяют соответственно идентификатор атрибута и присвоенное ему значение.

    diff --git a/files/ru/glossary/bandwidth/index.html b/files/ru/glossary/bandwidth/index.html index ec85dd71fd..63d30b2a49 100644 --- a/files/ru/glossary/bandwidth/index.html +++ b/files/ru/glossary/bandwidth/index.html @@ -1,10 +1,11 @@ --- title: Пропускная способность -slug: Словарь/Bandwidth +slug: Glossary/Bandwidth tags: - Глоссарий - инфраструктура translation_of: Glossary/Bandwidth +original_slug: Словарь/Bandwidth ---

    Пропускная способность (скорость передачи данных) - мера количества информции, которая может быть передана по каналу связи за заданный промежуток времени. Обычно измеряется в величинах, кратных битам в секунду (бит/с), например в мегабитах (Мбит/с) или гигабитах (Гбит/с) в секунду.

    diff --git a/files/ru/glossary/base64/index.html b/files/ru/glossary/base64/index.html index b85f3671ef..248dcbbf87 100644 --- a/files/ru/glossary/base64/index.html +++ b/files/ru/glossary/base64/index.html @@ -1,7 +1,8 @@ --- title: Кодирование и декодирование в формате Base64 -slug: Web/API/WindowBase64/Base64_encoding_and_decoding +slug: Glossary/Base64 translation_of: Glossary/Base64 +original_slug: Web/API/WindowBase64/Base64_encoding_and_decoding ---

    Base64 - это группа cхожих binary-to-text encoding схем, которые представляют двоичные данные в ASCII-формате методом перевода в radix-64 представление. Термин Base64 происходит от a specific MIME content transfer encoding.

    diff --git a/files/ru/glossary/baseline/index.html b/files/ru/glossary/baseline/index.html index 38a90cea5d..d17f1c57e1 100644 --- a/files/ru/glossary/baseline/index.html +++ b/files/ru/glossary/baseline/index.html @@ -1,6 +1,6 @@ --- title: Baseline -slug: Словарь/baseline +slug: Glossary/baseline tags: - CSS - SVG @@ -8,6 +8,7 @@ tags: - Глоссарий - типография translation_of: Glossary/baseline +original_slug: Словарь/baseline ---

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

    diff --git a/files/ru/glossary/bidi/index.html b/files/ru/glossary/bidi/index.html index ee2b409eb7..cbac07f584 100644 --- a/files/ru/glossary/bidi/index.html +++ b/files/ru/glossary/bidi/index.html @@ -1,12 +1,13 @@ --- title: BiDi -slug: Словарь/BiDi +slug: Glossary/BiDi tags: - Accessibility - Glossary - Общедоступность - Словарь translation_of: Glossary/BiDi +original_slug: Словарь/BiDi ---

    BiDi (BiDirectional) относится к документу, содержащему текст справа налево и слева направо. Даже когда оба направления встречаются в одном и том же абзаце, текст на каждом языке должен отображаться в правильной направленности.

    diff --git a/files/ru/glossary/bigint/index.html b/files/ru/glossary/bigint/index.html index cf03adc216..9a2440c6cf 100644 --- a/files/ru/glossary/bigint/index.html +++ b/files/ru/glossary/bigint/index.html @@ -1,12 +1,13 @@ --- title: BigInt -slug: Словарь/BigInt +slug: Glossary/BigInt tags: - BigInt - JavaScript - Глоссарий - Длинная арифметика translation_of: Glossary/BigInt +original_slug: Словарь/BigInt ---

    В {{Glossary("JavaScript")}}, BigInt - числовой тип данных, который может представлять данные в формате длинной арифметики. В других языках программирования могут быть другие числовые типы, например целые числа, числа с плавающей запятой, числа двойной точности, большие числа.

    diff --git a/files/ru/glossary/blink/index.html b/files/ru/glossary/blink/index.html index 005f5ef336..a594d5cd1a 100644 --- a/files/ru/glossary/blink/index.html +++ b/files/ru/glossary/blink/index.html @@ -1,7 +1,8 @@ --- title: Blink -slug: Словарь/Blink +slug: Glossary/Blink translation_of: Glossary/Blink +original_slug: Словарь/Blink ---

    Blink - это браузерный движок с открытым исходным кодом разработанный Google как часть Chromium (и следовательно как часть Chrome). Конкретней, Blink - это ответвление WebCore библиотеки {{glossary("WebKit")}}, поддерживающей макет, рендеринг, и {{Glossary("DOM")}}.

    diff --git a/files/ru/glossary/block/scripting/index.html b/files/ru/glossary/block/scripting/index.html index 71e5b54af7..0a75dfa2e1 100644 --- a/files/ru/glossary/block/scripting/index.html +++ b/files/ru/glossary/block/scripting/index.html @@ -1,11 +1,12 @@ --- title: Блок (скриптинг) -slug: Glossary/Block/Скриптинг +slug: Glossary/Block/Scripting tags: - JavaScript - Глоссарий - Словарь translation_of: Glossary/Block/Scripting +original_slug: Glossary/Block/Скриптинг ---

    В {{glossary("JavaScript")}} блок это набор связанных {{glossary("statement","statements")}} заключенных в скобки ("{}"). Например, можно поместить блок инструкций после блока {{jsxref("Statements/if...else","if (condition)")}}, чтобы интерпретатор выполнял код в блоке, если условие имеет значение true, или пропускал целый блок, если значение условия false.

    diff --git a/files/ru/glossary/boolean/index.html b/files/ru/glossary/boolean/index.html index f89e0ff8b1..239f003788 100644 --- a/files/ru/glossary/boolean/index.html +++ b/files/ru/glossary/boolean/index.html @@ -1,6 +1,6 @@ --- -title: 'Boolean (Булев, Логический тип данных)' -slug: Словарь/Boolean +title: Boolean (Булев, Логический тип данных) +slug: Glossary/Boolean tags: - Boolean - JavaScript @@ -9,6 +9,7 @@ tags: - Типы данных - языки программирования translation_of: Glossary/Boolean +original_slug: Словарь/Boolean ---

    Boolean (Булев, Логический тип данных) — примитивный тип данных в информатике, которые могут принимать два возможных значения, иногда называемых истиной (true) и ложью (false). Например, в JavaScript Булевы состояния часто используются для того, чтобы определить какие части кода выполнять (например, в операторах if) или повторять (например, циклы for).

    diff --git a/files/ru/glossary/bootstrap/index.html b/files/ru/glossary/bootstrap/index.html index ef1da85d02..7b85ce61f6 100644 --- a/files/ru/glossary/bootstrap/index.html +++ b/files/ru/glossary/bootstrap/index.html @@ -1,6 +1,6 @@ --- title: Bootstrap -slug: Словарь/Bootstrap +slug: Glossary/Bootstrap tags: - Bootstrap - CSS @@ -8,6 +8,7 @@ tags: - Словарь - фреймворк translation_of: Glossary/Bootstrap +original_slug: Словарь/Bootstrap ---

    Bootstrap - это бесплатный фреймворк {{Glossary("HTML")}} , {{Glossary("CSS")}} и {{Glossary("JavaScript")}} с открытым исходным кодом для быстрого создания адаптивных веб-сайтов.

    diff --git a/files/ru/glossary/browser/index.html b/files/ru/glossary/browser/index.html index cdeb2f300b..41a360a289 100644 --- a/files/ru/glossary/browser/index.html +++ b/files/ru/glossary/browser/index.html @@ -1,7 +1,8 @@ --- title: Браузер -slug: Словарь/Browser +slug: Glossary/Browser translation_of: Glossary/Browser +original_slug: Словарь/Browser ---

    Веб браузер — это программа которая извлекает и показывает страницы из {{Glossary("World Wide Web","Web")}}, и даёт пользователям доступ к веб-страницам через {{Glossary("hyperlink","гиперссылки")}}.

    diff --git a/files/ru/glossary/browsing_context/index.html b/files/ru/glossary/browsing_context/index.html index 85baf77aa4..286d8f9a58 100644 --- a/files/ru/glossary/browsing_context/index.html +++ b/files/ru/glossary/browsing_context/index.html @@ -1,7 +1,8 @@ --- title: Browsing context -slug: Словарь/Browsing_context +slug: Glossary/Browsing_context translation_of: Glossary/Browsing_context +original_slug: Словарь/Browsing_context ---

    Browsing context(контекст просмотра) - это окружение, в котором {{glossary("browser")}} отображает {{domxref("Document")}} (на сегодняшний день обычно это вкладки, однако, возможно окно или frame внутри страницы).

    diff --git a/files/ru/glossary/buffer/index.html b/files/ru/glossary/buffer/index.html index 479a9ac4d1..60b07057e1 100644 --- a/files/ru/glossary/buffer/index.html +++ b/files/ru/glossary/buffer/index.html @@ -1,6 +1,6 @@ --- title: Буфер -slug: Словарь/Буфер +slug: Glossary/buffer tags: - Buffer - CodingScripting @@ -9,6 +9,7 @@ tags: - Буфер - Словарь translation_of: Glossary/buffer +original_slug: Словарь/Буфер ---

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

    diff --git "a/files/ru/glossary/b\303\251zier_curve/index.html" "b/files/ru/glossary/b\303\251zier_curve/index.html" index 0952421dda..51a5767329 100644 --- "a/files/ru/glossary/b\303\251zier_curve/index.html" +++ "b/files/ru/glossary/b\303\251zier_curve/index.html" @@ -1,11 +1,12 @@ --- title: Кривая Безье -slug: Словарь/Bézier_curve +slug: Glossary/Bézier_curve tags: - Графика - Кривая Безье - Словарь translation_of: Glossary/Bézier_curve +original_slug: Словарь/Bézier_curve ---

    Кривая Безье — это математически описанная кривая, используемая в компьютерной графике и анимации. В {{Glossary("vector image", "vector images")}} они используются для создания плавных кривых, которые можно бесконечно сильно масштабировать.

    diff --git a/files/ru/glossary/cache/index.html b/files/ru/glossary/cache/index.html index 03803b2895..8709a68a75 100644 --- a/files/ru/glossary/cache/index.html +++ b/files/ru/glossary/cache/index.html @@ -1,7 +1,8 @@ --- title: Кэш -slug: Словарь/Кэш +slug: Glossary/Cache translation_of: Glossary/Cache +original_slug: Словарь/Кэш ---

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

    diff --git a/files/ru/glossary/cacheable/index.html b/files/ru/glossary/cacheable/index.html index 54f93bb14c..9ad921c7a2 100644 --- a/files/ru/glossary/cacheable/index.html +++ b/files/ru/glossary/cacheable/index.html @@ -1,10 +1,11 @@ --- title: Кэшируемые методы -slug: Словарь/cacheable +slug: Glossary/cacheable tags: - Glossary - HTTP translation_of: Glossary/cacheable +original_slug: Словарь/cacheable ---

    Кэшируемые ответы - это HTTP-ответы, которые могут быть закэшированы, то есть сохранены для дальнейшего восстановления и использования позже, тем самым снижая число запросов к серверу. Не все HTTP-ответы могут быть закэшированы. Вот несколько ограничений:

    diff --git a/files/ru/glossary/call_stack/index.html b/files/ru/glossary/call_stack/index.html index 04eb95fdb5..5577bb5cae 100644 --- a/files/ru/glossary/call_stack/index.html +++ b/files/ru/glossary/call_stack/index.html @@ -1,9 +1,10 @@ --- title: Call stack -slug: Словарь/Call_stack +slug: Glossary/Call_stack tags: - Glossary translation_of: Glossary/Call_stack +original_slug: Словарь/Call_stack ---

    Стек вызовов(call stack) - это механизм для интерпретаторов (таких как интерпретатор JavaScript в веб-браузере) для отслеживания текущего местонахождения интерпретатора в скрипте, который вызывает  несколько функций типа {{glossary("function","functions")}}, — какая из функций выполняется на данный момент, какие функции вызываются изнутри этой (выполняемой) функции, какая будет вызвана следующей и т. д.

    diff --git a/files/ru/glossary/callback_function/index.html b/files/ru/glossary/callback_function/index.html index b1433d4ee8..1c9118e4b5 100644 --- a/files/ru/glossary/callback_function/index.html +++ b/files/ru/glossary/callback_function/index.html @@ -1,10 +1,11 @@ --- title: Функция обратного вызова -slug: Словарь/функция_обратного_вызова +slug: Glossary/Callback_function tags: - Callback - Функция обратного вызова translation_of: Glossary/Callback_function +original_slug: Словарь/функция_обратного_вызова ---

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

    diff --git a/files/ru/glossary/canvas/index.html b/files/ru/glossary/canvas/index.html index 56cbc2b5e4..fa51c35472 100644 --- a/files/ru/glossary/canvas/index.html +++ b/files/ru/glossary/canvas/index.html @@ -1,6 +1,6 @@ --- title: Canvas -slug: Словарь/Canvas +slug: Glossary/Canvas tags: - CodingScripting - Glossary @@ -8,6 +8,7 @@ tags: - HTML - JavaScript translation_of: Glossary/Canvas +original_slug: Словарь/Canvas ---

     {{Glossary("HTML")}} {{HTMLElement("canvas")}}  (англ. canvas — «холст», рус. канва́с) элемент предоставляет пустую графическую зону, на которой специальные {{Glossary("JavaScript")}} {{Glossary("API","APIs")}} могут рисовать (такие как Canvas 2D или {{Glossary("WebGL")}}).

    diff --git a/files/ru/glossary/card_sorting/index.html b/files/ru/glossary/card_sorting/index.html index e70834e888..a61cdfce24 100644 --- a/files/ru/glossary/card_sorting/index.html +++ b/files/ru/glossary/card_sorting/index.html @@ -1,10 +1,11 @@ --- title: Card sorting -slug: Словарь/Card_sorting +slug: Glossary/Card_sorting tags: - Дизайн - Сортировка карточками translation_of: Glossary/Card_sorting +original_slug: Словарь/Card_sorting ---

    Сортировка карточек - это простая техника, используемая в информационной архитектуре, когда людям, участвующим в разработке веб-сайта (или другого типа продукта), предлагается записать контент / услуги / функции, которые, по их мнению, должен содержать продукт, а затем организовать эти функции в категории или группировки. Это может быть использовано, например, для определения того, что должно идти на каждой странице веб-сайта. Название происходит от того факта, что сортировка карточек часто осуществляется путем буквального написания предметов для сортировки на карточках, а затем размещения карточек в стопки.

    diff --git a/files/ru/glossary/cdn/index.html b/files/ru/glossary/cdn/index.html index 58b5cf6f8a..b3257cbc40 100644 --- a/files/ru/glossary/cdn/index.html +++ b/files/ru/glossary/cdn/index.html @@ -1,10 +1,11 @@ --- title: CDN -slug: Словарь/CDN +slug: Glossary/CDN tags: - Словарь - инфраструктура translation_of: Glossary/CDN +original_slug: Словарь/CDN ---

    CDN (сеть доставки контента) - это группа серверов, расположенных во многих местах. Эти сервера хранят дубликаты данных, чтобы сервера могли выполнять запросы данных на основе того, какие сервера ближе всего к конечным пользователям. CND увеличивают скорость доступа к сервису уменьшая влияние высокого трафика.

    diff --git a/files/ru/glossary/certified/index.html b/files/ru/glossary/certified/index.html index 20e8e567ff..a82112a784 100644 --- a/files/ru/glossary/certified/index.html +++ b/files/ru/glossary/certified/index.html @@ -1,7 +1,8 @@ --- title: Сертифицировано -slug: Словарь/Сертифицировано +slug: Glossary/Certified translation_of: Glossary/Certified +original_slug: Словарь/Сертифицировано ---

    Сертифицировано означает, что приложение, информация или передача данных успешно прошли проверку экспертами в соответствующих областях, таким образом сигнализируя о достоверности, безопасности и законченности.

    diff --git a/files/ru/glossary/character/index.html b/files/ru/glossary/character/index.html index 248ab150d6..afa4a80970 100644 --- a/files/ru/glossary/character/index.html +++ b/files/ru/glossary/character/index.html @@ -1,9 +1,10 @@ --- title: Символ -slug: Словарь/Character +slug: Glossary/Character tags: - Glossary translation_of: Glossary/Character +original_slug: Словарь/Character ---

    Символ (англ. Character или Symbol) - буква, цифра, знак препинания, непечатаемый символ (например возврат коретки).  {{glossary("UTF-8")}} - самый распространенный стандарт кодировки символов, содержащий большое количество графем популярных языков людей.

    diff --git a/files/ru/glossary/character_encoding/index.html b/files/ru/glossary/character_encoding/index.html index c8bb4782e6..a3d2cc9a96 100644 --- a/files/ru/glossary/character_encoding/index.html +++ b/files/ru/glossary/character_encoding/index.html @@ -1,11 +1,12 @@ --- title: Кодировка символов -slug: Словарь/character_encoding +slug: Glossary/character_encoding tags: - Composing - Glossary - Словарь translation_of: Glossary/character_encoding +original_slug: Словарь/character_encoding ---

    Кодировка определяет связность между байтами и текстом.  Последовательность байтов допускает различные текстовые интерпретации.  Указывая конкретную кодировку (например, UTF-8), мы указываем, как следует интерпретировать последовательность байтов.

    diff --git a/files/ru/glossary/chrome/index.html b/files/ru/glossary/chrome/index.html index 3f2f4aa62d..098c697b2f 100644 --- a/files/ru/glossary/chrome/index.html +++ b/files/ru/glossary/chrome/index.html @@ -1,11 +1,12 @@ --- title: chrome -slug: Словарь/Chrome +slug: Glossary/Chrome tags: - Chrome - Glossary - WebMechanics - Браузер translation_of: Glossary/Chrome +original_slug: Словарь/Chrome ---

    Не путать с {{glossary("Google Chrome")}}; chrome — видимые элементы {{glossary("Browser", "браузер")}}а, не относящиеся к веб-страницам (например, панели инструментов, панель меню, вкладки).

    diff --git a/files/ru/glossary/cia/index.html b/files/ru/glossary/cia/index.html index 671ddc3046..83e0780d54 100644 --- a/files/ru/glossary/cia/index.html +++ b/files/ru/glossary/cia/index.html @@ -1,10 +1,11 @@ --- title: КЦД -slug: Словарь/КЦД +slug: Glossary/CIA tags: - Безопасность - Глоссарий translation_of: Glossary/CIA +original_slug: Словарь/КЦД ---

    КЦД (Конфиденциальность, Целостность, Доступность) (также называемая триадой КЦД) - модель, регулирующая политику информационной безопасности организации.

    diff --git a/files/ru/glossary/class/index.html b/files/ru/glossary/class/index.html index c096fe93f0..efc434cf67 100644 --- a/files/ru/glossary/class/index.html +++ b/files/ru/glossary/class/index.html @@ -1,11 +1,12 @@ --- title: Класс -slug: Словарь/Class +slug: Glossary/Class tags: - Глоссарий - Написание скриптов - Прототипы translation_of: Glossary/Class +original_slug: Словарь/Class ---

    В ООП класс определяет характеристи объекта. Класс - это шаблон, в котором описываются свойства и методы будущего объекта. Класс - своего рода чертёж по которому будет реализовываться конкретный объект.

    diff --git a/files/ru/glossary/cms/index.html b/files/ru/glossary/cms/index.html index 0123601b27..7930fd8b73 100644 --- a/files/ru/glossary/cms/index.html +++ b/files/ru/glossary/cms/index.html @@ -1,7 +1,8 @@ --- title: CMS -slug: Словарь/CMS +slug: Glossary/CMS translation_of: Glossary/CMS +original_slug: Словарь/CMS ---

    CMS (Content Management System, рус. "Система управления содержимым")  - это программа, которая позволяет пользователям публиковать, организовывать, изменять или удалять различные виды контента: не только текст, но и встроенные картинки, видео, аудио, и интерактивный код.

    diff --git a/files/ru/glossary/codec/index.html b/files/ru/glossary/codec/index.html index bd048430c8..77caf114af 100644 --- a/files/ru/glossary/codec/index.html +++ b/files/ru/glossary/codec/index.html @@ -1,7 +1,8 @@ --- title: Codec -slug: Словарь/Codec +slug: Glossary/Codec translation_of: Glossary/Codec +original_slug: Словарь/Codec ---

    Кодек  (от англ. codec - "coder-decoder")  -  это программа, алгоритм, или же устройство, которое позволяет кодировать и декодировать поток данных. Предоставленный codec знает, как работать со специфичной кодировкой или с технологией сжатия.

    diff --git a/files/ru/glossary/compile/index.html b/files/ru/glossary/compile/index.html index f9a4efe6e7..bb2348800c 100644 --- a/files/ru/glossary/compile/index.html +++ b/files/ru/glossary/compile/index.html @@ -1,9 +1,10 @@ --- title: Compile -slug: Словарь/Compile +slug: Glossary/Compile tags: - Глоссарий translation_of: Glossary/Compile +original_slug: Словарь/Compile ---

    Компиляция - это процесс преобразования компьютерной программы, написанной на данном языке, в эквивалентную программу на другом языке. Компилятор - это программа для выполнения этой задачи. Иногда эту задачу называют также "assembling" или "build", что, как правило, свидетельствует о том, что выполняется не только компиляция, например, упаковка в двоичном формате.

    diff --git a/files/ru/glossary/computer_programming/index.html b/files/ru/glossary/computer_programming/index.html index 24247a348e..cbf13c7f8a 100644 --- a/files/ru/glossary/computer_programming/index.html +++ b/files/ru/glossary/computer_programming/index.html @@ -1,6 +1,6 @@ --- title: Компьютерное программирование -slug: Словарь/Computer_Programming +slug: Glossary/Computer_Programming tags: - Beginner - Computer Programming @@ -9,6 +9,7 @@ tags: - компьютерное программирование - языки программирования translation_of: Glossary/Computer_Programming +original_slug: Словарь/Computer_Programming ---

    Компьютерное программирование - это процесс составления и организации набора инструкций. Они говорят компьютерной программе, что делать на языке, понятном компьютеру. Эти инструкции представлены в виде множества различных языков, таких как C++, Java, JavaScript, HTML, Python, Ruby и Rust.

    diff --git a/files/ru/glossary/conditional/index.html b/files/ru/glossary/conditional/index.html index 945844e79c..4a34f7545c 100644 --- a/files/ru/glossary/conditional/index.html +++ b/files/ru/glossary/conditional/index.html @@ -1,6 +1,6 @@ --- title: Conditional (условное выражение) -slug: Словарь/Conditional +slug: Glossary/Conditional tags: - Beginner - Conditional @@ -8,6 +8,7 @@ tags: - Начинающим - Словарь translation_of: Glossary/Conditional +original_slug: Словарь/Conditional ---

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

    diff --git a/files/ru/glossary/constant/index.html b/files/ru/glossary/constant/index.html index 366f26e0ea..f49d2fb027 100644 --- a/files/ru/glossary/constant/index.html +++ b/files/ru/glossary/constant/index.html @@ -1,10 +1,11 @@ --- title: Constant -slug: Словарь/Константа +slug: Glossary/Constant tags: - Constant - Glossary translation_of: Glossary/Constant +original_slug: Словарь/Константа ---

    Константа хранит значение, которое программист не хочет изменять, например числа(1, 2, 42). С другой стороны, у {{glossary("variable","переменных")}} программист может установить новое {{glossary("value","значение")}} к переменной, имя которой уже используется.

    diff --git a/files/ru/glossary/constructor/index.html b/files/ru/glossary/constructor/index.html index 6304608ca5..95653d5006 100644 --- a/files/ru/glossary/constructor/index.html +++ b/files/ru/glossary/constructor/index.html @@ -1,9 +1,10 @@ --- title: Конструктор -slug: Словарь/Constructor +slug: Glossary/Constructor tags: - Glossary translation_of: Glossary/Constructor +original_slug: Словарь/Constructor ---

    Конструктор принадлежит к определенному классу {{glossary("object")}}, который создается. Конструктор инициализирует этот объект и может предоставлять доступ к его личной информации. Концепция конструкутора может быть применена к большинству {{glossary("OOP","object-oriented programming")}} языков. По существу, конструктор в {{glossary("JavaScript")}} обычно объявляется в экземпляре {{glossary("class")}}.

    diff --git a/files/ru/glossary/cookie/index.html b/files/ru/glossary/cookie/index.html index 994b51f3b9..f674f09488 100644 --- a/files/ru/glossary/cookie/index.html +++ b/files/ru/glossary/cookie/index.html @@ -1,10 +1,11 @@ --- title: Cookie -slug: Словарь/Cookie +slug: Glossary/Cookie tags: - Glossary - WebMechanics translation_of: Glossary/Cookie +original_slug: Словарь/Cookie ---

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

    diff --git a/files/ru/glossary/copyleft/index.html b/files/ru/glossary/copyleft/index.html index 91b70bf322..fcf671d8c2 100644 --- a/files/ru/glossary/copyleft/index.html +++ b/files/ru/glossary/copyleft/index.html @@ -1,12 +1,13 @@ --- title: Copyleft -slug: Словарь/Copyleft +slug: Glossary/Copyleft tags: - Copyleft - Копилефт - Распространение - Словарь translation_of: Glossary/Copyleft +original_slug: Словарь/Copyleft ---

    Copyleft — это термин, обычно относящийся к лицензии, который используется для обозначения того, что такая лицензия требует, что бы распространение данного продукта подчинялось той же лицензии, что и оригинал. Примерами лицензий с copyleft являются лицензии GNU {{Glossary ("GPL")}} (для программного обеспечения) и лицензии Creative Commons SA (Share Alike) (для рисунков, фотографий и т.д.).

    diff --git a/files/ru/glossary/cors/index.html b/files/ru/glossary/cors/index.html index e8100eabfb..8af8e4ec96 100644 --- a/files/ru/glossary/cors/index.html +++ b/files/ru/glossary/cors/index.html @@ -1,7 +1,8 @@ --- title: CORS -slug: Словарь/CORS +slug: Glossary/CORS translation_of: Glossary/CORS +original_slug: Словарь/CORS ---

    CORS (Cross-Origin Resource Sharing, рус. "Совместное использование ресурсов между разными источниками") - это система, состоящая из отправки HTTP заголовков, которые определяют: заблокировать или выполнить запрос к ограниченному ресурсу на веб-странице из другого домена, отличного от домена происхождения запрашиваемого ресурса.

    diff --git a/files/ru/glossary/crawler/index.html b/files/ru/glossary/crawler/index.html index b4a70953c6..6ce6fd2dbe 100644 --- a/files/ru/glossary/crawler/index.html +++ b/files/ru/glossary/crawler/index.html @@ -1,7 +1,8 @@ --- title: Crawler -slug: Словарь/Crawler +slug: Glossary/Crawler translation_of: Glossary/Crawler +original_slug: Словарь/Crawler ---

    Поисковый робот(паук, краулер) часто называемый просто "бот" или "робот" это программа, систематически обходящая {{glossary("World Wide Web","Web")}} для сбора данных со страниц веб-сайтов. Обычно поисковые сервисы (напр. Google, Bing, и пр.) используют поисковых роботов для индексирования сайтов.

    diff --git a/files/ru/glossary/crlf/index.html b/files/ru/glossary/crlf/index.html index d773d3b899..f753f040e9 100644 --- a/files/ru/glossary/crlf/index.html +++ b/files/ru/glossary/crlf/index.html @@ -1,7 +1,8 @@ --- title: CRLF -slug: Словарь/CRLF +slug: Glossary/CRLF translation_of: Glossary/CRLF +original_slug: Словарь/CRLF ---

    CR и LF это управляющие символы или байт-код которые можно использовать для обозначения разрыва строки в текстовых файлах.

    diff --git a/files/ru/glossary/csp/index.html b/files/ru/glossary/csp/index.html index c3ffad563c..a6cf99cbbd 100644 --- a/files/ru/glossary/csp/index.html +++ b/files/ru/glossary/csp/index.html @@ -1,12 +1,13 @@ --- title: CSP -slug: Словарь/CSP +slug: Glossary/CSP tags: - CSP - Content Security Policy - HTTP - Словарь translation_of: Glossary/CSP +original_slug: Словарь/CSP ---

    CSP (Политика безопасности контента) используется для обнаружения и смягчения определенных типов атак, связанных с веб-сайтами, таких как {{Glossary("XSS")}} и инъекции данных.

    diff --git a/files/ru/glossary/csrf/index.html b/files/ru/glossary/csrf/index.html index 287c077616..3cec7a3aec 100644 --- a/files/ru/glossary/csrf/index.html +++ b/files/ru/glossary/csrf/index.html @@ -1,7 +1,8 @@ --- title: CSRF -slug: Словарь/CSRF +slug: Glossary/CSRF translation_of: Glossary/CSRF +original_slug: Словарь/CSRF ---

    CSRF (Cross-Site Request Forgery, рус. "Межсайтовая подделка запроса") - вид атаки, при которой вражеский сайт выдает себя за доверенного пользователя и отсылает на сайт нежелательные комманды. Это может быть сделано, к примеру, с помощью отправки  параметров в {{glossary("URL")}} в конце ссылки с целью перехода куда-либо в другое место.

    diff --git a/files/ru/glossary/css/index.html b/files/ru/glossary/css/index.html index b47954e978..393f03fda6 100644 --- a/files/ru/glossary/css/index.html +++ b/files/ru/glossary/css/index.html @@ -1,11 +1,12 @@ --- title: CSS -slug: Словарь/CSS +slug: Glossary/CSS tags: - CSS - Glossary - Дизайн translation_of: Glossary/CSS +original_slug: Словарь/CSS ---

    CSS (Cascading Style Sheets, или каскадные таблицы стилей) - это декларативный язык, который отвечает за то, как страницы выглядят в {{glossary("browser","веб браузере")}}. CSS стили содержат свойства и их значения, которые и определяют, как будет выглядеть сайт.

    diff --git a/files/ru/glossary/css_preprocessor/index.html b/files/ru/glossary/css_preprocessor/index.html index e517efb0b0..18792b7dbc 100644 --- a/files/ru/glossary/css_preprocessor/index.html +++ b/files/ru/glossary/css_preprocessor/index.html @@ -1,10 +1,11 @@ --- title: CSS препроцессор -slug: Словарь/CSS_preprocessor +slug: Glossary/CSS_preprocessor tags: - CSS - Glossary translation_of: Glossary/CSS_preprocessor +original_slug: Словарь/CSS_preprocessor ---

    CSS препроцессор (CSS preprocessor) - это программа, которая имеет свой собственный синтаксис ({{Glossary("syntax")}}), но может сгенерировать из него {{Glossary("CSS")}} код . Существует множество препроцессоров. Большинство из них расширяет функционал чистого CSS, добавляя такие опции как: примеси, вложенные правила, селекторы наследования и др. Эти особенности облегчают работу с CSS: упрощают чтение кода и его дальнейшую поддержку.

    diff --git a/files/ru/glossary/css_selector/index.html b/files/ru/glossary/css_selector/index.html index c8d8885062..cd525405be 100644 --- a/files/ru/glossary/css_selector/index.html +++ b/files/ru/glossary/css_selector/index.html @@ -1,6 +1,6 @@ --- title: CSS-селектор -slug: Словарь/CSS_Selector +slug: Glossary/CSS_Selector tags: - CSS - CSS-селектор @@ -8,6 +8,7 @@ tags: - Глоссарий - селектор translation_of: Glossary/CSS_Selector +original_slug: Словарь/CSS_Selector ---

    CSS-селектор это часть CSS-правила, которая позволяет Вам указать, к какому элементу (элементам) применить стиль. Например:

    diff --git a/files/ru/glossary/data_structure/index.html b/files/ru/glossary/data_structure/index.html index 192f354fb1..a4780e1a34 100644 --- a/files/ru/glossary/data_structure/index.html +++ b/files/ru/glossary/data_structure/index.html @@ -1,10 +1,11 @@ --- title: Cтруктура данных -slug: Словарь/data_structure +slug: Glossary/Data_structure tags: - Data structure - структура данных translation_of: Glossary/Data_structure +original_slug: Словарь/data_structure ---

    Cтруктура данных (data structure) — способ представления множества данных как связного целого, имеющего определённый программный интерфейс (методы доступа и манипулирования над элементами этих данных).

    diff --git a/files/ru/glossary/decryption/index.html b/files/ru/glossary/decryption/index.html index 1e64097284..e26e24df39 100644 --- a/files/ru/glossary/decryption/index.html +++ b/files/ru/glossary/decryption/index.html @@ -1,7 +1,8 @@ --- title: Дешифрование -slug: Словарь/Дешифрование +slug: Glossary/Decryption translation_of: Glossary/Decryption +original_slug: Словарь/Дешифрование ---

    В {{glossary("cryptography")}}, дешифрование это конвертация {{glossary("ciphertext")}} в {{glossary("cleartext")}}.

    diff --git a/files/ru/glossary/developer_tools/index.html b/files/ru/glossary/developer_tools/index.html index bf976c49fe..e27a125770 100644 --- a/files/ru/glossary/developer_tools/index.html +++ b/files/ru/glossary/developer_tools/index.html @@ -1,10 +1,11 @@ --- title: Инструменты разработчика -slug: Словарь/Инструменты_разработчика +slug: Glossary/Developer_Tools tags: - Инспектор - инструменты translation_of: Glossary/Developer_Tools +original_slug: Словарь/Инструменты_разработчика ---

    Инструменты разработчика (от англ. "development tools" или сокращенно "DevTools") - это программы, которые позволяют создавать, тестировать и отлаживать ({{Glossary("debug")}}) программное обеспечение.

    diff --git a/files/ru/glossary/dns/index.html b/files/ru/glossary/dns/index.html index d40b9ee401..af58b83d0a 100644 --- a/files/ru/glossary/dns/index.html +++ b/files/ru/glossary/dns/index.html @@ -1,12 +1,13 @@ --- title: DNS -slug: Словарь/DNS +slug: Glossary/DNS tags: - DNS - Система доменных имён - Словарь - инфраструктура translation_of: Glossary/DNS +original_slug: Словарь/DNS ---

    DNS (Система доменных имён, англ. Domain Name System) — это иерахическая децентрализованная система именования для интернет-ресурсов подключённых к Интернет, которая ведёт список {{glossary("domain name","доменных имён")}} вместе с их числовыми {{Glossary("IP address","IP-адресами")}} или местонахождениями. DNS позволяет перевести простое запоминаемое {{Glossary("hostname","имя хоста")}} в IP-адрес. DNS lookup (Поиск DNS) — это процесс с помощью которого от DNS-сервер возвращается DNS запись, необходимая для нахождения конкретного компьютерного сервиса в {{Glossary("Internet","Интернет")}} или частной сети.

    diff --git a/files/ru/glossary/doctype/index.html b/files/ru/glossary/doctype/index.html index 6059777378..5f131fea9c 100644 --- a/files/ru/glossary/doctype/index.html +++ b/files/ru/glossary/doctype/index.html @@ -1,6 +1,6 @@ --- title: Doctype -slug: Словарь/Doctype +slug: Glossary/Doctype tags: - Browser - CodingScripting @@ -9,6 +9,7 @@ tags: - HTML - Intro translation_of: Glossary/Doctype +original_slug: Словарь/Doctype ---

    В {{Glossary("HTML")}} объявление типа документа тегом "<!DOCTYPE html>" - обязательная преамбула, расположенная в верхней части документа. Единственное предназначение тега - не допустить переключение {{Glossary("browser","браузера")}} в так называемый режим совместимости (“quirks mode”) во время рендеринга документа; то есть, тег "<!DOCTYPE html>" гарантирует, что браузер с максимальными усилиями будет следовать соответствующей спецификации, а не использовать другой тип рендеринга, несовместимый с некоторыми спецификациями.

    diff --git a/files/ru/glossary/dom/index.html b/files/ru/glossary/dom/index.html index 10e85608e9..d9ed56b665 100644 --- a/files/ru/glossary/dom/index.html +++ b/files/ru/glossary/dom/index.html @@ -1,9 +1,10 @@ --- title: DOM -slug: Словарь/DOM +slug: Glossary/DOM tags: - Словарь translation_of: Glossary/DOM +original_slug: Словарь/DOM ---

    DOM (Document Object Model) это {{glossary("API")}} который представляет и взаимодействует со всеми {{glossary("HTML")}} или {{glossary("XML")}} документами. DOM это модель документа загруженная в {{glossary("browser")}} и представляющая документ как узел дерева, где каждый узел представляет часть (e.g. an {{Glossary("element")}} документа, строку текста, или комментарий).

    diff --git a/files/ru/glossary/domain/index.html b/files/ru/glossary/domain/index.html index f79eaa991e..afa29b6f64 100644 --- a/files/ru/glossary/domain/index.html +++ b/files/ru/glossary/domain/index.html @@ -1,12 +1,13 @@ --- title: Domain -slug: Словарь/Домен +slug: Glossary/Domain tags: - Браузер - домен - инфраструктура - сеть translation_of: Glossary/Domain +original_slug: Словарь/Домен ---

    Домен - это часть компьютерной сети, в которой один объект контролирует ресурсы обработки данных, например веб-сайт.

    diff --git a/files/ru/glossary/domain_name/index.html b/files/ru/glossary/domain_name/index.html index 249e3f60d2..0efde95c0d 100644 --- a/files/ru/glossary/domain_name/index.html +++ b/files/ru/glossary/domain_name/index.html @@ -1,6 +1,6 @@ --- title: Доменное имя -slug: Словарь/Domain_name +slug: Glossary/Domain_name tags: - Domain Name - Glossary @@ -10,6 +10,7 @@ tags: - доменное имя - протокол translation_of: Glossary/Domain_name +original_slug: Словарь/Domain_name ---

    Имя домена является адресом веб-сайта в {{Glossary("Internet","интернете")}}. Доменные имена используются в {{Glossary("URL","URLs")}}, чтобы идентифицировать сервер, на котором находится определенная веб-страница. Имя домена состоит из иерархической последовательности имен (меток), разделенных точками и заканчивающейся   {{glossary("TLD","расширением верхнего уровня")}}.

    diff --git a/files/ru/glossary/dos_attack/index.html b/files/ru/glossary/dos_attack/index.html index 140782b6f9..da78b43cb6 100644 --- a/files/ru/glossary/dos_attack/index.html +++ b/files/ru/glossary/dos_attack/index.html @@ -1,7 +1,8 @@ --- title: DoS атака -slug: Словарь/DOS_attack +slug: Glossary/DOS_attack translation_of: Glossary/DOS_attack +original_slug: Словарь/DOS_attack ---

    DoS (отказ в обслуживании) - это сетевая атака, которая препятствует обычному  использованию ресурсов {{glossary ('server')}}, нагружая сервер "ложными", "фиктивными" запросами.

    diff --git a/files/ru/glossary/dynamic_programming_language/index.html b/files/ru/glossary/dynamic_programming_language/index.html index fe4043c7a6..61b894fa82 100644 --- a/files/ru/glossary/dynamic_programming_language/index.html +++ b/files/ru/glossary/dynamic_programming_language/index.html @@ -1,9 +1,10 @@ --- title: Динамический язык программирования -slug: Словарь/Dynamic_programming_language +slug: Glossary/Dynamic_programming_language tags: - Словарь translation_of: Glossary/Dynamic_programming_language +original_slug: Словарь/Dynamic_programming_language ---

    Динамический язык — язык программирования, который позволяет определять типы данных и осуществлять синтаксический анализ и компиляцию «на лету», на этапе выполнения программы. Динамические языки удобны для быстрой разработки приложений. Например, в JavaScript можно изменить тип переменной, или добавить новые свойства, или методы к объекту в то время, как программа работает.

    diff --git a/files/ru/glossary/ecma/index.html b/files/ru/glossary/ecma/index.html index 335808f037..cc8fbdf023 100644 --- a/files/ru/glossary/ecma/index.html +++ b/files/ru/glossary/ecma/index.html @@ -1,7 +1,8 @@ --- title: ECMA -slug: Словарь/ECMA +slug: Glossary/ECMA translation_of: Glossary/ECMA +original_slug: Словарь/ECMA ---

     

    diff --git a/files/ru/glossary/ecmascript/index.html b/files/ru/glossary/ecmascript/index.html index acaff14a0b..6a1bfe8be8 100644 --- a/files/ru/glossary/ecmascript/index.html +++ b/files/ru/glossary/ecmascript/index.html @@ -1,7 +1,8 @@ --- title: ECMAScript -slug: Словарь/ECMAScript +slug: Glossary/ECMAScript translation_of: Glossary/ECMAScript +original_slug: Словарь/ECMAScript ---

    ECMAScript - это скриптовый язык на котором основан {{glossary("JavaScript")}} . Ecma International - организация отвечающая за стандартизацию ECMAScript.

    diff --git a/files/ru/glossary/element/index.html b/files/ru/glossary/element/index.html index e830c4a29b..376bc538d4 100644 --- a/files/ru/glossary/element/index.html +++ b/files/ru/glossary/element/index.html @@ -1,10 +1,11 @@ --- title: Элемент -slug: Словарь/Элемент +slug: Glossary/Element tags: - HTML - Словарь translation_of: Glossary/Element +original_slug: Словарь/Элемент ---

    Элемент - это часть веб-страницы. В XML и HTML элемент может содержать данные, фрагмент текста или изображения, или не содержать ничего. Обычный элемент включает в себя открывающий тэг с некоторыми атрибутами, текст и закрывающий тэг.
    Example: in <p class="nice">Hello world!</p>, '<p class="nice">' is an opening tag, 'class="nice"' is an attribute and its value, 'Hello world!' is enclosed text content, and '</p>' is a closing tag.

    diff --git a/files/ru/glossary/empty_element/index.html b/files/ru/glossary/empty_element/index.html index e9c3c7370d..e6b9ad664a 100644 --- a/files/ru/glossary/empty_element/index.html +++ b/files/ru/glossary/empty_element/index.html @@ -1,12 +1,13 @@ --- title: Пустой элемент -slug: Словарь/Empty_element +slug: Glossary/Empty_element tags: - CodingScripting - Glossary - Intermediate - Словарь translation_of: Glossary/Empty_element +original_slug: Словарь/Empty_element ---

    Пустой элемент — {{Glossary("element", "элемент")}} HTML, SVG или MathML, который не может иметь дочерних узлов (т.е. вложенных элементов или текста внутри себя).

    diff --git a/files/ru/glossary/encapsulation/index.html b/files/ru/glossary/encapsulation/index.html index f89f467f50..d316b75253 100644 --- a/files/ru/glossary/encapsulation/index.html +++ b/files/ru/glossary/encapsulation/index.html @@ -1,10 +1,11 @@ --- title: Инкапсуляция -slug: Словарь/Encapsulation +slug: Glossary/Encapsulation tags: - CodingScripting - Glossary translation_of: Glossary/Encapsulation +original_slug: Словарь/Encapsulation ---

    Инкапсуляция - это упаковка данных и {{glossary("function","functions")}} в один компонент (например, {{glossary("class")}}) и последующий контроль доступа к этому компоненту, создавая тем самым "черный ящик" из {{glossary("object")}}. По этой причине, пользователю необходмо знать только интерфейс этого класса (то есть данные и функции, предоставляемые для взаимодействия с классом извне), а не то, как он реализован внутри.

    diff --git a/files/ru/glossary/entity/index.html b/files/ru/glossary/entity/index.html index 3ed0f645b8..1315632125 100644 --- a/files/ru/glossary/entity/index.html +++ b/files/ru/glossary/entity/index.html @@ -1,10 +1,11 @@ --- title: Сущности -slug: Словарь/Сущности +slug: Glossary/Entity tags: - HTML - Словарь translation_of: Glossary/Entity +original_slug: Словарь/Сущности ---

    {{glossary("HTML")}}-сущности — это части текста ("cтроки"), которые начинаются с символа амперсанда (&) и заканчиваются точкой с запятой (;). Сущности чаще всего используются для представления специальных символов (которые могут быть восприняты как часть HTML-кода) или невидимых символов (таких как неразрывный пробел). Также вы можете использовать их вместо символов, печать которых с обычной клавиатуры труднодоступна. 

    diff --git a/files/ru/glossary/entity_header/index.html b/files/ru/glossary/entity_header/index.html index 269f88ecbd..4d2530dc82 100644 --- a/files/ru/glossary/entity_header/index.html +++ b/files/ru/glossary/entity_header/index.html @@ -1,9 +1,10 @@ --- title: Заголовок сущности -slug: Словарь/Entity_header +slug: Glossary/Entity_header tags: - Словарь translation_of: Glossary/Entity_header +original_slug: Словарь/Entity_header ---

    Заголовок сущности - это {{Glossary("header", "HTTP header")}}, описывающий содержимое тела сообщения. Заголовки сущности используются в HTTP-запросах и ответах. Заголовки, такие как {{HTTPHeader("Content-Length")}}, {{HTTPHeader("Content-Language")}}, {{HTTPHeader("Content-Encoding")}} являются заголовками сущности.

    diff --git a/files/ru/glossary/event/index.html b/files/ru/glossary/event/index.html index cd1abf198e..89cd01b646 100644 --- a/files/ru/glossary/event/index.html +++ b/files/ru/glossary/event/index.html @@ -1,11 +1,12 @@ --- title: Событие -slug: Словарь/event +slug: Glossary/event tags: - events - Словарь - события translation_of: Glossary/event +original_slug: Словарь/event ---

    События - это сгенерированные DOM-элементами свойства, которыми можно манипулировать с помощью Javascript-кода.

    diff --git a/files/ru/glossary/expando/index.html b/files/ru/glossary/expando/index.html index 05e9246629..471a8fc7ef 100644 --- a/files/ru/glossary/expando/index.html +++ b/files/ru/glossary/expando/index.html @@ -1,7 +1,8 @@ --- title: Expando -slug: Словарь/Expando +slug: Glossary/Expando translation_of: Glossary/Expando +original_slug: Словарь/Expando ---

    Expando-свойства — это свойства, добавленные в узлы {{glossary("DOM")}} с помощью {{glossary("JavaScript")}}, когда эти свойства не являются частью DOM-спецификации {{glossary("object","объекта")}}:

    diff --git a/files/ru/glossary/falsy/index.html b/files/ru/glossary/falsy/index.html index 480f972044..33cf9bd161 100644 --- a/files/ru/glossary/falsy/index.html +++ b/files/ru/glossary/falsy/index.html @@ -1,11 +1,12 @@ --- title: Falsy -slug: Словарь/Falsy +slug: Glossary/Falsy tags: - Glossary - JavaScript - falsy translation_of: Glossary/Falsy +original_slug: Словарь/Falsy ---

    Ложное (falsy) значение - это значение, которое считается ложным, когда встречается в контексте {{Glossary("Boolean")}} .

    diff --git a/files/ru/glossary/first-class_function/index.html b/files/ru/glossary/first-class_function/index.html index aaae7749e5..a54ce91210 100644 --- a/files/ru/glossary/first-class_function/index.html +++ b/files/ru/glossary/first-class_function/index.html @@ -1,10 +1,11 @@ --- title: Функции первого класса -slug: Словарь/First-class_Function +slug: Glossary/First-class_Function tags: - Glossary - Глоссарий translation_of: Glossary/First-class_Function +original_slug: Словарь/First-class_Function ---

    Если язык программирования имеет функции первого класса, то значит они трактуются как объекты, то есть могут быть переданы другим функциям и их можно вернуть из функций. Так же их можно присваивать переменным.

    diff --git a/files/ru/glossary/first_contentful_paint/index.html b/files/ru/glossary/first_contentful_paint/index.html index 52425b24d4..65348eaf2a 100644 --- a/files/ru/glossary/first_contentful_paint/index.html +++ b/files/ru/glossary/first_contentful_paint/index.html @@ -1,7 +1,8 @@ --- title: First contentful paint -slug: Словарь/First_contentful_paint +slug: Glossary/First_contentful_paint translation_of: Glossary/First_contentful_paint +original_slug: Словарь/First_contentful_paint ---

    Первое существенное отображение (англ. First Contentful Paint, FCP) - время, за которое пользователь увидит какое-то содержимое веб-страницы, например, текст или картинку.

    diff --git a/files/ru/glossary/first_cpu_idle/index.html b/files/ru/glossary/first_cpu_idle/index.html index 703c2e9e2d..f756b54be3 100644 --- a/files/ru/glossary/first_cpu_idle/index.html +++ b/files/ru/glossary/first_cpu_idle/index.html @@ -1,7 +1,8 @@ --- title: First CPU idle -slug: Словарь/First_CPU_idle +slug: Glossary/First_CPU_idle translation_of: Glossary/First_CPU_idle +original_slug: Словарь/First_CPU_idle ---

    First CPU Idle показывает, через какое время страница является "минимально" интерактивной, или когда основной поток достаточно свободен, чтобы обработать пользовательский ввод. Как правило, это происходит, когда большинство видимых элементов пользовательского интерфейса являются интерактивными и реагируют на события пользовательского ввода.

    diff --git a/files/ru/glossary/first_input_delay/index.html b/files/ru/glossary/first_input_delay/index.html index fa3c87bbf8..ccd6602f51 100644 --- a/files/ru/glossary/first_input_delay/index.html +++ b/files/ru/glossary/first_input_delay/index.html @@ -1,7 +1,8 @@ --- title: First input delay -slug: Словарь/First_input_delay +slug: Glossary/First_input_delay translation_of: Glossary/First_input_delay +original_slug: Словарь/First_input_delay ---

    Задержка первого ввода (англ. First input delay, FID) - одна из метрик производительности веб-страниц, которая описывает время, которое прошло с момента, когда пользователь впервые начал взаимодействовать с веб-страницей, т.е. нажал на ссылку, кнопку или использует элемент управления на основе JavaScript, до момента, когда веб-браузер может ответить на данное взаимодействие. Таким образом, это промежуток времени в миллисекундах между первым взаимодействием пользователя с веб-страницой и ответом браузера на это взаимодействие. Прокрутка и масштабирование не включены в этот показатель.

    diff --git a/files/ru/glossary/first_interactive/index.html b/files/ru/glossary/first_interactive/index.html index 2433ee6b7e..3655c89fd7 100644 --- a/files/ru/glossary/first_interactive/index.html +++ b/files/ru/glossary/first_interactive/index.html @@ -1,7 +1,8 @@ --- title: First interactive -slug: Словарь/First_interactive +slug: Glossary/First_interactive translation_of: Glossary/First_interactive +original_slug: Словарь/First_interactive ---

    Первая интерактивность (англ. First Interactive), также известная как first CPU idle - нестандартная метрика веб-производительности, которая показывает, через какое время страница является "минимально" интерактивной, или когда основной поток достаточно свободен, чтобы обработать пользовательский ввод.

    diff --git a/files/ru/glossary/first_meaningful_paint/index.html b/files/ru/glossary/first_meaningful_paint/index.html index 569b1ebd8d..8eea1574f0 100644 --- a/files/ru/glossary/first_meaningful_paint/index.html +++ b/files/ru/glossary/first_meaningful_paint/index.html @@ -1,7 +1,8 @@ --- title: First Meaningful Paint -slug: Словарь/first_meaningful_paint +slug: Glossary/first_meaningful_paint translation_of: Glossary/first_meaningful_paint +original_slug: Словарь/first_meaningful_paint ---

    Первое значимое отображение (англ. First Meaningful Paint, FMP) - метрика, которая показывает, за какое время контент на странице становится виден пользователю. Это метрика включает в себя время от начала загрузки страницы до момента, когда на сайте отобразился основной контент.

    diff --git a/files/ru/glossary/first_paint/index.html b/files/ru/glossary/first_paint/index.html index fec7ec3741..86c8057bcc 100644 --- a/files/ru/glossary/first_paint/index.html +++ b/files/ru/glossary/first_paint/index.html @@ -1,7 +1,8 @@ --- title: First paint -slug: Словарь/First_paint +slug: Glossary/First_paint translation_of: Glossary/First_paint +original_slug: Словарь/First_paint ---

    Первое отображение - время между переходом на страницу и моментом, когда браузер отображает первые пиксели на экране. Является частью Paint Timing API.

    diff --git a/files/ru/glossary/flex_item/index.html b/files/ru/glossary/flex_item/index.html index 7253e9a025..b898d436fe 100644 --- a/files/ru/glossary/flex_item/index.html +++ b/files/ru/glossary/flex_item/index.html @@ -1,11 +1,12 @@ --- title: Флекс-элемент -slug: Словарь/Flex_Item +slug: Glossary/Flex_Item tags: - CSS - флекс-элемент - флексбокс translation_of: Glossary/Flex_Item +original_slug: Словарь/Flex_Item ---

    Непосредственые дочерние элементы {{glossary("флекс-контейнера")}} (элемент для которого установлено display: flex или display: inline-flex) становятся флекс-элементами.

    diff --git a/files/ru/glossary/flexbox/index.html b/files/ru/glossary/flexbox/index.html index 918997b331..5cadb1d9eb 100644 --- a/files/ru/glossary/flexbox/index.html +++ b/files/ru/glossary/flexbox/index.html @@ -1,7 +1,8 @@ --- title: Flexbox -slug: Словарь/Flexbox +slug: Glossary/Flexbox translation_of: Glossary/Flexbox +original_slug: Словарь/Flexbox ---

    Flexbox это общепринятый термин для CSS Flexible Box Layout Module, модели разметки для отображения элементов в одном измерении - в виде строки или столбца.

    diff --git a/files/ru/glossary/forbidden_header_name/index.html b/files/ru/glossary/forbidden_header_name/index.html index 059b6898c6..5b59577517 100644 --- a/files/ru/glossary/forbidden_header_name/index.html +++ b/files/ru/glossary/forbidden_header_name/index.html @@ -1,12 +1,13 @@ --- title: Запрещенное имя заголовка -slug: Словарь/Forbidden_header_name +slug: Glossary/Forbidden_header_name tags: - HTTP - Заголовки - Словарь - запрещенный translation_of: Glossary/Forbidden_header_name +original_slug: Словарь/Forbidden_header_name ---

    Запрещённое имя заголовка (Forbidden header name) это имя какого-либо HTTP заголовка, который нельзя изменить программно. 

    diff --git a/files/ru/glossary/forbidden_response_header_name/index.html b/files/ru/glossary/forbidden_response_header_name/index.html index a53aa15026..65eae8e79f 100644 --- a/files/ru/glossary/forbidden_response_header_name/index.html +++ b/files/ru/glossary/forbidden_response_header_name/index.html @@ -1,7 +1,8 @@ --- title: Запрещённое имя заголовка ответа -slug: Словарь/Запрещённое_имя_заголовка_ответа +slug: Glossary/Forbidden_response_header_name translation_of: Glossary/Forbidden_response_header_name +original_slug: Словарь/Запрещённое_имя_заголовка_ответа ---

    Запрещённое имя заголовка ответа это имя HTTP заголовка (`Set-Cookie` или `Set-Cookie2`), который не может быть изменён программно.

    diff --git a/files/ru/glossary/fps/index.html b/files/ru/glossary/fps/index.html index dbb479d226..6bbb51a73d 100644 --- a/files/ru/glossary/fps/index.html +++ b/files/ru/glossary/fps/index.html @@ -1,7 +1,8 @@ --- title: Частота кадров (FPS) -slug: Словарь/FPS +slug: Glossary/FPS translation_of: Glossary/FPS +original_slug: Словарь/FPS ---

    Частота кадров - это скорость, с которой браузер может пересчитывать, размещать и отображать содержимое на дисплее. FPS (англ. frames per second) - количество сменяемых кадров за одну секунду.

    diff --git a/files/ru/glossary/ftp/index.html b/files/ru/glossary/ftp/index.html index a14c6cacd7..b2362c4fdf 100644 --- a/files/ru/glossary/ftp/index.html +++ b/files/ru/glossary/ftp/index.html @@ -1,12 +1,13 @@ --- title: FTP -slug: Словарь/FTP +slug: Glossary/FTP tags: - CodingScripting - FTP - Glossary - протокол translation_of: Glossary/FTP +original_slug: Словарь/FTP ---

    FTP (англ. file transfer protocol — протокол передачи файлов) — стандартный сетевой {{glossary("protocol", "протокол")}} для передачи файлов с одного {{glossary("host", "хост")}}а на другой через Интернет по протоколу {{Glossary("TCP")}}.

    diff --git a/files/ru/glossary/function/index.html b/files/ru/glossary/function/index.html index 4e2698b38c..424409f081 100644 --- a/files/ru/glossary/function/index.html +++ b/files/ru/glossary/function/index.html @@ -1,12 +1,13 @@ --- title: Функция -slug: Словарь/Функция +slug: Glossary/Function tags: - JavaScript - Глоссарий - КодингСкриптинг - Функция translation_of: Glossary/Function +original_slug: Словарь/Функция ---

    Функция это отрывок кода который может быть вызван из другого кода или вызван собой, или это {{Glossary("variable")}} которая ссылается на функцию. Когда функция вызвана, {{Glossary("Argument", "аргументы")}} переданы в функцию как вход, и функция может необязательно вернуть вывод. Функция в {{glossary("JavaScript")}} это {{glossary("object")}}.

    diff --git a/files/ru/glossary/gecko/index.html b/files/ru/glossary/gecko/index.html index cba601e9b9..3e6264903f 100644 --- a/files/ru/glossary/gecko/index.html +++ b/files/ru/glossary/gecko/index.html @@ -1,11 +1,12 @@ --- title: Gecko -slug: Словарь/Gecko +slug: Glossary/Gecko tags: - Gecko - Glossary - Глоссарий translation_of: Glossary/Gecko +original_slug: Словарь/Gecko ---

    Gecko - это движок обработки и рендеринга макетов веб-страниц, разработанный в рамках Mozilla Project и используемый многими приложениями и устройствами, включая {{glossary("Mozilla Firefox","Firefox")}} и {{glossary("Firefox OS")}}.

    diff --git a/files/ru/glossary/general_header/index.html b/files/ru/glossary/general_header/index.html index 3d2f5cb65c..6db4fdb186 100644 --- a/files/ru/glossary/general_header/index.html +++ b/files/ru/glossary/general_header/index.html @@ -1,7 +1,8 @@ --- title: Общий заголовок -slug: Словарь/General_header +slug: Glossary/General_header translation_of: Glossary/General_header +original_slug: Словарь/General_header ---

    Общий заголовок (основной заголовок) - это {{glossary('HTTP header', 'заголовок')}}, который используется и в запросе, и в ответе (в отличие от {{glossary("Response header", "заголовка запроса")}} и {{glossary("request header", "заголовка ответа")}}), однако общий заголовок не описывает тело сообщения, как {{glossary("entity header", "заголовок сущности")}}.

    diff --git a/files/ru/glossary/git/index.html b/files/ru/glossary/git/index.html index 0e1bda3846..6da3accb15 100644 --- a/files/ru/glossary/git/index.html +++ b/files/ru/glossary/git/index.html @@ -1,10 +1,11 @@ --- title: Git -slug: Словарь/Git +slug: Glossary/Git tags: - Словарь - Совместная работа translation_of: Glossary/Git +original_slug: Словарь/Git ---

    Git — это свободная с открытым исходным кодом распределённая система управления версиями (от англ. Source Code Management ({{Glossary("SCM", "SCM", 1)}}). Она облегчает написание кода с использованием распределенных команд разработчиков. Ее отличие от предшествующих систем управления версиями — способность выполнять общие операции (ветвление, фиксакция изменений, и т.д.) на вашем локальном компьютере, без необходимости изменять главный репозиторий или даже не имея прав на запись в него.

    diff --git a/files/ru/glossary/global_object/index.html b/files/ru/glossary/global_object/index.html index 402ba23ea0..62b03c66ab 100644 --- a/files/ru/glossary/global_object/index.html +++ b/files/ru/glossary/global_object/index.html @@ -1,7 +1,8 @@ --- title: Global object -slug: Словарь/Global_object +slug: Glossary/Global_object translation_of: Glossary/Global_object +original_slug: Словарь/Global_object ---

    Глобальный обьект - это {{glossary("object")}}, который всегда существует в {{glossary("global scope")}}.

    diff --git a/files/ru/glossary/global_variable/index.html b/files/ru/glossary/global_variable/index.html index a9e4a36a5b..aff656f793 100644 --- a/files/ru/glossary/global_variable/index.html +++ b/files/ru/glossary/global_variable/index.html @@ -1,9 +1,10 @@ --- title: Глобальная переменная -slug: Словарь/global_variable +slug: Glossary/Global_variable tags: - Словарь translation_of: Glossary/Global_variable +original_slug: Словарь/global_variable ---

    Глобальная перменная это переменная, которая была объявлена в глобальной области видимости. Иначе говоря, переменная, доступ к которой, можно получить со всех других областей видимости.

    diff --git a/files/ru/glossary/grid/index.html b/files/ru/glossary/grid/index.html index 2d00a835e1..57d3b781f4 100644 --- a/files/ru/glossary/grid/index.html +++ b/files/ru/glossary/grid/index.html @@ -1,11 +1,12 @@ --- title: Grid -slug: Словарь/Grid +slug: Glossary/Grid tags: - CSS - CSS Grids - Glossary translation_of: Glossary/Grid +original_slug: Словарь/Grid ---

    CSS Гриды (они же сетки или CSS Grid) устанавливаются с помощью значения grid в свойстве display; вы можете определить колонки и строки в сетке с помощью свойств {{cssxref("grid-template-columns")}} и {{cssxref("grid-template-rows")}} соответственно.

    diff --git a/files/ru/glossary/grid_column/index.html b/files/ru/glossary/grid_column/index.html index ca5ed8bd59..2432fae416 100644 --- a/files/ru/glossary/grid_column/index.html +++ b/files/ru/glossary/grid_column/index.html @@ -1,10 +1,11 @@ --- title: Grid Column -slug: Словарь/Grid_Column +slug: Glossary/Grid_Column tags: - CSS - grid translation_of: Glossary/Grid_Column +original_slug: Словарь/Grid_Column ---

    Столбец сетки (grid column) — это вертикальный элемент в CSS Grid Layout, а также пространство между двумя вертикальными линиями сетки. Он определяется свойством {{cssxref("grid-template-columns")}}, либо в сокращенном виде {{cssxref("grid")}} или {{cssxref("grid-template")}}.

    diff --git a/files/ru/glossary/hash/index.html b/files/ru/glossary/hash/index.html index 9084e9ed64..8d3822bbc2 100644 --- a/files/ru/glossary/hash/index.html +++ b/files/ru/glossary/hash/index.html @@ -1,7 +1,8 @@ --- title: Хеш -slug: Словарь/хеш +slug: Glossary/hash translation_of: Glossary/hash +original_slug: Словарь/хеш ---

    Хеш-функция получает на вход текстовое сообщение произвольной длины и выдает хеш фиксированной длины. Как правило, в форме 128-битного "отпечатка пальцев" или "дайджеста сообщения". Хеши очень полезны для {{glossary("криптографии")}} — они обеспечивают целостность передаваемых данных. Это служит основой для {{glossary("HMAC's")}}, которые обеспечивают идентификацию сообщений.

    diff --git a/files/ru/glossary/head/index.html b/files/ru/glossary/head/index.html index 5fef76a367..57b8a7031f 100644 --- a/files/ru/glossary/head/index.html +++ b/files/ru/glossary/head/index.html @@ -1,7 +1,8 @@ --- title: Head (Заголовок) -slug: Словарь/Заголовок +slug: Glossary/Head translation_of: Glossary/Head +original_slug: Словарь/Заголовок ---

    Head (заголовок) это часть {{glossary("HTML")}} документа, которая содержит {{glossary("metadata")}} о документе, такие как автор, описание, ссылки на {{glossary("CSS")}} или {{glossary("JavaScript")}} файлы, которые должны быть применены в HTML.

    diff --git a/files/ru/glossary/high-level_programming_language/index.html b/files/ru/glossary/high-level_programming_language/index.html index b6fa171131..60feb993a1 100644 --- a/files/ru/glossary/high-level_programming_language/index.html +++ b/files/ru/glossary/high-level_programming_language/index.html @@ -1,9 +1,10 @@ --- title: Высокоуровневый язык программирования -slug: Словарь/Высокоуровневый_язык_программированияprogramming_language +slug: Glossary/High-level_programming_language tags: - Словарь translation_of: Glossary/High-level_programming_language +original_slug: Словарь/Высокоуровневый_язык_программированияprogramming_language ---

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

    diff --git a/files/ru/glossary/hoisting/index.html b/files/ru/glossary/hoisting/index.html index ef0cdfb1be..a0f3683ec5 100644 --- a/files/ru/glossary/hoisting/index.html +++ b/files/ru/glossary/hoisting/index.html @@ -1,7 +1,8 @@ --- title: Поднятие -slug: Словарь/Поднятие +slug: Glossary/Hoisting translation_of: Glossary/Hoisting +original_slug: Словарь/Поднятие ---

    Поднятие (hoisting) — термин, который вы не встретите в документации JavaScript. Поднятие задумывалось как общий способ мышления о том, как контекст исполнения (в частности, фазы создания и исполнения) работает в JavaScript. Однако, hoisting может привести и к недоразумениям. Например, hoisting учит, что объявление переменной или функции физически перемещается в начало вашего кода, хотя в действительности этого не происходит. На самом же деле, объявления переменных и функций попадают в память в процессе фазы компиляции, но остаются в коде на том месте, где вы их объявили.

    diff --git a/files/ru/glossary/host/index.html b/files/ru/glossary/host/index.html index 667e65ab28..06ad19cdd1 100644 --- a/files/ru/glossary/host/index.html +++ b/files/ru/glossary/host/index.html @@ -1,6 +1,6 @@ --- title: Host -slug: Словарь/Host +slug: Glossary/Host tags: - Glossary - Intermediate @@ -8,6 +8,7 @@ tags: - WebMechanics - Словарь translation_of: Glossary/Host +original_slug: Словарь/Host ---

    Хост - это устройство, подключенное к {{glossary("Internet", "Интернет")}} (или локальной сети). Некоторые хосты, называемые {{glossary("server", "сервер", "серверами")}}, предлагают дополнительные услуги, такие как обслуживание веб-страниц или хранение файлов и электронных писем.

    diff --git a/files/ru/glossary/html/index.html b/files/ru/glossary/html/index.html index 560c7101c3..90f80103c8 100644 --- a/files/ru/glossary/html/index.html +++ b/files/ru/glossary/html/index.html @@ -1,10 +1,11 @@ --- title: HTML -slug: Словарь/HTML +slug: Glossary/HTML tags: - Glossary - HTML translation_of: Glossary/HTML +original_slug: Словарь/HTML ---

    HTML (от англ. HyperText Markup Language — «язык гипертекстовой разметки») — язык разметки, определяющий структуру веб-страниц.

    diff --git a/files/ru/glossary/html5/index.html b/files/ru/glossary/html5/index.html index b081f5c053..d4b8156b62 100644 --- a/files/ru/glossary/html5/index.html +++ b/files/ru/glossary/html5/index.html @@ -1,6 +1,6 @@ --- title: HTML5 -slug: Словарь/HTML5 +slug: Glossary/HTML5 tags: - CodingScripting - HTML @@ -9,6 +9,7 @@ tags: - Разметка - Словарь translation_of: Glossary/HTML5 +original_slug: Словарь/HTML5 ---

    Последний стабильный релиз {{Glossary("HTML")}}, HTML5 преобразовывает HTML из простого языка для разметки документа в платформу для разработки полноценных приложений. Среди других особенностей, HTML5 включает в себя новые элементы и {{glossary("JavaScript")}} {{glossary("API")}} для улучшения доступа к хранилищу, мультимедиа и аппаратным средствам.

    diff --git a/files/ru/glossary/http/index.html b/files/ru/glossary/http/index.html index 2d9b3f539b..894a9b4222 100644 --- a/files/ru/glossary/http/index.html +++ b/files/ru/glossary/http/index.html @@ -1,6 +1,6 @@ --- title: HTTP -slug: Словарь/HTTP +slug: Glossary/HTTP tags: - HTTP - Глоссарий @@ -8,6 +8,7 @@ tags: - инфраструктура - протокол передачи гипертекста translation_of: Glossary/HTTP +original_slug: Словарь/HTTP ---

    Протокол передачи гипертекста (HTTP) является базовым сетевым {{glossary("protocol")}}, который позволяет передавать гипермедиа документы в {{glossary("World Wide Web","Web")}}, обычно между браузером и сервером, таким образом, что бы люди могли их читать. Текущая версия спецификации HTTP называется HTTP/2.

    diff --git a/files/ru/glossary/http_2/index.html b/files/ru/glossary/http_2/index.html index 3423133e8d..819c6149f2 100644 --- a/files/ru/glossary/http_2/index.html +++ b/files/ru/glossary/http_2/index.html @@ -1,6 +1,6 @@ --- title: HTTP/2 -slug: Словарь/HTTP_2 +slug: Glossary/HTTP_2 tags: - Glossary - HTTP @@ -8,6 +8,7 @@ tags: - Reference - Web Performance translation_of: Glossary/HTTP_2 +original_slug: Словарь/HTTP_2 ---

    HTTP/2 это старшая версия сетевого протокола HTTP. Основным назначеним HTTP/2 является снижение задержки({{glossary("latency")}})  путём реализации полного мультиплексирования запросов и ответов, уменьшения перегруженности протокола при помощи эффективного сжатия заголовков HTTP, а также добавления поддержки приоритетов запроса и "server push"("серверне проталкивание" - сервер имея правила, может проявить инициативу, которые инициируют отправку контента до его запроса, зная о том, что может поступить запрос на их отправку).

    diff --git a/files/ru/glossary/https/index.html b/files/ru/glossary/https/index.html index 21c860794a..01d3eedbfc 100644 --- a/files/ru/glossary/https/index.html +++ b/files/ru/glossary/https/index.html @@ -1,10 +1,11 @@ --- title: HTTPS -slug: Словарь/https +slug: Glossary/https tags: - HTTPS - Безопасность translation_of: Glossary/https +original_slug: Словарь/https ---

    HTTPS (HTTP Secure) является зашифрованной версией {{Glossary("HTTP")}} протокола. Обычно он использует {{Glossary("SSL")}} или {{Glossary("TLS")}} для шифрования соединения между клиентом и сервером. Это безопасное соединение позволяет клиентам безопасно обмениваться конфиденциальными данными с сервером, например, для банковских операций или онлайн-покупок.

    diff --git a/files/ru/glossary/hypertext/index.html b/files/ru/glossary/hypertext/index.html index 75e77edbf5..420bbd25c1 100644 --- a/files/ru/glossary/hypertext/index.html +++ b/files/ru/glossary/hypertext/index.html @@ -1,12 +1,13 @@ --- title: Гипертекст -slug: Словарь/Гипертекст +slug: Glossary/Hypertext tags: - Веб - Глоссарий - Механика Веба - гипертекст translation_of: Glossary/Hypertext +original_slug: Словарь/Гипертекст ---

    Гипертекст - это текст, содержащий ссылки на другие тексты.

    diff --git a/files/ru/glossary/iana/index.html b/files/ru/glossary/iana/index.html index 3e2b4fc33e..9af6924f89 100644 --- a/files/ru/glossary/iana/index.html +++ b/files/ru/glossary/iana/index.html @@ -1,7 +1,8 @@ --- title: IANA -slug: Словарь/IANA +slug: Glossary/IANA translation_of: Glossary/IANA +original_slug: Словарь/IANA ---

    IANA (Internet Assigned Numbers Authority) является дочерней компанией {{glossary("ICANN")}}, задача которой записывать и/или назначать {{glossary("domain name","domain names")}}, {{glossary("IP address","IP addresses")}}, и другие имена и номера, используемые Интернетом {{glossary("protocol","protocols")}}.

    diff --git a/files/ru/glossary/icann/index.html b/files/ru/glossary/icann/index.html index e67e2d4b6f..c1b4281efe 100644 --- a/files/ru/glossary/icann/index.html +++ b/files/ru/glossary/icann/index.html @@ -1,7 +1,8 @@ --- title: ICANN -slug: Словарь/ICANN +slug: Glossary/ICANN translation_of: Glossary/ICANN +original_slug: Словарь/ICANN ---

    ICANN (Internet Corporation of Assigned Names and Numbers) является международной некоммерческой организацией, которая поддерживает {{glossary("DNS","domain name system")}} и запись {{glossary("IP address","IP addresses")}}.

    diff --git a/files/ru/glossary/idempotent/index.html b/files/ru/glossary/idempotent/index.html index 569dbc0168..114828a420 100644 --- a/files/ru/glossary/idempotent/index.html +++ b/files/ru/glossary/idempotent/index.html @@ -1,10 +1,11 @@ --- title: Идемпотентный метод -slug: Словарь/Idempotent +slug: Glossary/Idempotent tags: - Glossary - HTTP translation_of: Glossary/Idempotent +original_slug: Словарь/Idempotent ---

    Метод HTTP является идемпотентным, если повторный идентичный запрос, сделанный один или несколько раз подряд, имеет один и тот же эффект, не изменяющий состояние сервера. Другими словами, идемпотентный метод не должен иметь никаких побочных эффектов (side-effects), кроме сбора статистики или подобных операций. Корректно реализованные методы {{HTTPMethod("GET")}}, {{HTTPMethod("HEAD")}}, {{HTTPMethod("PUT")}} и {{HTTPMethod("DELETE")}} идемпотентны, но не метод {{HTTPMethod("POST")}}. Также все {{glossary("safe", "безопасные")}} методы являются идемпотентными.

    diff --git a/files/ru/glossary/identifier/index.html b/files/ru/glossary/identifier/index.html index ea244035d4..ffe2656c73 100644 --- a/files/ru/glossary/identifier/index.html +++ b/files/ru/glossary/identifier/index.html @@ -1,10 +1,11 @@ --- title: Идентификатор -slug: Словарь/Identifier +slug: Glossary/Identifier tags: - Глоссарий - начальный уровень translation_of: Glossary/Identifier +original_slug: Словарь/Identifier ---

    Последовательность символов в коде, которые определяют {{glossary("variable")}}, {{glossary("function")}} или {{glossary("property")}}.

    diff --git a/files/ru/glossary/ietf/index.html b/files/ru/glossary/ietf/index.html index 538f7a6df0..b120bf4c3c 100644 --- a/files/ru/glossary/ietf/index.html +++ b/files/ru/glossary/ietf/index.html @@ -1,6 +1,6 @@ --- title: IETF -slug: Словарь/IETF +slug: Glossary/IETF tags: - IETF - Глоссарий @@ -8,6 +8,7 @@ tags: - Словарь - инфраструктура translation_of: Glossary/IETF +original_slug: Словарь/IETF ---

    Инженерный совет Интернета (IETF) это всемирная организация, которая разрабатывает спецификации регулирующие механизмы, лежащие в основе {{glossary("Internet", "интернета")}}, особенно {{glossary("TCP")}}/{{glossary("IPv6","IP")}} илипакет {{glossary("Protocol","протоколов")}} интернета. IETF это открытое сообщество, управляется добровольцами и спонсируется интернет-сообществом.

    diff --git a/files/ru/glossary/iife/index.html b/files/ru/glossary/iife/index.html index 7c764f6f71..7a268bcc39 100644 --- a/files/ru/glossary/iife/index.html +++ b/files/ru/glossary/iife/index.html @@ -1,12 +1,13 @@ --- title: IIFE -slug: Словарь/IIFE +slug: Glossary/IIFE tags: - IIFE - JavaScript - Глоссарий - КодингСкриптинг translation_of: Glossary/IIFE +original_slug: Словарь/IIFE ---

    IIFE (Immediately Invoked Function Expression) это {{glossary("JavaScript")}} {{glossary("функция")}}, которая выполняется сразу же после того, как она была определена.

    diff --git a/files/ru/glossary/index.html b/files/ru/glossary/index.html index 758dfb9000..a9bf8fa45e 100644 --- a/files/ru/glossary/index.html +++ b/files/ru/glossary/index.html @@ -1,11 +1,12 @@ --- title: Словарь -slug: Словарь +slug: Glossary tags: - Глоссарий - Новичку - Словарь translation_of: Glossary +original_slug: Словарь ---
    {{LearnBox({"title":"Узнайте новый термин:"})}}
    diff --git a/files/ru/glossary/indexeddb/index.html b/files/ru/glossary/indexeddb/index.html index e4aee4fc0a..8de80b46a2 100644 --- a/files/ru/glossary/indexeddb/index.html +++ b/files/ru/glossary/indexeddb/index.html @@ -1,6 +1,6 @@ --- title: IndexedDB -slug: Словарь/IndexedDB +slug: Glossary/IndexedDB tags: - API - CodingScripting @@ -8,6 +8,7 @@ tags: - Glossary - Sql translation_of: Glossary/IndexedDB +original_slug: Словарь/IndexedDB ---

    IndexedDB это Web {{glossary("API")}} интерфейс, который позволяет хранить большие данные внутри браузера. Также используется индексирование для поддержания высоко-производительного поиска по данным. Подобно {{glossary("SQL")}}-основанным RDBMS, IndexedDB это транзакционная система базы данных. Но в отличие от RDBMS, которая для хранения использует таблицы с фиксированными колонками, IndexedDB использует {{glossary("JavaScript")}} объекты.

    diff --git a/files/ru/glossary/information_architecture/index.html b/files/ru/glossary/information_architecture/index.html index 884c1a85e4..9f6244e622 100644 --- a/files/ru/glossary/information_architecture/index.html +++ b/files/ru/glossary/information_architecture/index.html @@ -1,7 +1,8 @@ --- title: Архитектура данных -slug: Словарь/Information_architecture +slug: Glossary/Information_architecture translation_of: Glossary/Information_architecture +original_slug: Словарь/Information_architecture ---

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

    diff --git a/files/ru/glossary/internet/index.html b/files/ru/glossary/internet/index.html index 950220263c..d15bbc4107 100644 --- a/files/ru/glossary/internet/index.html +++ b/files/ru/glossary/internet/index.html @@ -1,6 +1,6 @@ --- title: Интернет -slug: Словарь/Internet +slug: Glossary/Internet tags: - Beginner - Glossary @@ -19,6 +19,7 @@ tags: - Учебник - туториал translation_of: Glossary/Internet +original_slug: Словарь/Internet ---

    Интернет — это всемирная сеть сетей, в которой используется набор интернет-протоколов (называемый также {{glossary("TCP")}}/{{glossary("IPv6","IP")}} по двум наиболее важным {{glossary("protocol","протоколам")}}).

    diff --git a/files/ru/glossary/ip_address/index.html b/files/ru/glossary/ip_address/index.html index b3752b53a2..8c6892fff7 100644 --- a/files/ru/glossary/ip_address/index.html +++ b/files/ru/glossary/ip_address/index.html @@ -1,6 +1,6 @@ --- title: IP Address -slug: Словарь/IP_Address +slug: Glossary/IP_Address tags: - Основы - Словарь @@ -8,6 +8,7 @@ tags: - сеть - терминология translation_of: Glossary/IP_Address +original_slug: Словарь/IP_Address ---

    IP адрес - это число, назначенное каждому устройству, подключённому к сети, которая использует Интернет-протокол. 

    diff --git a/files/ru/glossary/iso/index.html b/files/ru/glossary/iso/index.html index 98d2226829..6ee7c78308 100644 --- a/files/ru/glossary/iso/index.html +++ b/files/ru/glossary/iso/index.html @@ -1,12 +1,13 @@ --- title: ISO -slug: Словарь/ISO +slug: Glossary/ISO tags: - ISO - Глоссарий - Стандарты веб - инфраструктура translation_of: Glossary/ISO +original_slug: Словарь/ISO ---

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

    diff --git a/files/ru/glossary/isp/index.html b/files/ru/glossary/isp/index.html index 11d9b86957..306c905762 100644 --- a/files/ru/glossary/isp/index.html +++ b/files/ru/glossary/isp/index.html @@ -1,12 +1,13 @@ --- title: Интернет-провайдер -slug: Словарь/Интернет-провайдер +slug: Glossary/ISP tags: - ISP - Веб - Интернет-провайдер - Словарь translation_of: Glossary/ISP +original_slug: Словарь/Интернет-провайдер ---

    ISP (Интернет-провайдер) продает доступ к интернету, а иногда и электронную почту, веб-хостинг и VoIP, либо путем установления соединения по телефонной линии (которая раньше была распространена), либо через широкополосное соединение, такое как кабельный модем или DSL-сервис. 

    diff --git a/files/ru/glossary/java/index.html b/files/ru/glossary/java/index.html index 6aa04149f8..052312a396 100644 --- a/files/ru/glossary/java/index.html +++ b/files/ru/glossary/java/index.html @@ -1,11 +1,12 @@ --- title: Java -slug: Словарь/Java +slug: Glossary/Java tags: - Java - Глоссарий - Язык программирования translation_of: Glossary/Java +original_slug: Словарь/Java ---

    Java — {{glossary("Compile", "компилируемый")}}, {{glossary("OOP", "объектно-ориентированный")}} и легко переносимый язык {{Glossary("computer programming", "программирования")}}.

    diff --git a/files/ru/glossary/javascript/index.html b/files/ru/glossary/javascript/index.html index 330e6ad88a..1c80137ef1 100644 --- a/files/ru/glossary/javascript/index.html +++ b/files/ru/glossary/javascript/index.html @@ -1,11 +1,12 @@ --- title: JavaScript -slug: Словарь/JavaScript +slug: Glossary/JavaScript tags: - Glossary - JavaScript - Глоссарий translation_of: Glossary/JavaScript +original_slug: Словарь/JavaScript ---

    JavaScript (JS) это язык программирования, который в основном используется для создания динамических скриптов на веб-страницах, но он так же часто применяется на стороне {{Glossary("Server", "сервера")}}, используя пакеты, такие как Node.JS.

    diff --git a/files/ru/glossary/jpeg/index.html b/files/ru/glossary/jpeg/index.html index 19218f558f..6511f7258b 100644 --- a/files/ru/glossary/jpeg/index.html +++ b/files/ru/glossary/jpeg/index.html @@ -1,10 +1,11 @@ --- title: JPEG -slug: Словарь/jpeg +slug: Glossary/jpeg tags: - Изображения - Словарь translation_of: Glossary/jpeg +original_slug: Словарь/jpeg ---

    JPEG (произносится «джейпег», англ. Joint Photographic Experts Group, по названию организации-разработчика) — является широко используемым методом сжатия с потерями данных для цифровых изображений.

    diff --git a/files/ru/glossary/jquery/index.html b/files/ru/glossary/jquery/index.html index 666d9a3fc1..6a00c145a0 100644 --- a/files/ru/glossary/jquery/index.html +++ b/files/ru/glossary/jquery/index.html @@ -1,7 +1,8 @@ --- title: jQuery -slug: Словарь/jQuery +slug: Glossary/jQuery translation_of: Glossary/jQuery +original_slug: Словарь/jQuery ---

    jQuery это  {{Glossary("JavaScript")}} {{Glossary("Библиотека")}} сфокусированная на  управлении {{Glossary("DOM")}} , вызовах {{Glossary("AJAX")}} , и  {{Glossary("событиях")}} обработки.

    diff --git a/files/ru/glossary/json/index.html b/files/ru/glossary/json/index.html index 9993de4e8f..d83fa2e829 100644 --- a/files/ru/glossary/json/index.html +++ b/files/ru/glossary/json/index.html @@ -1,12 +1,13 @@ --- title: JSON -slug: Словарь/JSON +slug: Glossary/JSON tags: - JSON - Введение - Глоссарий - Написание скриптов translation_of: Glossary/JSON +original_slug: Словарь/JSON ---

    JavaScript Object Notation (JSON) это формат обмена данными.  Несмотря на то, что JSON не является строгим подмножеством, он напоминает синтаксис {{Glossary("JavaScript")}}. Хотя много языков программирования поддерживают JSON, он особенно полезен для JavaScript-приложений, таких как веб-сайты и расширения для браузера.

    diff --git a/files/ru/glossary/loop/index.html b/files/ru/glossary/loop/index.html index 95c17d0620..a19b8c592c 100644 --- a/files/ru/glossary/loop/index.html +++ b/files/ru/glossary/loop/index.html @@ -1,6 +1,6 @@ --- title: Loop -slug: Словарь/loop +slug: Glossary/loop tags: - Glossary - control flow @@ -8,6 +8,7 @@ tags: - Словарь - контроль потока translation_of: Glossary/loop +original_slug: Словарь/loop ---

    Цикл - это последовательность инструкций, которая постоянно повторяется до тех пор, пока в {{Glossary('computer programming', 'программе')}} не будет выполнено определенное условие. Примером может служить процесс получения элемента данных, его последующего изменения, а затем проверки некоторых {{Glossary ('conditional', 'условий')}}, например, что счетчик достиг заданного числа.

    diff --git a/files/ru/glossary/main_axis/index.html b/files/ru/glossary/main_axis/index.html index 02c5f99ae3..88d439ffd4 100644 --- a/files/ru/glossary/main_axis/index.html +++ b/files/ru/glossary/main_axis/index.html @@ -1,7 +1,8 @@ --- title: Главная ось -slug: Словарь/Main_Axis +slug: Glossary/Main_Axis translation_of: Glossary/Main_Axis +original_slug: Словарь/Main_Axis ---

    Главная ось в {{glossary("flexbox")}} определяется направлением, установленным в свойстве {{cssxref("flex-direction")}}. Это свойство может принимать одно из четырёх значений:

    diff --git a/files/ru/glossary/mathml/index.html b/files/ru/glossary/mathml/index.html index 0b4c5caaca..38e1683f6c 100644 --- a/files/ru/glossary/mathml/index.html +++ b/files/ru/glossary/mathml/index.html @@ -1,6 +1,6 @@ --- title: MathML -slug: Словарь/MathML +slug: Glossary/MathML tags: - CodingScripting - Glossary @@ -8,6 +8,7 @@ tags: - Mathematical Markup Language - XML translation_of: Glossary/MathML +original_slug: Словарь/MathML ---

    MathML ({{glossary("XML")}} приложение) - это открытый стандарт для представления математических выражений на веб-страницах.  В 1998 году W3C впервые рекомендовал MathML для представления математических выражений в {{glossary("browser")}}. MathML имеет и другие применения, включающие научный контент и синтез голоса.

    diff --git a/files/ru/glossary/metadata/index.html b/files/ru/glossary/metadata/index.html index 75122f3bf4..467f5194b4 100644 --- a/files/ru/glossary/metadata/index.html +++ b/files/ru/glossary/metadata/index.html @@ -1,7 +1,8 @@ --- title: Метаданные -slug: Словарь/Метаданные +slug: Glossary/Metadata translation_of: Glossary/Metadata +original_slug: Словарь/Метаданные ---

    Метаданные - это, в самом простом определении, данные, что описывают данные. Например, {{ glossary("HTML") }}-документ - это данные, но HTML также может содержать метаданные в элементе {{ htmlelement("head") }}, который описывает документ, например кто его написал и его резюме.

    diff --git a/files/ru/glossary/method/index.html b/files/ru/glossary/method/index.html index 775570fb71..9ac2de9f2b 100644 --- a/files/ru/glossary/method/index.html +++ b/files/ru/glossary/method/index.html @@ -1,10 +1,11 @@ --- title: Метод -slug: Словарь/Method +slug: Glossary/Method tags: - JavaScript - Словарь translation_of: Glossary/Method +original_slug: Словарь/Method ---

    Метод это {{glossary("function","функция")}}, являющаяся {{glossary("property","свойством")}} {{glossary("object","объекта")}}. Существует два типа методов: Методы Экземпляра которые являются встроенными задачами, выполняемыми экземпляром объекта, или {{Glossary("static method", "Статические Методы")}} которые являются задачами, вызываемыми непосредственно в конструкторе объекта.

    diff --git a/files/ru/glossary/microsoft_internet_explorer/index.html b/files/ru/glossary/microsoft_internet_explorer/index.html index 1770cb13d7..95d9230d72 100644 --- a/files/ru/glossary/microsoft_internet_explorer/index.html +++ b/files/ru/glossary/microsoft_internet_explorer/index.html @@ -1,11 +1,12 @@ --- title: Microsoft Internet Explorer -slug: Словарь/Microsoft_Internet_Explorer +slug: Glossary/Microsoft_Internet_Explorer tags: - Microsoft - Microsoft Internet Explorer - Windows translation_of: Glossary/Microsoft_Internet_Explorer +original_slug: Словарь/Microsoft_Internet_Explorer ---

    Internet Explorer (или IE) - это бесплатный графический {{glossary("browser", "браузер")}}, созданный Microsoft для использования внутри компании. {{glossary("Microsoft Edge")}} - на данный момент Windows браузер по умолчанию.

    diff --git a/files/ru/glossary/mime_type/index.html b/files/ru/glossary/mime_type/index.html index 7995c6400e..5ef1a9e62a 100644 --- a/files/ru/glossary/mime_type/index.html +++ b/files/ru/glossary/mime_type/index.html @@ -1,11 +1,12 @@ --- title: MIME-тип -slug: Словарь/MIME_type +slug: Glossary/MIME_type tags: - MIME-тип - Media-тип - Медиа тип translation_of: Glossary/MIME_type +original_slug: Словарь/MIME_type ---

    MIME-тип (называемый "media type", а иногда "content type") - это строка, отправляемая вместе с файлом, которая указывает тип файла. (например, передаваемый аудиофайл может быть помечен как audio/ogg тип, а изображение - image/png). MIME-тип играет точно такую же роль, как и расширение файла в системе Windows. Когда HTTP-сообщение содержит Content-type заголовок, тело запроса будет парситься в соответствии с MIME-типом, указанным в заголовке.  

    diff --git a/files/ru/glossary/mixin/index.html b/files/ru/glossary/mixin/index.html index 8f0e369515..7bbbb35a86 100644 --- a/files/ru/glossary/mixin/index.html +++ b/files/ru/glossary/mixin/index.html @@ -1,6 +1,6 @@ --- title: Миксин -slug: Словарь/Mixin +slug: Glossary/Mixin tags: - Интерфейс - Класс @@ -8,6 +8,7 @@ tags: - метод - миксин translation_of: Glossary/Mixin +original_slug: Словарь/Mixin ---

    Миксин (дословно: "примесь) - класс ({{Glossary("class")}}) или интерфейс, в котором некоторые или все его методы ({{Glossary("method", "methods")}}) и/или свойства ({{Glossary("property", "properties")}}) не реализованы, требуя, чтобы другой класс или интерфейс обеспечивал недостающие реализации. Новый класс или интерфейс затем включает в себя как свойства и методы из миксина, так и те, которые он определяет сам. Все методы и свойства используются совершенно одинаково, независимо от того, реализованы ли они в миксине, интерфейсе или классе, реализующем миксин.

    diff --git a/files/ru/glossary/node.js/index.html b/files/ru/glossary/node.js/index.html index 7204c8f02c..1b016cc75a 100644 --- a/files/ru/glossary/node.js/index.html +++ b/files/ru/glossary/node.js/index.html @@ -1,12 +1,13 @@ --- title: Node.js -slug: Словарь/Node.js +slug: Glossary/Node.js tags: - Glossary - Infrastructure - JavaScript - node.js translation_of: Glossary/Node.js +original_slug: Словарь/Node.js ---

    Node.js является межплатформенной средой выполнения, созданной на {{Glossary("JavaScript")}}, которая позволяет разработчикам создавать серверные и сетевые приложения с помощью JavaScript.

    diff --git a/files/ru/glossary/null/index.html b/files/ru/glossary/null/index.html index 5b2520923b..44947ccf98 100644 --- a/files/ru/glossary/null/index.html +++ b/files/ru/glossary/null/index.html @@ -1,10 +1,11 @@ --- title: 'Null' -slug: Словарь/Null +slug: Glossary/Null tags: - CodingScripting - Glossary translation_of: Glossary/Null +original_slug: Словарь/Null ---

    В информатике, значение null представляет ссылку, которая указывает, обычно намеренно, на несуществующий или некорректный {{glossary("object")}} или адрес. Смысл null-ссылки различается от языка к языку.

    diff --git a/files/ru/glossary/number/index.html b/files/ru/glossary/number/index.html index 07f67d2729..9059e6fa0f 100644 --- a/files/ru/glossary/number/index.html +++ b/files/ru/glossary/number/index.html @@ -1,10 +1,11 @@ --- title: Number (Числовой тип данных) -slug: Словарь/Number +slug: Glossary/Number tags: - JavaScript - Типы данных translation_of: Glossary/Number +original_slug: Словарь/Number ---

    В {{Glossary("JavaScript")}}, Number - числовой тип данных в формате 64-битного числа двойной точности с плавающей запятой. В других языках программирования может существовать несколько чиловых типов данных, например: Integer, Float, Double или Bignum.

    diff --git a/files/ru/glossary/object/index.html b/files/ru/glossary/object/index.html index 4bb269fa22..bb8dafa4ba 100644 --- a/files/ru/glossary/object/index.html +++ b/files/ru/glossary/object/index.html @@ -1,6 +1,6 @@ --- title: Объект -slug: Словарь/Object +slug: Glossary/Object tags: - CodingScripting - Glossary @@ -10,6 +10,7 @@ tags: - Объект - Словарь translation_of: Glossary/Object +original_slug: Словарь/Object ---

    Объект относится к структуре данных, содержит в себе данные и инструкции по работе с ними. Объекты могут обозначать реальные вещи, например: машину, яблоко, человека или даже карту к сокровищам с ее координатами и инструкциями о том, как добраться до этих сокровищ.

    diff --git a/files/ru/glossary/oop/index.html b/files/ru/glossary/oop/index.html index f90b31c18c..bfe772849d 100644 --- a/files/ru/glossary/oop/index.html +++ b/files/ru/glossary/oop/index.html @@ -1,11 +1,12 @@ --- title: OOП -slug: Словарь/OOP +slug: Glossary/OOP tags: - Beginner - CodingScripting - Glossary translation_of: Glossary/OOP +original_slug: Словарь/OOP ---

    OOП (Объектно-Ориентированное Программирование) это подход в программировании, согласно которому, данные инкапсулированы внутри {{glossary("object","objects")}}, а сам объект существует как составная часть целого.

    diff --git a/files/ru/glossary/opengl/index.html b/files/ru/glossary/opengl/index.html index c6aa1376be..72a5a19910 100644 --- a/files/ru/glossary/opengl/index.html +++ b/files/ru/glossary/opengl/index.html @@ -1,7 +1,8 @@ --- title: OpenGL -slug: Словарь/OpenGL +slug: Glossary/OpenGL translation_of: Glossary/OpenGL +original_slug: Словарь/OpenGL ---

    OpenGL (Open Graphics Library) -  Это кроссплатформеный программный интерфейс, использующийся разными языками для обработки векторной(2D, 3D) графики.Обычно используется для взаимодействия с графическим процессором(GPU), чтобы добиться аппаратно-ускоренного рендеринга.

    diff --git a/files/ru/glossary/origin/index.html b/files/ru/glossary/origin/index.html index 4b95d3a888..d494e98aec 100644 --- a/files/ru/glossary/origin/index.html +++ b/files/ru/glossary/origin/index.html @@ -1,7 +1,8 @@ --- title: Первичные данные -slug: Словарь/origin +slug: Glossary/Origin translation_of: Glossary/Origin +original_slug: Словарь/origin ---

    Браузер отправляет серверу первичные данные - протокол, хистинг, домен, порт соединения через {{Glossary("URL")}}. Два объекта одинаковые если протокол, хост, домен и порт одинаковые.

    diff --git a/files/ru/glossary/php/index.html b/files/ru/glossary/php/index.html index 626e15310a..7fe12c9a16 100644 --- a/files/ru/glossary/php/index.html +++ b/files/ru/glossary/php/index.html @@ -1,7 +1,8 @@ --- title: PHP -slug: Словарь/PHP +slug: Glossary/PHP translation_of: Glossary/PHP +original_slug: Словарь/PHP ---
    PHP, расшифровывающийся как "PHP: Hypertext Preprocessor" - «PHP: Препроцессор Гипертекста», является распространенным интерпретируемым языком общего назначения с открытым исходным кодом. PHP создавался специально для ведения web-разработок и код на нем может внедряться непосредственно в HTML-код. Синтаксис языка берет начало из C, Java и Perl, и является легким для изучения. Основной целью PHP является предоставление web-разработчикам возможности быстрого создания динамически генерируемых web-страниц, однако область применения PHP не ограничивается только этим.
    diff --git a/files/ru/glossary/pixel/index.html b/files/ru/glossary/pixel/index.html index dbe4aa4eb6..9f1db811d9 100644 --- a/files/ru/glossary/pixel/index.html +++ b/files/ru/glossary/pixel/index.html @@ -1,10 +1,11 @@ --- title: Pixel -slug: Словарь/Pixel +slug: Glossary/Pixel tags: - Glossary - Graphics translation_of: Glossary/Pixel +original_slug: Словарь/Pixel ---

    Пиксель (англ. Pixel) - маленький строительный блок графического дисплея экрана компьютера.

    diff --git a/files/ru/glossary/polymorphism/index.html b/files/ru/glossary/polymorphism/index.html index bea130b908..1fea8ba38d 100644 --- a/files/ru/glossary/polymorphism/index.html +++ b/files/ru/glossary/polymorphism/index.html @@ -1,10 +1,11 @@ --- title: Полиморфизм -slug: Словарь/Polymorphism +slug: Glossary/Polymorphism tags: - CodingScripting - Glossary translation_of: Glossary/Polymorphism +original_slug: Словарь/Polymorphism ---

    Полиморфизм - это представление одного интерфейса для разных типов данных.

    diff --git a/files/ru/glossary/port/index.html b/files/ru/glossary/port/index.html index d4443e736e..7ad7227103 100644 --- a/files/ru/glossary/port/index.html +++ b/files/ru/glossary/port/index.html @@ -1,6 +1,6 @@ --- title: Порт -slug: Словарь/Порт +slug: Glossary/Port tags: - Glossary - Intro @@ -8,6 +8,7 @@ tags: - computer network - port translation_of: Glossary/Port +original_slug: Словарь/Порт ---

    Для подключенного к сети компьютера с {{Glossary("IP address")}}, порт это конечная точка входа для коммуникаций. Порты обозначаются числами, и до 1024 каждому порту по умолчанию назначен некоторый протокол.

    diff --git a/files/ru/glossary/primitive/index.html b/files/ru/glossary/primitive/index.html index cdeff2610a..6c04ad2aa4 100644 --- a/files/ru/glossary/primitive/index.html +++ b/files/ru/glossary/primitive/index.html @@ -1,11 +1,12 @@ --- title: Primitive -slug: Словарь/Primitive +slug: Glossary/Primitive tags: - CodingScripting - Glossary - JavaScript translation_of: Glossary/Primitive +original_slug: Словарь/Primitive ---

    Примитив (значение примитивного типа, примитивный тип данных) это данные, которые не являются {{glossary("object", "объектом")}} и не имеют {{glossary("method","методов")}}. В {{Glossary("JavaScript")}} 7 простых типов данных: {{Glossary("string")}}, {{Glossary("number")}}, {{Glossary("boolean")}}, {{Glossary("null")}}, {{Glossary("undefined")}}, {{Glossary("symbol")}} (новое в {{Glossary("ECMAScript")}} 2015), {{Glossary("bigint")}}.

    diff --git a/files/ru/glossary/privileged_code/index.html b/files/ru/glossary/privileged_code/index.html index c8f7e0c484..a24387e9af 100644 --- a/files/ru/glossary/privileged_code/index.html +++ b/files/ru/glossary/privileged_code/index.html @@ -1,9 +1,10 @@ --- title: Привилегированный код -slug: Словарь/privileged_code +slug: Glossary/privileged_code tags: - privileged translation_of: Glossary/privileged_code +original_slug: Словарь/privileged_code ---

    Привилегированный код (Privileged code) - Javascript-код расширения, например, скриптов content scripts.

    diff --git a/files/ru/glossary/progressive_web_apps/index.html b/files/ru/glossary/progressive_web_apps/index.html index d839ddf725..1aeed6d85f 100644 --- a/files/ru/glossary/progressive_web_apps/index.html +++ b/files/ru/glossary/progressive_web_apps/index.html @@ -1,10 +1,11 @@ --- title: Прогрессивные веб приложения -slug: Словарь/Progressive_web_apps +slug: Glossary/Progressive_web_apps tags: - Глоссарий - Прогрессивные веб-приложения translation_of: Glossary/Progressive_web_apps +original_slug: Словарь/Progressive_web_apps ---

    Прогрессивные веб-приложения — это термин, используемый для описания современного состояния разработки веб-приложений. Включает в себя использование стандартов веб-сайтов/приложений, которые используют все лучшие части Интернета, такие как возможность обнаружения поисковыми системами, возможность ссылки через {{Glossary("URL")}}  работу с различными форм-факторами, и их усиление с современными API-интерфейсами (такими как Service Workers и Push) и функциями, которые предоставляют другие преимущества, обычно присущие нативным приложениям.

    diff --git a/files/ru/glossary/promise/index.html b/files/ru/glossary/promise/index.html index 23ed273c40..f3175a21c9 100644 --- a/files/ru/glossary/promise/index.html +++ b/files/ru/glossary/promise/index.html @@ -1,10 +1,11 @@ --- title: Promise -slug: Словарь/Promise +slug: Glossary/Promise tags: - Словарь - асинхронный translation_of: Glossary/Promise +original_slug: Словарь/Promise ---

    A {{jsxref("Promise")}} - это {{Glossary("Object")}}, возвращаемый {{Glossary("function")}}, которая еще не завершила свою работу. Promise буквально представляет собой 'обещание' функции в итоге вернуть результат через объект промиса.

    diff --git a/files/ru/glossary/property/index.html b/files/ru/glossary/property/index.html index 92f27a9b35..b754fce996 100644 --- a/files/ru/glossary/property/index.html +++ b/files/ru/glossary/property/index.html @@ -1,11 +1,12 @@ --- title: Свойство -slug: Словарь/property +slug: Glossary/property tags: - Глоссарий - Неоднозначность - Словарь терминов translation_of: Glossary/property +original_slug: Словарь/property ---

    Термин свойство может иметь разное значение, в зависимости от контекста. Он может указывать на:

    diff --git a/files/ru/glossary/protocol/index.html b/files/ru/glossary/protocol/index.html index 86ad7407af..88945cc085 100644 --- a/files/ru/glossary/protocol/index.html +++ b/files/ru/glossary/protocol/index.html @@ -1,11 +1,12 @@ --- title: Протокол -slug: Словарь/Протокол +slug: Glossary/Protocol tags: - Глоссарий - инфраструктура - протокол translation_of: Glossary/Protocol +original_slug: Словарь/Протокол ---

    Протокол - это система правил, определяющая, как данные обмениваются внутри или между компьютерами.  Для связи между устройствами требуется согласование формата данных, которые будут использоваться для обмена. Набор правил, определяющих формат, называется протоколом.

    diff --git a/files/ru/glossary/prototype-based_programming/index.html b/files/ru/glossary/prototype-based_programming/index.html index 78e3828363..f0cd9214ff 100644 --- a/files/ru/glossary/prototype-based_programming/index.html +++ b/files/ru/glossary/prototype-based_programming/index.html @@ -1,10 +1,11 @@ --- title: Прототипно-ориентированное программирование -slug: Словарь/Prototype-based_programming +slug: Glossary/Prototype-based_programming tags: - Glossary - Глоссарий translation_of: Glossary/Prototype-based_programming +original_slug: Словарь/Prototype-based_programming ---

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

    diff --git a/files/ru/glossary/prototype/index.html b/files/ru/glossary/prototype/index.html index cd248a94a9..a130ef53c3 100644 --- a/files/ru/glossary/prototype/index.html +++ b/files/ru/glossary/prototype/index.html @@ -1,9 +1,10 @@ --- title: Прототип -slug: Словарь/Прототип +slug: Glossary/Prototype tags: - прототип translation_of: Glossary/Prototype +original_slug: Словарь/Прототип ---

    Прототип — модель, отображающая внешний вид и поведение приложения или продукта в начале цикла разработки.

    diff --git a/files/ru/glossary/proxy_server/index.html b/files/ru/glossary/proxy_server/index.html index e545c3b1b0..5c32b8fbc4 100644 --- a/files/ru/glossary/proxy_server/index.html +++ b/files/ru/glossary/proxy_server/index.html @@ -1,11 +1,12 @@ --- title: Прокси сервер -slug: Словарь/Прокси_сервер +slug: Glossary/Proxy_server tags: - Прокси - Сервер - Термин translation_of: Glossary/Proxy_server +original_slug: Словарь/Прокси_сервер ---

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

    diff --git a/files/ru/glossary/pseudo-element/index.html b/files/ru/glossary/pseudo-element/index.html index 24edc01fe7..52d2dbd238 100644 --- a/files/ru/glossary/pseudo-element/index.html +++ b/files/ru/glossary/pseudo-element/index.html @@ -1,11 +1,12 @@ --- title: Псевдоэлемент -slug: Словарь/Pseudo-element +slug: Glossary/Pseudo-element tags: - CSS - CodingScripting - Glossary translation_of: Glossary/Pseudo-element +original_slug: Словарь/Pseudo-element ---

    Селектор псевдоэлемента в CSS применяет стили к частям содержимого вашего документа в тех случаях, когда нет конкретного HTML-элемента для выбора. Например, вместо того, чтобы помещать первую букву каждого абзаца в отдельный элемент, вы можете оформить их все с помощью p{{ Cssxref("::first-letter") }}.

    diff --git a/files/ru/glossary/pseudocode/index.html b/files/ru/glossary/pseudocode/index.html index df42e78eaa..d20ebe3015 100644 --- a/files/ru/glossary/pseudocode/index.html +++ b/files/ru/glossary/pseudocode/index.html @@ -1,10 +1,11 @@ --- title: Псевдокод -slug: Словарь/Pseudocode +slug: Glossary/Pseudocode tags: - Написание кода - Псевдокод translation_of: Glossary/Pseudocode +original_slug: Словарь/Pseudocode ---

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

    diff --git a/files/ru/glossary/reflow/index.html b/files/ru/glossary/reflow/index.html index 34546c1ab3..155463a80c 100644 --- a/files/ru/glossary/reflow/index.html +++ b/files/ru/glossary/reflow/index.html @@ -1,7 +1,8 @@ --- title: Пересчет (Reflow) -slug: Словарь/Reflow +slug: Glossary/Reflow translation_of: Glossary/Reflow +original_slug: Словарь/Reflow ---

    Пересчет (Reflow) происходит, когда {{glossary("браузер")}} должен снова обработать и отрисовать часть или всю веб-страницу, например, после изменения размера какого-нибудь блока или изменения его позиции на интерактивном сайте.

    diff --git a/files/ru/glossary/regular_expression/index.html b/files/ru/glossary/regular_expression/index.html index c087ec1115..674f816436 100644 --- a/files/ru/glossary/regular_expression/index.html +++ b/files/ru/glossary/regular_expression/index.html @@ -1,9 +1,10 @@ --- title: Регулярные выражения -slug: Словарь/Regular_expression +slug: Glossary/Regular_expression tags: - регулярные выражения translation_of: Glossary/Regular_expression +original_slug: Словарь/Regular_expression ---

    Регулярные выражения (regex) - это правила, определяющие, какие последовательности символов появляются в поиске.

    diff --git a/files/ru/glossary/request_header/index.html b/files/ru/glossary/request_header/index.html index b5a8b82dad..f11bf25660 100644 --- a/files/ru/glossary/request_header/index.html +++ b/files/ru/glossary/request_header/index.html @@ -1,9 +1,10 @@ --- title: Заголовок запроса -slug: Словарь/Request_header +slug: Glossary/Request_header tags: - Словарь translation_of: Glossary/Request_header +original_slug: Словарь/Request_header ---

    Заголовок запроса - {{Glossary("header", "HTTP header")}} который используется в  HTTP-запросе и который не относиться к содержимому сообщения. Заголовки запроса, такие как {{HTTPHeader("Accept")}}, {{HTTPHeader("Accept-Language", "Accept-*")}} или {{HTTPHeader("If-Modified-Since", "If-*")}} позволяют выполнять условные запросы; другие, такие как {{HTTPHeader("Cookie")}}, {{HTTPHeader("User-Agent")}} или {{HTTPHeader("Referer")}} уточняют контекст, чтобы сервер мог адаптировать ответ.

    diff --git a/files/ru/glossary/responsive_web_design/index.html b/files/ru/glossary/responsive_web_design/index.html index 6c0c3bc240..8cd62e311c 100644 --- a/files/ru/glossary/responsive_web_design/index.html +++ b/files/ru/glossary/responsive_web_design/index.html @@ -1,11 +1,12 @@ --- title: Responsive web design -slug: Словарь/Responsive_web_design +slug: Glossary/Responsive_web_design tags: - Глоссарий - Дизайн - адаптивный дизайн translation_of: Glossary/Responsive_web_design +original_slug: Словарь/Responsive_web_design ---

    Адаптивный веб-дизайн ( RWD ) - это концепция веб-разработки, направленная на то, чтобы сайты выглядели и вели себя оптимально на всех персональных вычислительных устройствах, от настольных компьютеров до мобильных.

    diff --git a/files/ru/glossary/round_trip_time_(rtt)/index.html b/files/ru/glossary/round_trip_time_(rtt)/index.html index f81a2077b9..4bdd00fc4f 100644 --- a/files/ru/glossary/round_trip_time_(rtt)/index.html +++ b/files/ru/glossary/round_trip_time_(rtt)/index.html @@ -1,7 +1,8 @@ --- title: Round Trip Time (RTT) -slug: Словарь/Round_Trip_Time_(RTT) +slug: Glossary/Round_Trip_Time_(RTT) translation_of: Glossary/Round_Trip_Time_(RTT) +original_slug: Словарь/Round_Trip_Time_(RTT) ---

    Время приема-передачи (англ. Round Trip Time, RTT) - это время, которое требуется для отправки пакета данных в пункт назначения, плюс время, которое требуется для подтверждения того, что этот пакет был получен обратно. RTT между сетью и сервером может быть определен с помощью команды ping.

    diff --git a/files/ru/glossary/safe/index.html b/files/ru/glossary/safe/index.html index 4351bd9fee..63cdba860b 100644 --- a/files/ru/glossary/safe/index.html +++ b/files/ru/glossary/safe/index.html @@ -1,10 +1,11 @@ --- title: Безопасный метод -slug: Словарь/safe +slug: Glossary/safe tags: - Glossary - HTTP translation_of: Glossary/safe +original_slug: Словарь/safe ---

    Метод HTTP является безопасным, если он не меняет состояние сервера. Другими словами, безопасный метод проводит операции "только чтение" (read-only). Несколько следующих методов HTTP безопасные: {{HTTPMethod("GET")}}, {{HTTPMethod("HEAD")}} или {{HTTPMethod("OPTIONS")}}. Все безопасные методы являются также {{glossary("idempotent", "идемпотентными")}}, как и некоторые другие, но при этом небезопасные, такие как {{HTTPMethod("PUT")}} или {{HTTPMethod("DELETE")}}.

    diff --git a/files/ru/glossary/scroll_container/index.html b/files/ru/glossary/scroll_container/index.html index 4ea91d5582..f4059ae959 100644 --- a/files/ru/glossary/scroll_container/index.html +++ b/files/ru/glossary/scroll_container/index.html @@ -1,7 +1,8 @@ --- title: Scroll-контейнер -slug: Словарь/Scroll_container +slug: Glossary/Scroll_container translation_of: Glossary/Scroll_container +original_slug: Словарь/Scroll_container ---

    Scroll-контейнер создаётся путём применения к элементу свойства overflow: scroll или overflow: auto, при условии, что содержимого достаточно много для появления переполнения.

    diff --git a/files/ru/glossary/sdp/index.html b/files/ru/glossary/sdp/index.html index d1044fb171..2d6458bdf2 100644 --- a/files/ru/glossary/sdp/index.html +++ b/files/ru/glossary/sdp/index.html @@ -1,7 +1,8 @@ --- title: SDP -slug: Словарь/SDP +slug: Glossary/SDP translation_of: Glossary/SDP +original_slug: Словарь/SDP ---

    SDP (Session Description {{glossary("Protocol")}} - протокол описания сессии) - это текстовый формат для описания {{Glossary("P2P","peer-to-peer")}}-соединения. SDP содержит описание {{Glossary("кодеков")}}, адрес источника и информацию для синхронизации аудио и видео.

    diff --git a/files/ru/glossary/self-executing_anonymous_function/index.html b/files/ru/glossary/self-executing_anonymous_function/index.html index 104fef094b..1909560c9d 100644 --- a/files/ru/glossary/self-executing_anonymous_function/index.html +++ b/files/ru/glossary/self-executing_anonymous_function/index.html @@ -1,7 +1,8 @@ --- title: Self-Executing Anonymous Function -slug: Словарь/Self-Executing_Anonymous_Function +slug: Glossary/Self-Executing_Anonymous_Function translation_of: Glossary/Self-Executing_Anonymous_Function +original_slug: Словарь/Self-Executing_Anonymous_Function ---

    {{glossary("JavaScript")}} {{glossary("функция")}}, которая выполняется сразу после определения. Также известна как IIFE (Immediately Invoked Function Expression).

    diff --git a/files/ru/glossary/semantics/index.html b/files/ru/glossary/semantics/index.html index b64469506d..e20cffed37 100644 --- a/files/ru/glossary/semantics/index.html +++ b/files/ru/glossary/semantics/index.html @@ -1,7 +1,8 @@ --- title: Semantics -slug: Словарь/Semantics +slug: Glossary/Semantics translation_of: Glossary/Semantics +original_slug: Словарь/Semantics ---

    В программировании, Семантика означает значение фрагмента кода - например, «к какому результату приведет выполнение этой строки JavaScript?», или «каково предназначение или какая роль у этого элемента HTML» (а не «как он выглядит ?».)

    diff --git a/files/ru/glossary/seo/index.html b/files/ru/glossary/seo/index.html index b8222c6577..312ab0777d 100644 --- a/files/ru/glossary/seo/index.html +++ b/files/ru/glossary/seo/index.html @@ -1,7 +1,8 @@ --- title: SEO -slug: Словарь/SEO +slug: Glossary/SEO translation_of: Glossary/SEO +original_slug: Словарь/SEO ---

    SEO (Search Engine Optimization) Поисковая оптимизация - это комплекс мер по оптимизации, для поднятия сайта в рейтингах поисковых систем. Её еще называют "Повышением поискового рейтинга" 

    diff --git a/files/ru/glossary/server/index.html b/files/ru/glossary/server/index.html index 61c783485f..88373f3a87 100644 --- a/files/ru/glossary/server/index.html +++ b/files/ru/glossary/server/index.html @@ -1,7 +1,8 @@ --- title: Server -slug: Словарь/Server +slug: Glossary/Server translation_of: Glossary/Server +original_slug: Словарь/Server ---

    A server is a software or hardware offering a service to a user, usually referred to as client.  A hardware server is a shared computer on a network, usually powerful and housed in a data center.  A software server (often running on a hardware server) is a program that provides services to client programs or a {{glossary("UI","user interface")}} to human clients.

    diff --git a/files/ru/glossary/sgml/index.html b/files/ru/glossary/sgml/index.html index 7e00336c25..f4ff2a839d 100644 --- a/files/ru/glossary/sgml/index.html +++ b/files/ru/glossary/sgml/index.html @@ -1,10 +1,11 @@ --- title: SGML -slug: Словарь/SGML +slug: Glossary/SGML tags: - SGML - Словарь translation_of: Glossary/SGML +original_slug: Словарь/SGML ---

    Стандартный обобщённый язык разметки (SGML) это спецификация {{Glossary("ISO")}} для определения декларативных языков разметки.

    diff --git a/files/ru/glossary/simple_header/index.html b/files/ru/glossary/simple_header/index.html index c90db6fd05..5193a34476 100644 --- a/files/ru/glossary/simple_header/index.html +++ b/files/ru/glossary/simple_header/index.html @@ -1,12 +1,13 @@ --- title: Простой заголовок -slug: Словарь/Простой_заголовок +slug: Glossary/Simple_header tags: - CORS - HTTP - Определения - инфраструктура translation_of: Glossary/Simple_header +original_slug: Словарь/Простой_заголовок ---

    Простой заголовок (или заголовок запроса с поддержкой безопасности CORS) - это один из следующих HTTP заголовков:

    diff --git a/files/ru/glossary/simple_response_header/index.html b/files/ru/glossary/simple_response_header/index.html index 7cddde385f..7808bc1f3b 100644 --- a/files/ru/glossary/simple_response_header/index.html +++ b/files/ru/glossary/simple_response_header/index.html @@ -1,6 +1,7 @@ --- title: Simple response header -slug: Словарь/Simple_response_header +slug: Glossary/Simple_response_header translation_of: Glossary/Simple_response_header +original_slug: Словарь/Simple_response_header ---

    Old term for {{Glossary("CORS-safelisted response header")}}.

    diff --git a/files/ru/glossary/sloppy_mode/index.html b/files/ru/glossary/sloppy_mode/index.html index ae8eba54e3..6d3dbbc743 100644 --- a/files/ru/glossary/sloppy_mode/index.html +++ b/files/ru/glossary/sloppy_mode/index.html @@ -1,12 +1,13 @@ --- title: Грязный режим -slug: Словарь/Sloppy_mode +slug: Glossary/Sloppy_mode tags: - Glossary - JavaScript - Sloppy - Глоссарий translation_of: Glossary/Sloppy_mode +original_slug: Словарь/Sloppy_mode ---

    {{Glossary("ECMAScript")}} 5 и более поздние версии выполняют скрипты в Строгом режиме, который определенным образом изменяет семантику JavaScript для улучшения стабильности, и который упрощает понимание того, что происходит в программе при возникновении проблем.

    diff --git a/files/ru/glossary/specification/index.html b/files/ru/glossary/specification/index.html index 5c1abe1dd5..b3b3011818 100644 --- a/files/ru/glossary/specification/index.html +++ b/files/ru/glossary/specification/index.html @@ -1,10 +1,11 @@ --- title: Спецификация -slug: Словарь/Specification +slug: Glossary/Specification tags: - Словарь - Стандартизация translation_of: Glossary/Specification +original_slug: Словарь/Specification ---

    Спецификация - документ, детально описывающий функции и параметры, которые должен предоставлять продукт перед тем, как быть доставлен (опубликован). В случае описания Веба, термин "спецификация" (часто сокращают до "spec") в основном означает документ, описывающй язык, технологи или {{Glossary("API")}}, которые составляют целостный набор открытх Web технологий.

    diff --git a/files/ru/glossary/speculative_parsing/index.html b/files/ru/glossary/speculative_parsing/index.html index 0b3418772f..68c99dfe38 100644 --- a/files/ru/glossary/speculative_parsing/index.html +++ b/files/ru/glossary/speculative_parsing/index.html @@ -1,12 +1,13 @@ --- title: Оптимизация Ваших страниц для рискованного парсинга -slug: Web/HTML/Optimizing_Your_Pages_for_Speculative_Parsing +slug: Glossary/speculative_parsing tags: - HTML - HTML5 - Веб-разработка - Продвинутый translation_of: Glossary/speculative_parsing +original_slug: Web/HTML/Optimizing_Your_Pages_for_Speculative_Parsing ---

    Традиционно, HTML-парсер в браузерах работает на главной ветке и блокируется после тега </script>, пока скрипт не загрузится и не выполнится. HTML-парсер в Firefox 4 и новее поддерживает рискованный парсинг вне главной ветки. Он продолжает парсить, пока скрипты загружаются и выполняются. В Firefox 3.5 и 3.6 парсер начинает рискованную загрузку скриптов, стилей и изображений, когда он находит их. Однако, в Firefox 4 и новее HTML-парсер также рискованно загружает алгоритм постройки дерева HTML. С одной стороны, когда риск оправдался, нет необходимости в репарсинге части, которая уже была просканирована на скрипты, стили и изображения. С другой стороны, когда риск не оправдался, HTML-парсеру достаётся больше работы.

    diff --git a/files/ru/glossary/statement/index.html b/files/ru/glossary/statement/index.html index cd9163c964..378c44cfb2 100644 --- a/files/ru/glossary/statement/index.html +++ b/files/ru/glossary/statement/index.html @@ -1,11 +1,12 @@ --- title: Инструкция -slug: Словарь/Выражение +slug: Glossary/Statement tags: - Глоссарий - Инструкция - Новичку translation_of: Glossary/Statement +original_slug: Словарь/Выражение ---

    В компьютерном языке программирования инструкция — строка кода, выполняющая задачу. Каждая программа состоит из последовательности инструкций.

    diff --git a/files/ru/glossary/static_typing/index.html b/files/ru/glossary/static_typing/index.html index f2336fb220..789e77e12e 100644 --- a/files/ru/glossary/static_typing/index.html +++ b/files/ru/glossary/static_typing/index.html @@ -1,10 +1,11 @@ --- title: Статическая типизация -slug: Словарь/Статическая_типизация +slug: Glossary/Static_typing tags: - Глоссарий - Тип translation_of: Glossary/Static_typing +original_slug: Словарь/Статическая_типизация ---

    Статически типизированный язык — это язык, где типы переменных известны во время компиляции (н-р {{glossary("Java", "Java")}}, C, C++). В большинстве таких языков типы переменных должны быть явно заданы разработчиком. В остальных статически типизированных языках вывод типов (type inference) позволяет не задавать их (н-р OCaml).

    diff --git a/files/ru/glossary/string/index.html b/files/ru/glossary/string/index.html index 43aa69f04a..27671571e2 100644 --- a/files/ru/glossary/string/index.html +++ b/files/ru/glossary/string/index.html @@ -1,10 +1,11 @@ --- title: Строка -slug: Словарь/Строка +slug: Glossary/String tags: - Начальный - Строка translation_of: Glossary/String +original_slug: Словарь/Строка ---

    В любом языке программирования компьютера, строка представляет собой последовательность {{Glossary("character","символов")}}, используемых для представления текста.

    diff --git a/files/ru/glossary/svg/index.html b/files/ru/glossary/svg/index.html index 1f4bd4ba6b..a3ee0c2b80 100644 --- a/files/ru/glossary/svg/index.html +++ b/files/ru/glossary/svg/index.html @@ -1,6 +1,6 @@ --- title: SVG -slug: Словарь/SVG +slug: Glossary/SVG tags: - SVG - Глоссарий @@ -8,6 +8,7 @@ tags: - Начинающий - Программирование translation_of: Glossary/SVG +original_slug: Словарь/SVG ---

    Масштабируемая векторная графика ( SVG ) - это формат двумерного векторного изображения на основе синтаксиса {{Glossary("XML")}}.

    diff --git a/files/ru/glossary/symbol/index.html b/files/ru/glossary/symbol/index.html index daa0202fd5..355d8f2e53 100644 --- a/files/ru/glossary/symbol/index.html +++ b/files/ru/glossary/symbol/index.html @@ -1,7 +1,8 @@ --- title: Symbol (Символ) -slug: Словарь/Symbol +slug: Glossary/Symbol translation_of: Glossary/Symbol +original_slug: Словарь/Symbol ---

    На этой странице описывается тип данных «символ» и функция «{{jsxref("Symbol")}}()», которая (среди прочего) создает экземпляры типа «символ».

    diff --git a/files/ru/glossary/synchronous/index.html b/files/ru/glossary/synchronous/index.html index f939717e05..99f8639a16 100644 --- a/files/ru/glossary/synchronous/index.html +++ b/files/ru/glossary/synchronous/index.html @@ -1,11 +1,12 @@ --- title: Синхронный -slug: Словарь/Синхронный +slug: Glossary/Synchronous tags: - Веб - Веб механика - Глоссарий translation_of: Glossary/Synchronous +original_slug: Словарь/Синхронный ---

    Синхронный относится к среде связи где каждый участник получает (и если нужно обрабатывает и/или отвечает) сообщения немедленно (или настолько быстро, на сколько это возможно).

    diff --git a/files/ru/glossary/tag/index.html b/files/ru/glossary/tag/index.html index f018fa052b..f9bbdd9ffe 100644 --- a/files/ru/glossary/tag/index.html +++ b/files/ru/glossary/tag/index.html @@ -1,12 +1,13 @@ --- title: Тег -slug: Словарь/Тег +slug: Glossary/Tag tags: - HTML - Вступление - Словарь - Тег translation_of: Glossary/Tag +original_slug: Словарь/Тег ---

    В {{Glossary("HTML")}} теги используются для создания {{Glossary("Элемент", "элементов")}}. Имя HTML элемента - это имя заключенное в угловые скобки, как например <p> для "абзаца". Обратите внимание, что концу имени предшествует символ косой черты (слэша), "</p>", и что в пустых элементах закрывающий тег не требуется и не допускается. Если атрибуты не указаны, то для них применяются значения по умолчанию. 

    diff --git a/files/ru/glossary/tcp/index.html b/files/ru/glossary/tcp/index.html index 9576c824cc..5fce8d8bbf 100644 --- a/files/ru/glossary/tcp/index.html +++ b/files/ru/glossary/tcp/index.html @@ -1,6 +1,6 @@ --- title: TCP -slug: Словарь/TCP +slug: Glossary/TCP tags: - TCP - Transmission Control Protocol @@ -8,6 +8,7 @@ tags: - Словарь - инфраструктура translation_of: Glossary/TCP +original_slug: Словарь/TCP ---

    TCP (Протокол Управления Передачей) - важный {{Glossary("protocol", "протокол")}} сети интернет, который позволяет двум хостам создать соединение и обмениваться потоками данных. TCP гарантирует доставку данных и пакетов в том же порядке, в котором они были отправлены. Винт Серф и Боб Кан, которые в то время были учеными DARPA, разработали TCP в 1970-х годах.

    diff --git a/files/ru/glossary/time_to_first_byte/index.html b/files/ru/glossary/time_to_first_byte/index.html index e7110fe8b6..5c2cb05239 100644 --- a/files/ru/glossary/time_to_first_byte/index.html +++ b/files/ru/glossary/time_to_first_byte/index.html @@ -1,7 +1,8 @@ --- title: Time to first byte -slug: Словарь/time_to_first_byte +slug: Glossary/time_to_first_byte translation_of: Glossary/time_to_first_byte +original_slug: Словарь/time_to_first_byte ---

    Время до первого байта (англ. Time to First Byte, TTFB) - одна из метрик производительности веб-страниц, которая описывает время, которое прошло с момента отправления браузером запроса страницы до момента, когда он получил первый байт информации с сервера. Это время включает в себя поиск DNS-сервера и установление соединия с использованием TCP-рукопожатия и SSL-рукопожатия, если запрос выполняется через https.

    diff --git a/files/ru/glossary/time_to_interactive/index.html b/files/ru/glossary/time_to_interactive/index.html index 8d89b8fc0d..e4c40b18cb 100644 --- a/files/ru/glossary/time_to_interactive/index.html +++ b/files/ru/glossary/time_to_interactive/index.html @@ -1,7 +1,8 @@ --- title: Time to interactive -slug: Словарь/Time_to_interactive +slug: Glossary/Time_to_interactive translation_of: Glossary/Time_to_interactive +original_slug: Словарь/Time_to_interactive ---

    Время до интерактивности (англ. Time to Interactive, TTI) - это нестандартизированная метрика веб-производительности, которая определяется как момент времени, когда завершилась последняя долгая задача, после которой следовало 5 секунд бездействия сети и основного потока.

    diff --git a/files/ru/glossary/tls/index.html b/files/ru/glossary/tls/index.html index a39a18bd66..6ce2ae759e 100644 --- a/files/ru/glossary/tls/index.html +++ b/files/ru/glossary/tls/index.html @@ -1,7 +1,8 @@ --- title: TLS -slug: Словарь/TLS +slug: Glossary/TLS translation_of: Glossary/TLS +original_slug: Словарь/TLS ---

    Transport Layer Security (TLS) - Безопасность Транспортного Уровня ({{Glossary("протокол")}}), ранее известный как Secure Sockets Layer (SSL) - Уровень Защищённых Соединений используется приложениями для организации защищённой передачи данных через интернет, предотвращая взлом и прослушивание электронной почты, просмотра сайтов, переписки и прочих протоколов.

    diff --git a/files/ru/glossary/truthy/index.html b/files/ru/glossary/truthy/index.html index a99cf53cf9..0aaad9385b 100644 --- a/files/ru/glossary/truthy/index.html +++ b/files/ru/glossary/truthy/index.html @@ -1,12 +1,13 @@ --- title: Truthy -slug: Словарь/Truthy +slug: Glossary/Truthy tags: - Glossary - JavaScript - truthy - Словарь translation_of: Glossary/Truthy +original_slug: Словарь/Truthy ---

    В {{Glossary("JavaScript")}}, истинное значение - это значение, которое считается true, когда встречается в контексте {{Glossary("Boolean")}}. Все значения истинные, если они не определены как {{Glossary("Falsy", "falsy")}} (кроме false, 0, -0, 0n, "", null, undefined, и NaN).

    diff --git a/files/ru/glossary/type/index.html b/files/ru/glossary/type/index.html index 0e596241d9..445e27b981 100644 --- a/files/ru/glossary/type/index.html +++ b/files/ru/glossary/type/index.html @@ -1,6 +1,6 @@ --- title: Type (тип) -slug: Словарь/Type +slug: Glossary/Type tags: - Data Type - Glossary @@ -8,6 +8,7 @@ tags: - Type - тип данных translation_of: Glossary/Type +original_slug: Словарь/Type ---

    Тип является характеристикой {{glossary('value', 'значения')}}, влияющей на то, какой вид данных или структур оно может хранить — например, в JavaScript {{domxref("Boolean")}} содержит только значения true/false, тогда как {{domxref("String")}} содержит текстовые строки, а {{domxref("Number")}} содержит числа любого типа и т.д. При этом для Структурных типов мы в целом можем опираться на то, какой конструктор был использован для создания данной структуры.

    diff --git a/files/ru/glossary/type_coercion/index.html b/files/ru/glossary/type_coercion/index.html index d8a4add38c..731a677790 100644 --- a/files/ru/glossary/type_coercion/index.html +++ b/files/ru/glossary/type_coercion/index.html @@ -1,6 +1,6 @@ --- title: Type coercion -slug: Словарь/Type_coercion +slug: Glossary/Type_coercion tags: - Beginner - Glossary @@ -9,6 +9,7 @@ tags: - Начинающим - приведение типа translation_of: Glossary/Type_coercion +original_slug: Словарь/Type_coercion ---

    Приведение типов (type coercion) - это автоматическое или неявное преобразование значений из одного типа данных в другой (например, строки в число). {{Glossary('Type conversion', 'Преобразование типа')}} похоже на приведение типа, потому что они оба преобразуют значения из одного типа данных в другой с одним ключевым различием — приведение типа является неявным, тогда как преобразование типа может быть неявным или явным.

    diff --git a/files/ru/glossary/type_conversion/index.html b/files/ru/glossary/type_conversion/index.html index 534f66d01d..4ef6368773 100644 --- a/files/ru/glossary/type_conversion/index.html +++ b/files/ru/glossary/type_conversion/index.html @@ -1,6 +1,6 @@ --- title: Type conversion -slug: Словарь/Type_Conversion +slug: Glossary/Type_Conversion tags: - Beginner - Glossary @@ -9,6 +9,7 @@ tags: - Начинающим - Преобразование типов translation_of: Glossary/Type_Conversion +original_slug: Словарь/Type_Conversion ---

    Преобразование типов (type conversion) означает передачу данных из одного типа данных в другой. Неявное преобразование происходит, когда компилятор автоматически присваивает (назначает) типы данных, но исходный код также может явно требовать преобразования для завершения. Например, в случае инструкции 5+2.0, число с плавающей точкой 2.0 неявно преобразуется в целое число, но в случае инструкции Number("0x11") строка "0x11" явно преобразуется в типизированное число 17.

    diff --git a/files/ru/glossary/ui/index.html b/files/ru/glossary/ui/index.html index eb16ea20c3..f4398d7f6f 100644 --- a/files/ru/glossary/ui/index.html +++ b/files/ru/glossary/ui/index.html @@ -1,11 +1,12 @@ --- title: UI -slug: Словарь/UI +slug: Glossary/UI tags: - Дизайн - Словарь - доступность translation_of: Glossary/UI +original_slug: Словарь/UI ---

    Пользовательский Интерфейс (UI) — это всё, что облегчает взаимодействие пользователя с компьютером. В мире компьютеров это может быть что угодно: клавиатура, джойстик, монитор, программа. Если мы рассматриваем компьютерное ПО - это ввод и вывод командной строки, веб-страница, форма ввода или интерфейс любого приложения.

    diff --git a/files/ru/glossary/undefined/index.html b/files/ru/glossary/undefined/index.html index c73dbb8ada..6cf4d44fd2 100644 --- a/files/ru/glossary/undefined/index.html +++ b/files/ru/glossary/undefined/index.html @@ -1,7 +1,8 @@ --- title: undefined -slug: Словарь/undefined +slug: Glossary/undefined translation_of: Glossary/undefined +original_slug: Словарь/undefined ---
    {{Glossary("primitive", "Примитивное")}} значение. Автоматически присваивается переменным, которые были только объявлены или {{Glossary("Argument","аргументам")}}, для которых не были установлены значения.
    diff --git a/files/ru/glossary/url/index.html b/files/ru/glossary/url/index.html index acaddff749..8a248f273a 100644 --- a/files/ru/glossary/url/index.html +++ b/files/ru/glossary/url/index.html @@ -1,6 +1,6 @@ --- title: URL (Единый указатель ресурса) -slug: Словарь/URL +slug: Glossary/URL tags: - URL - Глоссарий @@ -8,6 +8,7 @@ tags: - веб-адреса - урлы translation_of: Glossary/URL +original_slug: Словарь/URL ---

    Единый указатель ресурса (Uniform Resource Locator, URL) — строка, однозначно определяющая, где в интернете находится ресурс.

    diff --git a/files/ru/glossary/user_agent/index.html b/files/ru/glossary/user_agent/index.html index d0b87d42eb..00cf160b1b 100644 --- a/files/ru/glossary/user_agent/index.html +++ b/files/ru/glossary/user_agent/index.html @@ -1,7 +1,8 @@ --- title: Агент пользователя -slug: Словарь/User_agent +slug: Glossary/User_agent translation_of: Glossary/User_agent +original_slug: Словарь/User_agent ---

    Пользовательский агент (user agent, UA), или агент пользователя, это компьютерная программа, представляющая пользователя и выполняющая действия от его лица, например, {{Glossary("Browser","браузер")}} в контексте {{Glossary("World Wide Web", "Всемирной паутины")}}.

    diff --git a/files/ru/glossary/variable/index.html b/files/ru/glossary/variable/index.html index 8afe021e2d..19580eac37 100644 --- a/files/ru/glossary/variable/index.html +++ b/files/ru/glossary/variable/index.html @@ -1,9 +1,10 @@ --- title: Переменная -slug: Словарь/Variable +slug: Glossary/Variable tags: - Словарь translation_of: Glossary/Variable +original_slug: Словарь/Variable ---

    Переменная — именованная часть памяти, в которую могут помещаться разные значения переменной. Причем в каждый момент времени переменная имеет единственное значение.

    diff --git a/files/ru/glossary/vendor_prefix/index.html b/files/ru/glossary/vendor_prefix/index.html index b9d0c149ba..b23576ad4d 100644 --- a/files/ru/glossary/vendor_prefix/index.html +++ b/files/ru/glossary/vendor_prefix/index.html @@ -1,7 +1,8 @@ --- title: Vendor Prefix -slug: Словарь/Vendor_Prefix +slug: Glossary/Vendor_Prefix translation_of: Glossary/Vendor_Prefix +original_slug: Словарь/Vendor_Prefix ---

    Browser vendors sometimes add prefixes to experimental or nonstandard CSS properties and JavaScript APIs, so developers can experiment with new ideas while—in theory—preventing their experiments from being relied upon and then breaking web developers' code during the standardization process. Developers should wait to include the unprefixed property until browser behavior is standardized.

    diff --git a/files/ru/glossary/viewport/index.html b/files/ru/glossary/viewport/index.html index 075b8fbf69..a50f2c2763 100644 --- a/files/ru/glossary/viewport/index.html +++ b/files/ru/glossary/viewport/index.html @@ -1,7 +1,8 @@ --- title: Viewport -slug: Словарь/Viewport +slug: Glossary/Viewport translation_of: Glossary/Viewport +original_slug: Словарь/Viewport ---

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

    diff --git a/files/ru/glossary/w3c/index.html b/files/ru/glossary/w3c/index.html index 6c8de54e86..90770f5299 100644 --- a/files/ru/glossary/w3c/index.html +++ b/files/ru/glossary/w3c/index.html @@ -1,6 +1,6 @@ --- title: W3C -slug: Словарь/W3C +slug: Glossary/W3C tags: - W3C - Введение @@ -9,6 +9,7 @@ tags: - Словарь - Сообщество translation_of: Glossary/W3C +original_slug: Словарь/W3C ---

    The World Wide Web Consortium (W3C) is an international body that maintains {{Glossary("World Wide Web", "Web-related")}} rules and frameworks.

    diff --git a/files/ru/glossary/wai/index.html b/files/ru/glossary/wai/index.html index 6c9ed57dda..3e14706bf4 100644 --- a/files/ru/glossary/wai/index.html +++ b/files/ru/glossary/wai/index.html @@ -1,7 +1,8 @@ --- title: WAI -slug: Словарь/WAI +slug: Glossary/WAI translation_of: Glossary/WAI +original_slug: Словарь/WAI ---

    WAI или Web Accessibility Initiative (англ. Инициатива доступности веб-сайтов)  это попытка Консорциума World Wide Web (W3C) улучшить доступность для людей с различными проблемами, которым могут понадобиться нестандартные {{glossary ("browser", "браузер")}} или устройства.

    diff --git a/files/ru/glossary/webkit/index.html b/files/ru/glossary/webkit/index.html index cbe8ed17d7..04d0cdf6c7 100644 --- a/files/ru/glossary/webkit/index.html +++ b/files/ru/glossary/webkit/index.html @@ -1,7 +1,8 @@ --- title: WebKit -slug: Словарь/WebKit +slug: Glossary/WebKit translation_of: Glossary/WebKit +original_slug: Словарь/WebKit ---

    WebKit это framework который показывает правильно отформатированные веб-страницы на основе их разметки. {{Glossary("Apple Safari")}} и большинство мобильных браузеров зависят от Webkit (Webkit это очень портативный и легко настраиваемый framework).

    diff --git a/files/ru/glossary/websockets/index.html b/files/ru/glossary/websockets/index.html index e3dff1b176..6f0379ef67 100644 --- a/files/ru/glossary/websockets/index.html +++ b/files/ru/glossary/websockets/index.html @@ -1,6 +1,6 @@ --- title: WebSockets -slug: Словарь/WebSockets +slug: Glossary/WebSockets tags: - Web - WebSocket @@ -8,6 +8,7 @@ tags: - Словарь - инфраструктура translation_of: Glossary/WebSockets +original_slug: Словарь/WebSockets ---

    WebSocket - это {{Glossary("protocol", "протокол")}}, который позволяет создать постоянное {{Glossary("TCP")}} соединение между сервером и клиентом, чтобы они могли обмениваться данными в любое время.

    diff --git a/files/ru/glossary/whatwg/index.html b/files/ru/glossary/whatwg/index.html index 8a062129fe..bfe16d1c82 100644 --- a/files/ru/glossary/whatwg/index.html +++ b/files/ru/glossary/whatwg/index.html @@ -1,6 +1,6 @@ --- title: WHATWG -slug: Словарь/WHATWG +slug: Glossary/WHATWG tags: - Community - DOM @@ -13,6 +13,7 @@ tags: - Сообщество - Стандарты translation_of: Glossary/WHATWG +original_slug: Словарь/WHATWG ---

    WHATWG (Рабочая группа по вебу, гипертексту, приложениям и технологиям) (англ. Web Hypertext Application Technology Working Group) сообщество, которое поддерживает и разрабатывает веб стандарты, включая {{Glossary("DOM")}}, Fetch и {{Glossary("HTML")}}. Сотрудники Apple, Mozilla и Opera основали WHATWG в 2004.

    diff --git a/files/ru/glossary/whitespace/index.html b/files/ru/glossary/whitespace/index.html index 737429d465..11eef0aeb4 100644 --- a/files/ru/glossary/whitespace/index.html +++ b/files/ru/glossary/whitespace/index.html @@ -1,7 +1,8 @@ --- title: Пробельные символы -slug: Словарь/Пробельные_символы +slug: Glossary/Whitespace translation_of: Glossary/Whitespace +original_slug: Словарь/Пробельные_символы ---

    Пробельные символы — это множество {{Glossary("Character", "символов")}}  использующихся для горизонтального или вертикалного разделения остальных символов. Они используются для разделения токенов в {{Glossary("HTML")}}, {{Glossary("CSS")}}, {{Glossary("JavaScript")}} и других компьютерных языках.

    diff --git a/files/ru/glossary/world_wide_web/index.html b/files/ru/glossary/world_wide_web/index.html index 14d223cd89..e227c6a115 100644 --- a/files/ru/glossary/world_wide_web/index.html +++ b/files/ru/glossary/world_wide_web/index.html @@ -1,11 +1,12 @@ --- title: World Wide Web -slug: Словарь/World_Wide_Web +slug: Glossary/World_Wide_Web tags: - WWW - World Wide Web - инфраструктура translation_of: Glossary/World_Wide_Web +original_slug: Словарь/World_Wide_Web ---

    Всемирная сеть — сокращенно: WWW, W3, или Web; Сетьпаутина или веб — всемирная система публичных веб-страниц в сети {{Glossary("Интернет")}}. Сеть не является Интернетом: Сеть лишь использует Интернет как среду передачи информации и данных.

    diff --git a/files/ru/glossary/wrapper/index.html b/files/ru/glossary/wrapper/index.html index b5d33ac99c..e37a9a6bd7 100644 --- a/files/ru/glossary/wrapper/index.html +++ b/files/ru/glossary/wrapper/index.html @@ -1,11 +1,12 @@ --- title: Обертка -slug: Словарь/Wrapper +slug: Glossary/Wrapper tags: - CodingScripting - Glossary - Wrapper translation_of: Glossary/Wrapper +original_slug: Словарь/Wrapper ---

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

    diff --git a/files/ru/glossary/xhr_(xmlhttprequest)/index.html b/files/ru/glossary/xhr_(xmlhttprequest)/index.html index 1fda8a238a..d5b77a33b6 100644 --- a/files/ru/glossary/xhr_(xmlhttprequest)/index.html +++ b/files/ru/glossary/xhr_(xmlhttprequest)/index.html @@ -1,7 +1,8 @@ --- title: XHR (XMLHttpRequest) -slug: Словарь/XHR_(XMLHttpRequest) +slug: Glossary/XHR_(XMLHttpRequest) translation_of: Glossary/XHR_(XMLHttpRequest) +original_slug: Словарь/XHR_(XMLHttpRequest) ---

    {{domxref("XMLHttpRequest")}} (XHR) это {{Glossary("JavaScript")}} {{Glossary("API")}} для создания {{Glossary("AJAX")}} запросов. Методы этого объекта предоставляют возможность отправки сетевых запросов между {{Glossary("browser")}} и {{Glossary("server")}}.

    diff --git a/files/ru/glossary/xhtml/index.html b/files/ru/glossary/xhtml/index.html index ced26ea14b..b3c1b14f40 100644 --- a/files/ru/glossary/xhtml/index.html +++ b/files/ru/glossary/xhtml/index.html @@ -1,7 +1,8 @@ --- title: XHTML -slug: Словарь/XHTML +slug: Glossary/XHTML translation_of: Glossary/XHTML +original_slug: Словарь/XHTML ---

    XHTML по отношению к XML - это так же, как HTML по отношению к SGML. Таким образом, XHTML - язык разметки который подобен HTML, но с более строгим синтаксисом. Две версии XHTML были закончены (окончательно сформулированы) W3C:

      diff --git a/files/ru/glossary/xml/index.html b/files/ru/glossary/xml/index.html index 14568728d3..72d331d59a 100644 --- a/files/ru/glossary/xml/index.html +++ b/files/ru/glossary/xml/index.html @@ -1,10 +1,11 @@ --- title: XML -slug: Словарь/XML +slug: Glossary/XML tags: - Glossary - XML translation_of: Glossary/XML +original_slug: Словарь/XML ---

      eXtensible Markup Language (XML) - расширяемый язык разметки, рекомендованный Консорциумом Всемирной паутины (W3C). В отрасли информационных технологий (ИТ) используется множество языков на основе XML в качестве языков описания данных.

      diff --git a/files/ru/learn/accessibility/accessibility_troubleshooting/index.html b/files/ru/learn/accessibility/accessibility_troubleshooting/index.html index d47abae869..f486ddb73d 100644 --- a/files/ru/learn/accessibility/accessibility_troubleshooting/index.html +++ b/files/ru/learn/accessibility/accessibility_troubleshooting/index.html @@ -1,7 +1,8 @@ --- title: Устранение проблем доступности -slug: Learn/Доступность/Accessibility_troubleshooting +slug: Learn/Accessibility/Accessibility_troubleshooting translation_of: Learn/Accessibility/Accessibility_troubleshooting +original_slug: Learn/Доступность/Accessibility_troubleshooting ---
      {{LearnSidebar}}
      diff --git a/files/ru/learn/accessibility/css_and_javascript/index.html b/files/ru/learn/accessibility/css_and_javascript/index.html index 31ed1cb106..125e7e09af 100644 --- a/files/ru/learn/accessibility/css_and_javascript/index.html +++ b/files/ru/learn/accessibility/css_and_javascript/index.html @@ -1,10 +1,11 @@ --- title: CSS и JavaScript доступность - лучшие практики -slug: Learn/Доступность/CSS_and_JavaScript +slug: Learn/Accessibility/CSS_and_JavaScript tags: - CSS - JavaScript translation_of: Learn/Accessibility/CSS_and_JavaScript +original_slug: Learn/Доступность/CSS_and_JavaScript ---
      {{LearnSidebar}}
      diff --git a/files/ru/learn/accessibility/html/index.html b/files/ru/learn/accessibility/html/index.html index 64c19fd4d6..75e886aa79 100644 --- a/files/ru/learn/accessibility/html/index.html +++ b/files/ru/learn/accessibility/html/index.html @@ -1,6 +1,6 @@ --- title: 'HTML: Хорошая основа для доступности' -slug: Learn/Доступность/HTML +slug: Learn/Accessibility/HTML tags: - HTML - a11y @@ -13,6 +13,7 @@ tags: - вспомагательные технологии - доступность translation_of: Learn/Accessibility/HTML +original_slug: Learn/Доступность/HTML ---
      {{LearnSidebar}}
      diff --git a/files/ru/learn/accessibility/index.html b/files/ru/learn/accessibility/index.html index 422bead1d7..36a072e071 100644 --- a/files/ru/learn/accessibility/index.html +++ b/files/ru/learn/accessibility/index.html @@ -1,6 +1,6 @@ --- title: Доступность -slug: Learn/Доступность +slug: Learn/Accessibility tags: - CSS - HTML @@ -8,6 +8,7 @@ tags: - Удобство - доступность translation_of: Learn/Accessibility +original_slug: Learn/Доступность ---
      {{LearnSidebar}}
      diff --git a/files/ru/learn/accessibility/mobile/index.html b/files/ru/learn/accessibility/mobile/index.html index bbdc7f0e1d..89826dcd23 100644 --- a/files/ru/learn/accessibility/mobile/index.html +++ b/files/ru/learn/accessibility/mobile/index.html @@ -1,9 +1,10 @@ --- title: Мобильная доступность -slug: Learn/Доступность/Mobile +slug: Learn/Accessibility/Mobile tags: - Mobile translation_of: Learn/Accessibility/Mobile +original_slug: Learn/Доступность/Mobile ---
      {{LearnSidebar}}
      diff --git a/files/ru/learn/accessibility/multimedia/index.html b/files/ru/learn/accessibility/multimedia/index.html index e07550ba5e..b75e4b89b8 100644 --- a/files/ru/learn/accessibility/multimedia/index.html +++ b/files/ru/learn/accessibility/multimedia/index.html @@ -1,9 +1,10 @@ --- title: Доступность мультимедиа -slug: Learn/Доступность/Multimedia +slug: Learn/Accessibility/Multimedia tags: - JavaScript translation_of: Learn/Accessibility/Multimedia +original_slug: Learn/Доступность/Multimedia ---
      {{LearnSidebar}}
      diff --git a/files/ru/learn/accessibility/wai-aria_basics/index.html b/files/ru/learn/accessibility/wai-aria_basics/index.html index d04c4fd483..576855fcdb 100644 --- a/files/ru/learn/accessibility/wai-aria_basics/index.html +++ b/files/ru/learn/accessibility/wai-aria_basics/index.html @@ -1,9 +1,10 @@ --- title: Основы WAI-ARIA -slug: Learn/Доступность/WAI-ARIA_basics +slug: Learn/Accessibility/WAI-ARIA_basics tags: - JavaScript translation_of: Learn/Accessibility/WAI-ARIA_basics +original_slug: Learn/Доступность/WAI-ARIA_basics ---
      {{LearnSidebar}}
      diff --git a/files/ru/learn/accessibility/what_is_accessibility/index.html b/files/ru/learn/accessibility/what_is_accessibility/index.html index 1a6e11f73e..84dc970c42 100644 --- a/files/ru/learn/accessibility/what_is_accessibility/index.html +++ b/files/ru/learn/accessibility/what_is_accessibility/index.html @@ -1,6 +1,6 @@ --- title: Что такое доступность? -slug: Learn/Доступность/What_is_accessibility +slug: Learn/Accessibility/What_is_accessibility tags: - CSS - HTML @@ -15,6 +15,7 @@ tags: - вспомогательная технология - доступность translation_of: Learn/Accessibility/What_is_accessibility +original_slug: Learn/Доступность/What_is_accessibility ---
      {{LearnSidebar}}
      diff --git a/files/ru/learn/common_questions/how_does_the_internet_work/index.html b/files/ru/learn/common_questions/how_does_the_internet_work/index.html index 19230a4042..225ee71401 100644 --- a/files/ru/learn/common_questions/how_does_the_internet_work/index.html +++ b/files/ru/learn/common_questions/how_does_the_internet_work/index.html @@ -1,12 +1,13 @@ --- title: Как работает Интернет -slug: Learn/How_the_Internet_works +slug: Learn/Common_questions/How_does_the_Internet_work tags: - Начинающий - Руководство - Учебник - туториал translation_of: Learn/Common_questions/How_does_the_Internet_work +original_slug: Learn/How_the_Internet_works ---
      {{LearnSidebar}}
      diff --git a/files/ru/learn/common_questions/pages_sites_servers_and_search_engines/index.html b/files/ru/learn/common_questions/pages_sites_servers_and_search_engines/index.html index 0a9b7a643f..38139a33b7 100644 --- a/files/ru/learn/common_questions/pages_sites_servers_and_search_engines/index.html +++ b/files/ru/learn/common_questions/pages_sites_servers_and_search_engines/index.html @@ -1,6 +1,6 @@ --- -title: 'Веб-страницы, веб-сайты, веб серверы и поисковики' -slug: Learn/Pages_sites_servers_and_search_engines +title: Веб-страницы, веб-сайты, веб серверы и поисковики +slug: Learn/Common_questions/Pages_sites_servers_and_search_engines tags: - ActiveLearning - Beginner @@ -9,6 +9,7 @@ tags: - Новичку - Программисту translation_of: Learn/Common_questions/Pages_sites_servers_and_search_engines +original_slug: Learn/Pages_sites_servers_and_search_engines ---

      В этой статье мы расскажем о различных понятиях связанных с Веб: о веб-страницах, веб-сайтах, веб-серверах и о поисковых системах. Эти термины часто ставят в тупик как начинающих работу с Веб, так и людей, редко пользующихся сетью. Давайте же разберемся, что именно эти понятия означают!

      diff --git a/files/ru/learn/common_questions/what_are_browser_developer_tools/index.html b/files/ru/learn/common_questions/what_are_browser_developer_tools/index.html index 8cd514efcd..c38c18ddd7 100644 --- a/files/ru/learn/common_questions/what_are_browser_developer_tools/index.html +++ b/files/ru/learn/common_questions/what_are_browser_developer_tools/index.html @@ -1,6 +1,6 @@ --- title: Обзор инструментов разработки в браузерах -slug: Learn/Discover_browser_developer_tools +slug: Learn/Common_questions/What_are_browser_developer_tools tags: - Beginner - Browser @@ -13,6 +13,7 @@ tags: - Новичку - Обучение translation_of: Learn/Common_questions/What_are_browser_developer_tools +original_slug: Learn/Discover_browser_developer_tools ---
      {{IncludeSubnav("/ru-RU/Learn")}}
      diff --git a/files/ru/learn/common_questions/what_are_hyperlinks/index.html b/files/ru/learn/common_questions/what_are_hyperlinks/index.html index 63a22eb949..48cca09fde 100644 --- a/files/ru/learn/common_questions/what_are_hyperlinks/index.html +++ b/files/ru/learn/common_questions/what_are_hyperlinks/index.html @@ -1,11 +1,12 @@ --- title: Разбираемся с веб ссылками -slug: Learn/Understanding_links_on_the_web +slug: Learn/Common_questions/What_are_hyperlinks tags: - Навигация - инфраструктура - начальный уровень translation_of: Learn/Common_questions/What_are_hyperlinks +original_slug: Learn/Understanding_links_on_the_web ---

      В данной статье мы узнаем, что такое ссылки и почему они важны.

      diff --git a/files/ru/learn/common_questions/what_is_a_domain_name/index.html b/files/ru/learn/common_questions/what_is_a_domain_name/index.html index fb561cf8ea..d5418ac073 100644 --- a/files/ru/learn/common_questions/what_is_a_domain_name/index.html +++ b/files/ru/learn/common_questions/what_is_a_domain_name/index.html @@ -1,6 +1,6 @@ --- title: Что такое доменные имена -slug: Learn/Understanding_domain_names +slug: Learn/Common_questions/What_is_a_domain_name tags: - DNS - вводная @@ -8,6 +8,7 @@ tags: - доменное имя - начальный уровень translation_of: Learn/Common_questions/What_is_a_domain_name +original_slug: Learn/Understanding_domain_names ---

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

      diff --git a/files/ru/learn/common_questions/what_is_a_url/index.html b/files/ru/learn/common_questions/what_is_a_url/index.html index 41fe5182c7..7cf4fe04d7 100644 --- a/files/ru/learn/common_questions/what_is_a_url/index.html +++ b/files/ru/learn/common_questions/what_is_a_url/index.html @@ -1,6 +1,6 @@ --- title: Что такое URL-адрес? -slug: Learn/Understanding_URLs +slug: Learn/Common_questions/What_is_a_URL tags: - URL - Адрес @@ -10,6 +10,7 @@ tags: - домен - протокол translation_of: Learn/Common_questions/What_is_a_URL +original_slug: Learn/Understanding_URLs ---

      Данная статья описывает Единый локатор ресурсов или Uniform Resource Locators (URLs), объясняет, что это такое, и опиcывает его структуру. 

      diff --git a/files/ru/learn/common_questions/what_is_a_web_server/index.html b/files/ru/learn/common_questions/what_is_a_web_server/index.html index efdc287ba9..3962ab1224 100644 --- a/files/ru/learn/common_questions/what_is_a_web_server/index.html +++ b/files/ru/learn/common_questions/what_is_a_web_server/index.html @@ -1,12 +1,13 @@ --- title: Что такое веб-сервер -slug: Learn/Что_такое_веб_сервер +slug: Learn/Common_questions/What_is_a_web_server tags: - Веб-сервер - Динамический сайт - Новичок - Статический сайт translation_of: Learn/Common_questions/What_is_a_web_server +original_slug: Learn/Что_такое_веб_сервер ---

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

      diff --git a/files/ru/learn/css/building_blocks/cascade_tasks/index.html b/files/ru/learn/css/building_blocks/cascade_tasks/index.html index b6524f9ed3..d4f7440cb8 100644 --- a/files/ru/learn/css/building_blocks/cascade_tasks/index.html +++ b/files/ru/learn/css/building_blocks/cascade_tasks/index.html @@ -1,10 +1,11 @@ --- title: 'Проверьте ваши навыки: Каскад' -slug: Learn/CSS/Building_blocks/Каскад_задачи +slug: Learn/CSS/Building_blocks/Cascade_tasks tags: - CSS - Начинающий translation_of: Learn/CSS/Building_blocks/Cascade_tasks +original_slug: Learn/CSS/Building_blocks/Каскад_задачи ---
      {{LearnSidebar}}
      diff --git a/files/ru/learn/css/building_blocks/fundamental_css_comprehension/index.html b/files/ru/learn/css/building_blocks/fundamental_css_comprehension/index.html index 9009c684d8..36f4767e10 100644 --- a/files/ru/learn/css/building_blocks/fundamental_css_comprehension/index.html +++ b/files/ru/learn/css/building_blocks/fundamental_css_comprehension/index.html @@ -1,7 +1,8 @@ --- title: Понимание основ CSS -slug: Learn/CSS/Introduction_to_CSS/Ponimanie_osnov_CSS +slug: Learn/CSS/Building_blocks/Fundamental_CSS_comprehension translation_of: Learn/CSS/Building_blocks/Fundamental_CSS_comprehension +original_slug: Learn/CSS/Introduction_to_CSS/Ponimanie_osnov_CSS ---
      {{LearnSidebar}}
      diff --git a/files/ru/learn/css/building_blocks/selectors/attribute_selectors/index.html b/files/ru/learn/css/building_blocks/selectors/attribute_selectors/index.html index 9a6a2c4c07..3ac93f2012 100644 --- a/files/ru/learn/css/building_blocks/selectors/attribute_selectors/index.html +++ b/files/ru/learn/css/building_blocks/selectors/attribute_selectors/index.html @@ -1,6 +1,6 @@ --- title: Селекторы атрибута -slug: Learn/CSS/Building_blocks/Селекторы/Attribute_selectors +slug: Learn/CSS/Building_blocks/Selectors/Attribute_selectors tags: - CSS - Атрибут @@ -8,6 +8,7 @@ tags: - Обучение - Селекторы translation_of: Learn/CSS/Building_blocks/Selectors/Attribute_selectors +original_slug: Learn/CSS/Building_blocks/Селекторы/Attribute_selectors ---

      {{LearnSidebar}}{{PreviousMenuNext("Learn/CSS/Building_blocks/Selectors/Type_Class_and_ID_Selectors", "Learn/CSS/Building_blocks/Selectors/Pseudo-classes_and_pseudo-elements", "Learn/CSS/Building_blocks")}}

      diff --git a/files/ru/learn/css/building_blocks/selectors/combinators/index.html b/files/ru/learn/css/building_blocks/selectors/combinators/index.html index 7a076e05a8..89cab04833 100644 --- a/files/ru/learn/css/building_blocks/selectors/combinators/index.html +++ b/files/ru/learn/css/building_blocks/selectors/combinators/index.html @@ -1,11 +1,12 @@ --- title: Комбинаторы -slug: Learn/CSS/Building_blocks/Селекторы/Combinators +slug: Learn/CSS/Building_blocks/Selectors/Combinators tags: - CSS - Селекторы - комбинаторы translation_of: Learn/CSS/Building_blocks/Selectors/Combinators +original_slug: Learn/CSS/Building_blocks/Селекторы/Combinators ---

      {{LearnSidebar}}{{PreviousMenuNext("Learn/CSS/Building_blocks/Selectors/Pseudo-classes_and_pseudo-elements", "Learn/CSS/Building_blocks/The_box_model", "Learn/CSS/Building_blocks")}}

      diff --git a/files/ru/learn/css/building_blocks/selectors/index.html b/files/ru/learn/css/building_blocks/selectors/index.html index 3819af4207..b52ba93b52 100644 --- a/files/ru/learn/css/building_blocks/selectors/index.html +++ b/files/ru/learn/css/building_blocks/selectors/index.html @@ -1,6 +1,6 @@ --- title: Селекторы CSS -slug: Learn/CSS/Building_blocks/Селекторы +slug: Learn/CSS/Building_blocks/Selectors tags: - Attribute - Beginner @@ -14,6 +14,7 @@ tags: - псевдокласс - селектор translation_of: Learn/CSS/Building_blocks/Selectors +original_slug: Learn/CSS/Building_blocks/Селекторы ---
      {{LearnSidebar}}{{PreviousMenuNext("Learn/CSS/Building_blocks/Cascade_and_inheritance", "Learn/CSS/Building_blocks/Selectors/Type_Class_and_ID_Selectors", "Learn/CSS/Building_blocks")}}
      diff --git a/files/ru/learn/css/building_blocks/selectors/pseudo-classes_and_pseudo-elements/index.html b/files/ru/learn/css/building_blocks/selectors/pseudo-classes_and_pseudo-elements/index.html index 4fe67b8adb..8720c0a277 100644 --- a/files/ru/learn/css/building_blocks/selectors/pseudo-classes_and_pseudo-elements/index.html +++ b/files/ru/learn/css/building_blocks/selectors/pseudo-classes_and_pseudo-elements/index.html @@ -1,6 +1,6 @@ --- -title: 'Псевдоклассы, псевдоэлементы' -slug: Learn/CSS/Building_blocks/Селекторы/Pseudo-classes_and_pseudo-elements +title: Псевдоклассы, псевдоэлементы +slug: Learn/CSS/Building_blocks/Selectors/Pseudo-classes_and_pseudo-elements tags: - CSS - Начинающий @@ -10,6 +10,7 @@ tags: - Селекторы - псевдокласс translation_of: Learn/CSS/Building_blocks/Selectors/Pseudo-classes_and_pseudo-elements +original_slug: Learn/CSS/Building_blocks/Селекторы/Pseudo-classes_and_pseudo-elements ---

      {{LearnSidebar}}{{PreviousMenuNext("Learn/CSS/Building_blocks/Selectors/Attribute_selectors", "Learn/CSS/Building_blocks/Selectors/Combinators", "Learn/CSS/Building_blocks")}}

      diff --git a/files/ru/learn/css/building_blocks/selectors/selectors_tasks/index.html b/files/ru/learn/css/building_blocks/selectors/selectors_tasks/index.html index b8f36063c2..4375def5db 100644 --- a/files/ru/learn/css/building_blocks/selectors/selectors_tasks/index.html +++ b/files/ru/learn/css/building_blocks/selectors/selectors_tasks/index.html @@ -1,10 +1,11 @@ --- title: 'Проверьте ваши навыки: Селекторы' -slug: Learn/CSS/Building_blocks/Селекторы/Селекторы_Задачи +slug: Learn/CSS/Building_blocks/Selectors/Selectors_Tasks tags: - CSS - Начинающий translation_of: Learn/CSS/Building_blocks/Selectors/Selectors_Tasks +original_slug: Learn/CSS/Building_blocks/Селекторы/Селекторы_Задачи ---
      {{LearnSidebar}}
      diff --git a/files/ru/learn/css/building_blocks/selectors/type_class_and_id_selectors/index.html b/files/ru/learn/css/building_blocks/selectors/type_class_and_id_selectors/index.html index 875899ab41..2d54a6bde3 100644 --- a/files/ru/learn/css/building_blocks/selectors/type_class_and_id_selectors/index.html +++ b/files/ru/learn/css/building_blocks/selectors/type_class_and_id_selectors/index.html @@ -1,6 +1,6 @@ --- -title: 'Селекторы типа, класса и ID' -slug: Learn/CSS/Building_blocks/Селекторы/Type_Class_and_ID_Selectors +title: Селекторы типа, класса и ID +slug: Learn/CSS/Building_blocks/Selectors/Type_Class_and_ID_Selectors tags: - CSS - id @@ -9,6 +9,7 @@ tags: - Обучение - Селекторы translation_of: Learn/CSS/Building_blocks/Selectors/Type_Class_and_ID_Selectors +original_slug: Learn/CSS/Building_blocks/Селекторы/Type_Class_and_ID_Selectors ---

      {{LearnSidebar}}{{PreviousMenuNext("Learn/CSS/Building_blocks/Selectors", "Learn/CSS/Building_blocks/Selectors/Attribute_selectors", "Learn/CSS/Building_blocks")}}

      diff --git a/files/ru/learn/css/css_layout/multicol_skills/index.html b/files/ru/learn/css/css_layout/multicol_skills/index.html index c549f1210b..147a0c024b 100644 --- a/files/ru/learn/css/css_layout/multicol_skills/index.html +++ b/files/ru/learn/css/css_layout/multicol_skills/index.html @@ -1,7 +1,8 @@ --- title: 'Проверь свои навыки: Multicol' -slug: Learn/CSS/CSS_layout/Навыки_Multicol +slug: Learn/CSS/CSS_layout/Multicol_skills translation_of: Learn/CSS/CSS_layout/Multicol_skills +original_slug: Learn/CSS/CSS_layout/Навыки_Multicol ---
      {{LearnSidebar}}
      diff --git a/files/ru/learn/css/css_layout/multiple-column_layout/index.html b/files/ru/learn/css/css_layout/multiple-column_layout/index.html index 9ba48bbbef..7aa24804af 100644 --- a/files/ru/learn/css/css_layout/multiple-column_layout/index.html +++ b/files/ru/learn/css/css_layout/multiple-column_layout/index.html @@ -1,7 +1,8 @@ --- title: Макет с несколькими столбцами -slug: Learn/CSS/CSS_layout/Макет_с_несколькими_столбцами +slug: Learn/CSS/CSS_layout/Multiple-column_Layout translation_of: Learn/CSS/CSS_layout/Multiple-column_Layout +original_slug: Learn/CSS/CSS_layout/Макет_с_несколькими_столбцами ---
      {{LearnSidebar}}
      diff --git a/files/ru/learn/css/css_layout/normal_flow/index.html b/files/ru/learn/css/css_layout/normal_flow/index.html index d936c240c5..707909d096 100644 --- a/files/ru/learn/css/css_layout/normal_flow/index.html +++ b/files/ru/learn/css/css_layout/normal_flow/index.html @@ -1,10 +1,11 @@ --- title: Базовый поток -slug: Learn/CSS/CSS_layout/Нормальный_поток +slug: Learn/CSS/CSS_layout/Normal_Flow tags: - float - grid translation_of: Learn/CSS/CSS_layout/Normal_Flow +original_slug: Learn/CSS/CSS_layout/Нормальный_поток ---
      {{LearnSidebar}}
      diff --git a/files/ru/learn/css/css_layout/position_skills/index.html b/files/ru/learn/css/css_layout/position_skills/index.html index f63a3a3a94..b6723cda0d 100644 --- a/files/ru/learn/css/css_layout/position_skills/index.html +++ b/files/ru/learn/css/css_layout/position_skills/index.html @@ -1,7 +1,8 @@ --- title: 'Проверьте свои навыки: позиционирование' -slug: Learn/CSS/CSS_layout/Навыки_позиционирования +slug: Learn/CSS/CSS_layout/Position_skills translation_of: Learn/CSS/CSS_layout/Position_skills +original_slug: Learn/CSS/CSS_layout/Навыки_позиционирования ---
      {{LearnSidebar}}
      diff --git a/files/ru/learn/css/css_layout/responsive_design/index.html b/files/ru/learn/css/css_layout/responsive_design/index.html index 978b4e43dc..ee270e0769 100644 --- a/files/ru/learn/css/css_layout/responsive_design/index.html +++ b/files/ru/learn/css/css_layout/responsive_design/index.html @@ -1,7 +1,8 @@ --- title: Отзывчивый дизайн -slug: Learn/CSS/CSS_layout/Отзывчивый_дизайн +slug: Learn/CSS/CSS_layout/Responsive_Design translation_of: Learn/CSS/CSS_layout/Responsive_Design +original_slug: Learn/CSS/CSS_layout/Отзывчивый_дизайн ---
      {{learnsidebar}}{{PreviousMenuNext("Learn/CSS/CSS_layout/Multiple-column_Layout", "Learn/CSS/CSS_layout/Media_queries", "Learn/CSS/CSS_layout")}}
      diff --git a/files/ru/learn/css/first_steps/how_css_is_structured/index.html b/files/ru/learn/css/first_steps/how_css_is_structured/index.html index d2c60edcfb..62bbb0b148 100644 --- a/files/ru/learn/css/first_steps/how_css_is_structured/index.html +++ b/files/ru/learn/css/first_steps/how_css_is_structured/index.html @@ -1,6 +1,6 @@ --- title: Как структурирован CSS -slug: Learn/CSS/First_steps/Как_структурирован_CSS +slug: Learn/CSS/First_steps/How_CSS_is_structured tags: - Beginner - CSS @@ -15,6 +15,7 @@ tags: - селектор - сокращение translation_of: Learn/CSS/First_steps/How_CSS_is_structured +original_slug: Learn/CSS/First_steps/Как_структурирован_CSS ---
      {{LearnSidebar}}
      diff --git a/files/ru/learn/css/first_steps/what_is_css/index.html b/files/ru/learn/css/first_steps/what_is_css/index.html index 6b5bdf8924..6dd204cd6b 100644 --- a/files/ru/learn/css/first_steps/what_is_css/index.html +++ b/files/ru/learn/css/first_steps/what_is_css/index.html @@ -1,6 +1,6 @@ --- title: Что такое CSS? -slug: Learn/CSS/First_steps/Что_такое_CSS +slug: Learn/CSS/First_steps/What_is_CSS tags: - Beginner - CSS @@ -11,6 +11,7 @@ tags: - Синтаксис - Спецификации translation_of: Learn/CSS/First_steps/What_is_CSS +original_slug: Learn/CSS/First_steps/Что_такое_CSS ---
      {{LearnSidebar}}
      diff --git a/files/ru/learn/css/howto/css_faq/index.html b/files/ru/learn/css/howto/css_faq/index.html index cecfb92b82..59f971e488 100644 --- a/files/ru/learn/css/howto/css_faq/index.html +++ b/files/ru/learn/css/howto/css_faq/index.html @@ -1,7 +1,8 @@ --- title: Common CSS questions -slug: Web/CSS/Common_CSS_Questions +slug: Learn/CSS/Howto/CSS_FAQ translation_of: Learn/CSS/Howto/CSS_FAQ +original_slug: Web/CSS/Common_CSS_Questions ---

      Why doesn't my CSS, which is valid, render correctly?

      diff --git a/files/ru/learn/css/howto/index.html b/files/ru/learn/css/howto/index.html index 105c7f0a97..691f887381 100644 --- a/files/ru/learn/css/howto/index.html +++ b/files/ru/learn/css/howto/index.html @@ -1,7 +1,8 @@ --- title: Использование CSS для решения общих проблем -slug: Learn/CSS/Как +slug: Learn/CSS/Howto translation_of: Learn/CSS/Howto +original_slug: Learn/CSS/Как ---

      Следующие ссылки указывают на решения общих повседневных проблем, вам придется решать их с помощью CSS.

      diff --git a/files/ru/learn/css/styling_text/styling_lists/index.html b/files/ru/learn/css/styling_text/styling_lists/index.html index b749acb5cc..401cd7e6e1 100644 --- a/files/ru/learn/css/styling_text/styling_lists/index.html +++ b/files/ru/learn/css/styling_text/styling_lists/index.html @@ -1,7 +1,8 @@ --- title: Стилизация списков -slug: Learn/CSS/Styling_text/Стилизация_списков +slug: Learn/CSS/Styling_text/Styling_lists translation_of: Learn/CSS/Styling_text/Styling_lists +original_slug: Learn/CSS/Styling_text/Стилизация_списков ---
      {{LearnSidebar}}
      diff --git a/files/ru/learn/css/styling_text/typesetting_a_homepage/index.html b/files/ru/learn/css/styling_text/typesetting_a_homepage/index.html index 4f77ee31bc..fd8fa8eb06 100644 --- a/files/ru/learn/css/styling_text/typesetting_a_homepage/index.html +++ b/files/ru/learn/css/styling_text/typesetting_a_homepage/index.html @@ -1,7 +1,8 @@ --- title: 'Задание: Стилизирование школьного сайта' -slug: 'Learn/CSS/Styling_text/Задание:_Стилизирование_школьного_сайта' +slug: Learn/CSS/Styling_text/Typesetting_a_homepage translation_of: Learn/CSS/Styling_text/Typesetting_a_homepage +original_slug: Learn/CSS/Styling_text/Задание:_Стилизирование_школьного_сайта ---
      {{LearnSidebar}}
      diff --git a/files/ru/learn/css/styling_text/web_fonts/index.html b/files/ru/learn/css/styling_text/web_fonts/index.html index f6ca27747f..03318d45b6 100644 --- a/files/ru/learn/css/styling_text/web_fonts/index.html +++ b/files/ru/learn/css/styling_text/web_fonts/index.html @@ -1,7 +1,8 @@ --- title: Веб-шрифты -slug: Learn/CSS/Styling_text/Веб_шрифты +slug: Learn/CSS/Styling_text/Web_fonts translation_of: Learn/CSS/Styling_text/Web_fonts +original_slug: Learn/CSS/Styling_text/Веб_шрифты ---
      {{LearnSidebar}}
      diff --git a/files/ru/learn/forms/basic_native_form_controls/index.html b/files/ru/learn/forms/basic_native_form_controls/index.html index eae3fbb32d..f6465a6aa0 100644 --- a/files/ru/learn/forms/basic_native_form_controls/index.html +++ b/files/ru/learn/forms/basic_native_form_controls/index.html @@ -1,7 +1,8 @@ --- title: Стандартные виджеты форм -slug: Learn/HTML/Forms/Стандартные_виджеты_форм +slug: Learn/Forms/Basic_native_form_controls translation_of: Learn/Forms/Basic_native_form_controls +original_slug: Learn/HTML/Forms/Стандартные_виджеты_форм ---
      {{LearnSidebar}}
      diff --git a/files/ru/learn/forms/form_validation/index.html b/files/ru/learn/forms/form_validation/index.html index f2c5f362ac..4aec16d46d 100644 --- a/files/ru/learn/forms/form_validation/index.html +++ b/files/ru/learn/forms/form_validation/index.html @@ -1,7 +1,8 @@ --- title: Проверка данных формы (проверка валидности формы на стороне клиента) -slug: Learn/HTML/Forms/Валидация_формы +slug: Learn/Forms/Form_validation translation_of: Learn/Forms/Form_validation +original_slug: Learn/HTML/Forms/Валидация_формы ---

      diff --git a/files/ru/learn/forms/how_to_build_custom_form_controls/index.html b/files/ru/learn/forms/how_to_build_custom_form_controls/index.html index 8a4ca2d6b8..344868775b 100644 --- a/files/ru/learn/forms/how_to_build_custom_form_controls/index.html +++ b/files/ru/learn/forms/how_to_build_custom_form_controls/index.html @@ -1,6 +1,6 @@ --- title: Как создавать пользовательские виджеты форм -slug: Learn/HTML/Forms/How_to_build_custom_form_widgets +slug: Learn/Forms/How_to_build_custom_form_controls tags: - HTML - Web @@ -9,6 +9,7 @@ tags: - Руководство - Формы translation_of: Learn/Forms/How_to_build_custom_form_controls +original_slug: Learn/HTML/Forms/How_to_build_custom_form_widgets ---

      {{LearnSidebar}}{{PreviousMenuNext("Learn/HTML/Forms/Form_validation", "Learn/HTML/Forms/Sending_forms_through_JavaScript", "Learn/HTML/Forms")}}
      diff --git a/files/ru/learn/forms/how_to_structure_a_web_form/index.html b/files/ru/learn/forms/how_to_structure_a_web_form/index.html index 741d773dba..97f8a42ad8 100644 --- a/files/ru/learn/forms/how_to_structure_a_web_form/index.html +++ b/files/ru/learn/forms/how_to_structure_a_web_form/index.html @@ -1,6 +1,6 @@ --- title: Как структурировать HTML-формы -slug: Learn/HTML/Forms/How_to_structure_an_HTML_form +slug: Learn/Forms/How_to_structure_a_web_form tags: - HTML-форма - Веб-форма @@ -9,6 +9,7 @@ tags: - Структурирование - Форма translation_of: Learn/Forms/How_to_structure_a_web_form +original_slug: Learn/HTML/Forms/How_to_structure_an_HTML_form ---
      {{LearnSidebar}}
      diff --git a/files/ru/learn/forms/index.html b/files/ru/learn/forms/index.html index 02e36df560..3addc9a37b 100644 --- a/files/ru/learn/forms/index.html +++ b/files/ru/learn/forms/index.html @@ -1,6 +1,6 @@ --- title: Руководство по HTML-формам -slug: Learn/HTML/Forms +slug: Learn/Forms tags: - HTML - Web @@ -8,6 +8,7 @@ tags: - Руководство - Формы translation_of: Learn/Forms +original_slug: Learn/HTML/Forms ---

      {{LearnSidebar}}

      diff --git a/files/ru/learn/forms/sending_and_retrieving_form_data/index.html b/files/ru/learn/forms/sending_and_retrieving_form_data/index.html index 9e7900f783..3aebc66024 100644 --- a/files/ru/learn/forms/sending_and_retrieving_form_data/index.html +++ b/files/ru/learn/forms/sending_and_retrieving_form_data/index.html @@ -1,7 +1,8 @@ --- title: Отправка данных формы -slug: Learn/HTML/Forms/Отправка_и_Получение_данных_формы +slug: Learn/Forms/Sending_and_retrieving_form_data translation_of: Learn/Forms/Sending_and_retrieving_form_data +original_slug: Learn/HTML/Forms/Отправка_и_Получение_данных_формы ---
      {{LearnSidebar}}{{PreviousMenuNext("Learn/HTML/Forms/The_native_form_widgets", "Learn/HTML/Forms/Form_validation", "Learn/HTML/Forms")}}
      diff --git a/files/ru/learn/forms/sending_forms_through_javascript/index.html b/files/ru/learn/forms/sending_forms_through_javascript/index.html index d98ccea1ac..b686d909df 100644 --- a/files/ru/learn/forms/sending_forms_through_javascript/index.html +++ b/files/ru/learn/forms/sending_forms_through_javascript/index.html @@ -1,7 +1,8 @@ --- title: Отправка форм при помощи JavaScript -slug: Learn/HTML/Forms/Sending_forms_through_JavaScript +slug: Learn/Forms/Sending_forms_through_JavaScript translation_of: Learn/Forms/Sending_forms_through_JavaScript +original_slug: Learn/HTML/Forms/Sending_forms_through_JavaScript ---
      {{LearnSidebar}}
      diff --git a/files/ru/learn/forms/styling_web_forms/index.html b/files/ru/learn/forms/styling_web_forms/index.html index f8cc1644dc..f818654906 100644 --- a/files/ru/learn/forms/styling_web_forms/index.html +++ b/files/ru/learn/forms/styling_web_forms/index.html @@ -1,7 +1,8 @@ --- title: Стили HTML форм -slug: Learn/HTML/Forms/Styling_HTML_forms +slug: Learn/Forms/Styling_web_forms translation_of: Learn/Forms/Styling_web_forms +original_slug: Learn/HTML/Forms/Styling_HTML_forms ---

      {{LearnSidebar}}{{PreviousMenuNext("Learn/HTML/Forms/HTML_forms_in_legacy_browsers", "Learn/HTML/Forms/Advanced_styling_for_HTML_forms", "Learn/HTML/Forms")}}

      diff --git a/files/ru/learn/forms/your_first_form/index.html b/files/ru/learn/forms/your_first_form/index.html index b68d433739..4cb3f856d0 100644 --- a/files/ru/learn/forms/your_first_form/index.html +++ b/files/ru/learn/forms/your_first_form/index.html @@ -1,11 +1,12 @@ --- title: Ваша первая HTML форма -slug: Learn/HTML/Forms/Ваша_первая_HTML_форма +slug: Learn/Forms/Your_first_form tags: - HTML-форма - Веб-форма - Форма translation_of: Learn/Forms/Your_first_form +original_slug: Learn/HTML/Forms/Ваша_первая_HTML_форма ---
      {{LearnSidebar}}{{NextMenu("Learn/HTML/Forms/How_to_structure_an_HTML_form", "Learn/HTML/Forms")}}
      diff --git a/files/ru/learn/front-end_web_developer/index.html b/files/ru/learn/front-end_web_developer/index.html index c219d6a069..7c0e93322d 100644 --- a/files/ru/learn/front-end_web_developer/index.html +++ b/files/ru/learn/front-end_web_developer/index.html @@ -1,11 +1,12 @@ --- title: Фронтенд разработчик -slug: Learn/Фронтенд_разработчик +slug: Learn/Front-end_web_developer tags: - Начинающий - Стандарты веб-разработки - Фронт-енд translation_of: Learn/Front-end_web_developer +original_slug: Learn/Фронтенд_разработчик ---

      {{learnsidebar}}

      diff --git a/files/ru/learn/getting_started_with_the_web/installing_basic_software/index.html b/files/ru/learn/getting_started_with_the_web/installing_basic_software/index.html index 40b4254712..2829c00c84 100644 --- a/files/ru/learn/getting_started_with_the_web/installing_basic_software/index.html +++ b/files/ru/learn/getting_started_with_the_web/installing_basic_software/index.html @@ -1,6 +1,6 @@ --- title: Установка базового программного обеспечения -slug: Learn/Getting_started_with_the_web/Установка_базового_программного_обеспечения +slug: Learn/Getting_started_with_the_web/Installing_basic_software tags: - WebMechanics - Браузер @@ -11,6 +11,7 @@ tags: - Текстовый редактор - Установка translation_of: Learn/Getting_started_with_the_web/Installing_basic_software +original_slug: Learn/Getting_started_with_the_web/Установка_базового_программного_обеспечения ---

      {{LearnSidebar}}
      diff --git a/files/ru/learn/getting_started_with_the_web/the_web_and_web_standards/index.html b/files/ru/learn/getting_started_with_the_web/the_web_and_web_standards/index.html index 08fad617b5..8791fab186 100644 --- a/files/ru/learn/getting_started_with_the_web/the_web_and_web_standards/index.html +++ b/files/ru/learn/getting_started_with_the_web/the_web_and_web_standards/index.html @@ -1,10 +1,11 @@ --- title: Всемирная сеть (веб) и веб-стандарты -slug: Learn/Getting_started_with_the_web/Веб_и_веб_стандарты +slug: Learn/Getting_started_with_the_web/The_web_and_web_standards tags: - Веб-стандарты - Изучение translation_of: Learn/Getting_started_with_the_web/The_web_and_web_standards +original_slug: Learn/Getting_started_with_the_web/Веб_и_веб_стандарты ---

      {{learnsidebar}}

      diff --git a/files/ru/learn/html/howto/author_fast-loading_html_pages/index.html b/files/ru/learn/html/howto/author_fast-loading_html_pages/index.html index f34fe049f5..a7b386098d 100644 --- a/files/ru/learn/html/howto/author_fast-loading_html_pages/index.html +++ b/files/ru/learn/html/howto/author_fast-loading_html_pages/index.html @@ -1,7 +1,8 @@ --- title: Tips for authoring fast-loading HTML pages -slug: Web/Guide/HTML/Tips_for_authoring_fast-loading_HTML_pages +slug: Learn/HTML/Howto/Author_fast-loading_HTML_pages translation_of: Learn/HTML/Howto/Author_fast-loading_HTML_pages +original_slug: Web/Guide/HTML/Tips_for_authoring_fast-loading_HTML_pages ---

      Эти советы основаны на общих знаниях и экспериментах.

      diff --git a/files/ru/learn/html/howto/index.html b/files/ru/learn/html/howto/index.html index 1a780e676b..06759fe76d 100644 --- a/files/ru/learn/html/howto/index.html +++ b/files/ru/learn/html/howto/index.html @@ -1,12 +1,13 @@ --- title: Использование HTML для решения общих задач -slug: Learn/HTML/Рецепты +slug: Learn/HTML/Howto tags: - CodingScripting - HTML - На русском - Программирование translation_of: Learn/HTML/Howto +original_slug: Learn/HTML/Рецепты ---

      Следующие ссылки указывают на решения общих повседневных проблем, которые вам нужно решить с помощью HTML.

      diff --git a/files/ru/learn/html/howto/use_data_attributes/index.html b/files/ru/learn/html/howto/use_data_attributes/index.html index cef001e25a..9820e4e0f9 100644 --- a/files/ru/learn/html/howto/use_data_attributes/index.html +++ b/files/ru/learn/html/howto/use_data_attributes/index.html @@ -1,10 +1,11 @@ --- title: Использование data-* атрибутов -slug: Web/Guide/HTML/Using_data_attributes +slug: Learn/HTML/Howto/Use_data_attributes tags: - Guide - HTML translation_of: Learn/HTML/Howto/Use_data_attributes +original_slug: Web/Guide/HTML/Using_data_attributes ---

      HTML5 спроектирован с возможностью расширения данных ассоциированных с каким-либо элементом, но в то же время не обязательно имеющих определённое значение. data-* атрибуты позволяют хранить дополнительную информацию в стандартных элементах HTML, без хаков вроде нестандартных атрибутов, лишних DOM-свойств или {{domxref("Node.setUserData()")}}.

      diff --git a/files/ru/learn/html/introduction_to_html/advanced_text_formatting/index.html b/files/ru/learn/html/introduction_to_html/advanced_text_formatting/index.html index fdebae6e91..2e34f4a80b 100644 --- a/files/ru/learn/html/introduction_to_html/advanced_text_formatting/index.html +++ b/files/ru/learn/html/introduction_to_html/advanced_text_formatting/index.html @@ -1,6 +1,6 @@ --- title: Углубленное форматирование текста -slug: Learn/HTML/Введение_в_HTML/Advanced_text_formatting +slug: Learn/HTML/Introduction_to_HTML/Advanced_text_formatting tags: - Beginner - Guide @@ -8,6 +8,7 @@ tags: - Начинающий - Руководство translation_of: Learn/HTML/Introduction_to_HTML/Advanced_text_formatting +original_slug: Learn/HTML/Введение_в_HTML/Advanced_text_formatting ---
      {{LearnSidebar}}
      diff --git a/files/ru/learn/html/introduction_to_html/creating_hyperlinks/index.html b/files/ru/learn/html/introduction_to_html/creating_hyperlinks/index.html index fcee7272e4..a6cd7e7730 100644 --- a/files/ru/learn/html/introduction_to_html/creating_hyperlinks/index.html +++ b/files/ru/learn/html/introduction_to_html/creating_hyperlinks/index.html @@ -1,6 +1,6 @@ --- title: Создание гиперссылок -slug: Learn/HTML/Введение_в_HTML/Создание_гиперссылок +slug: Learn/HTML/Introduction_to_HTML/Creating_hyperlinks tags: - Абсолютные - Гиперссылки @@ -13,6 +13,7 @@ tags: - Ссылки - Язык гипертекстовой разметки translation_of: Learn/HTML/Introduction_to_HTML/Creating_hyperlinks +original_slug: Learn/HTML/Введение_в_HTML/Создание_гиперссылок ---
      {{LearnSidebar}}
      diff --git a/files/ru/learn/html/introduction_to_html/debugging_html/index.html b/files/ru/learn/html/introduction_to_html/debugging_html/index.html index 1f3e03e508..a48d53d1c2 100644 --- a/files/ru/learn/html/introduction_to_html/debugging_html/index.html +++ b/files/ru/learn/html/introduction_to_html/debugging_html/index.html @@ -1,6 +1,6 @@ --- title: Отладка HTML -slug: Learn/HTML/Введение_в_HTML/Debugging_HTML +slug: Learn/HTML/Introduction_to_HTML/Debugging_HTML tags: - Debugging - Guide @@ -8,6 +8,7 @@ tags: - Валидация - Отладка translation_of: Learn/HTML/Introduction_to_HTML/Debugging_HTML +original_slug: Learn/HTML/Введение_в_HTML/Debugging_HTML ---
      {{LearnSidebar}}
      diff --git a/files/ru/learn/html/introduction_to_html/document_and_website_structure/index.html b/files/ru/learn/html/introduction_to_html/document_and_website_structure/index.html index 13f4f458d1..081d12edf3 100644 --- a/files/ru/learn/html/introduction_to_html/document_and_website_structure/index.html +++ b/files/ru/learn/html/introduction_to_html/document_and_website_structure/index.html @@ -1,6 +1,6 @@ --- title: Структура документа и веб-сайта -slug: Learn/HTML/Введение_в_HTML/Структура_документа_и_веб-сайта +slug: Learn/HTML/Introduction_to_HTML/Document_and_website_structure tags: - Guide - HTML @@ -10,6 +10,7 @@ tags: - С чего начать - Структура сайта translation_of: Learn/HTML/Introduction_to_HTML/Document_and_website_structure +original_slug: Learn/HTML/Введение_в_HTML/Структура_документа_и_веб-сайта ---
      {{LearnSidebar}}
      diff --git a/files/ru/learn/html/introduction_to_html/getting_started/index.html b/files/ru/learn/html/introduction_to_html/getting_started/index.html index 48904b9e17..f27e4c5398 100644 --- a/files/ru/learn/html/introduction_to_html/getting_started/index.html +++ b/files/ru/learn/html/introduction_to_html/getting_started/index.html @@ -1,6 +1,6 @@ --- title: Начало работы с HTML -slug: Learn/HTML/Введение_в_HTML/Начало_работы +slug: Learn/HTML/Introduction_to_HTML/Getting_started tags: - Guide - HTML @@ -13,6 +13,7 @@ tags: - Урок - элементы translation_of: Learn/HTML/Introduction_to_HTML/Getting_started +original_slug: Learn/HTML/Введение_в_HTML/Начало_работы ---
      {{LearnSidebar}}
      diff --git a/files/ru/learn/html/introduction_to_html/html_text_fundamentals/index.html b/files/ru/learn/html/introduction_to_html/html_text_fundamentals/index.html index 711c0bfdf3..8ca79e314e 100644 --- a/files/ru/learn/html/introduction_to_html/html_text_fundamentals/index.html +++ b/files/ru/learn/html/introduction_to_html/html_text_fundamentals/index.html @@ -1,6 +1,6 @@ --- title: Основы редактирования текста в HTML -slug: Learn/HTML/Введение_в_HTML/HTML_text_fundamentals +slug: Learn/HTML/Introduction_to_HTML/HTML_text_fundamentals tags: - Guide - HTML @@ -13,6 +13,7 @@ tags: - Семантика - Текст translation_of: Learn/HTML/Introduction_to_HTML/HTML_text_fundamentals +original_slug: Learn/HTML/Введение_в_HTML/HTML_text_fundamentals ---
       {{LearnSidebar}}
      diff --git a/files/ru/learn/html/introduction_to_html/index.html b/files/ru/learn/html/introduction_to_html/index.html index 1ecf1eb84a..a90af38b71 100644 --- a/files/ru/learn/html/introduction_to_html/index.html +++ b/files/ru/learn/html/introduction_to_html/index.html @@ -1,6 +1,6 @@ --- title: Введение в HTML -slug: Learn/HTML/Введение_в_HTML +slug: Learn/HTML/Introduction_to_HTML tags: - HTML - Введение @@ -14,6 +14,7 @@ tags: - Структура - Текст translation_of: Learn/HTML/Introduction_to_HTML +original_slug: Learn/HTML/Введение_в_HTML ---
      {{LearnSidebar}}
      diff --git a/files/ru/learn/html/introduction_to_html/marking_up_a_letter/index.html b/files/ru/learn/html/introduction_to_html/marking_up_a_letter/index.html index c9ede9d116..cb0956fa0b 100644 --- a/files/ru/learn/html/introduction_to_html/marking_up_a_letter/index.html +++ b/files/ru/learn/html/introduction_to_html/marking_up_a_letter/index.html @@ -1,9 +1,10 @@ --- title: Разметка письма -slug: Learn/HTML/Введение_в_HTML/Marking_up_a_letter +slug: Learn/HTML/Introduction_to_HTML/Marking_up_a_letter tags: - HTML translation_of: Learn/HTML/Introduction_to_HTML/Marking_up_a_letter +original_slug: Learn/HTML/Введение_в_HTML/Marking_up_a_letter ---
      {{LearnSidebar}}
      diff --git a/files/ru/learn/html/introduction_to_html/structuring_a_page_of_content/index.html b/files/ru/learn/html/introduction_to_html/structuring_a_page_of_content/index.html index b5bb7fa235..0dd009c3bc 100644 --- a/files/ru/learn/html/introduction_to_html/structuring_a_page_of_content/index.html +++ b/files/ru/learn/html/introduction_to_html/structuring_a_page_of_content/index.html @@ -1,9 +1,10 @@ --- title: Структурируем страницу -slug: Learn/HTML/Введение_в_HTML/Structuring_a_page_of_content +slug: Learn/HTML/Introduction_to_HTML/Structuring_a_page_of_content tags: - HTML translation_of: Learn/HTML/Introduction_to_HTML/Structuring_a_page_of_content +original_slug: Learn/HTML/Введение_в_HTML/Structuring_a_page_of_content ---
      {{LearnSidebar}}
      diff --git a/files/ru/learn/html/introduction_to_html/the_head_metadata_in_html/index.html b/files/ru/learn/html/introduction_to_html/the_head_metadata_in_html/index.html index dfb2840569..9563f7edbe 100644 --- a/files/ru/learn/html/introduction_to_html/the_head_metadata_in_html/index.html +++ b/files/ru/learn/html/introduction_to_html/the_head_metadata_in_html/index.html @@ -1,6 +1,6 @@ --- title: Что внутри "head"? Метаданные в HTML -slug: Learn/HTML/Введение_в_HTML/The_head_metadata_in_HTML +slug: Learn/HTML/Introduction_to_HTML/The_head_metadata_in_HTML tags: - HTML - Meta @@ -15,6 +15,7 @@ tags: - метаданные - язык translation_of: Learn/HTML/Introduction_to_HTML/The_head_metadata_in_HTML +original_slug: Learn/HTML/Введение_в_HTML/The_head_metadata_in_HTML ---
      {{LearnSidebar}}
      diff --git a/files/ru/learn/html/multimedia_and_embedding/adding_vector_graphics_to_the_web/index.html b/files/ru/learn/html/multimedia_and_embedding/adding_vector_graphics_to_the_web/index.html index a3a445dfc7..9e6eb3707e 100644 --- a/files/ru/learn/html/multimedia_and_embedding/adding_vector_graphics_to_the_web/index.html +++ b/files/ru/learn/html/multimedia_and_embedding/adding_vector_graphics_to_the_web/index.html @@ -1,7 +1,8 @@ --- title: Добавление векторной графики в веб-документ -slug: Learn/HTML/Multimedia_and_embedding/Добавление_r_graphics_to_the_Web +slug: Learn/HTML/Multimedia_and_embedding/Adding_vector_graphics_to_the_Web translation_of: Learn/HTML/Multimedia_and_embedding/Adding_vector_graphics_to_the_Web +original_slug: Learn/HTML/Multimedia_and_embedding/Добавление_r_graphics_to_the_Web ---
      {{LearnSidebar}}
      diff --git a/files/ru/learn/html/multimedia_and_embedding/images_in_html/index.html b/files/ru/learn/html/multimedia_and_embedding/images_in_html/index.html index d96558e3da..3bf7b57393 100644 --- a/files/ru/learn/html/multimedia_and_embedding/images_in_html/index.html +++ b/files/ru/learn/html/multimedia_and_embedding/images_in_html/index.html @@ -1,7 +1,8 @@ --- title: Изображения в HTML -slug: Learn/HTML/Multimedia_and_embedding/Изображения_в_HTML +slug: Learn/HTML/Multimedia_and_embedding/Images_in_HTML translation_of: Learn/HTML/Multimedia_and_embedding/Images_in_HTML +original_slug: Learn/HTML/Multimedia_and_embedding/Изображения_в_HTML ---
      {{LearnSidebar}}
      diff --git a/files/ru/learn/html/multimedia_and_embedding/images_in_html/test_your_skills_colon__html_images/index.html b/files/ru/learn/html/multimedia_and_embedding/images_in_html/test_your_skills_colon__html_images/index.html index e00777dabe..00ef01d21d 100644 --- a/files/ru/learn/html/multimedia_and_embedding/images_in_html/test_your_skills_colon__html_images/index.html +++ b/files/ru/learn/html/multimedia_and_embedding/images_in_html/test_your_skills_colon__html_images/index.html @@ -1,9 +1,11 @@ --- title: 'Проверьте свои знания: Изображения в HTML' slug: >- - Learn/HTML/Multimedia_and_embedding/Изображения_в_HTML/Проверьте_свои_знания:_Изображения_в_HTML + Learn/HTML/Multimedia_and_embedding/Images_in_HTML/Test_your_skills:_HTML_images translation_of: >- Learn/HTML/Multimedia_and_embedding/Images_in_HTML/Test_your_skills:_HTML_images +original_slug: >- + Learn/HTML/Multimedia_and_embedding/Изображения_в_HTML/Проверьте_свои_знания:_Изображения_в_HTML ---
      {{learnsidebar}}
      diff --git a/files/ru/learn/html/multimedia_and_embedding/mozilla_splash_page/index.html b/files/ru/learn/html/multimedia_and_embedding/mozilla_splash_page/index.html index 4171780730..d3233346a2 100644 --- a/files/ru/learn/html/multimedia_and_embedding/mozilla_splash_page/index.html +++ b/files/ru/learn/html/multimedia_and_embedding/mozilla_splash_page/index.html @@ -1,7 +1,8 @@ --- title: Заставка Mozilla -slug: Learn/HTML/Multimedia_and_embedding/заставка_Mozilla +slug: Learn/HTML/Multimedia_and_embedding/Mozilla_splash_page translation_of: Learn/HTML/Multimedia_and_embedding/Mozilla_splash_page +original_slug: Learn/HTML/Multimedia_and_embedding/заставка_Mozilla ---
      {{LearnSidebar}}
      diff --git a/files/ru/learn/javascript/asynchronous/timeouts_and_intervals/index.html b/files/ru/learn/javascript/asynchronous/timeouts_and_intervals/index.html index e3aa0c72b8..1b7207c7c2 100644 --- a/files/ru/learn/javascript/asynchronous/timeouts_and_intervals/index.html +++ b/files/ru/learn/javascript/asynchronous/timeouts_and_intervals/index.html @@ -1,7 +1,8 @@ --- title: 'Объединенный асинхронный JavaScript: Таймайты и интервалы' -slug: Learn/JavaScript/Asynchronous/Таймауты_и_интервалы +slug: Learn/JavaScript/Asynchronous/Timeouts_and_intervals translation_of: Learn/JavaScript/Asynchronous/Timeouts_and_intervals +original_slug: Learn/JavaScript/Asynchronous/Таймауты_и_интервалы ---
      {{LearnSidebar}}
      diff --git a/files/ru/learn/javascript/building_blocks/events/index.html b/files/ru/learn/javascript/building_blocks/events/index.html index db13cec676..c2ed6bbe07 100644 --- a/files/ru/learn/javascript/building_blocks/events/index.html +++ b/files/ru/learn/javascript/building_blocks/events/index.html @@ -1,12 +1,13 @@ --- title: Введение в события -slug: Learn/JavaScript/Building_blocks/События +slug: Learn/JavaScript/Building_blocks/Events tags: - Изучение - Обработчик событий - Руководство - события translation_of: Learn/JavaScript/Building_blocks/Events +original_slug: Learn/JavaScript/Building_blocks/События ---
      {{LearnSidebar}}
      diff --git a/files/ru/learn/javascript/first_steps/a_first_splash/index.html b/files/ru/learn/javascript/first_steps/a_first_splash/index.html index b2a811b992..7d04a8b3af 100644 --- a/files/ru/learn/javascript/first_steps/a_first_splash/index.html +++ b/files/ru/learn/javascript/first_steps/a_first_splash/index.html @@ -1,7 +1,8 @@ --- title: Первое погружение в JavaScript -slug: Learn/JavaScript/Первые_шаги/A_first_splash +slug: Learn/JavaScript/First_steps/A_first_splash translation_of: Learn/JavaScript/First_steps/A_first_splash +original_slug: Learn/JavaScript/Первые_шаги/A_first_splash ---
      {{LearnSidebar}}
      diff --git a/files/ru/learn/javascript/first_steps/arrays/index.html b/files/ru/learn/javascript/first_steps/arrays/index.html index 7f38ce4a50..1c575c759b 100644 --- a/files/ru/learn/javascript/first_steps/arrays/index.html +++ b/files/ru/learn/javascript/first_steps/arrays/index.html @@ -1,6 +1,6 @@ --- title: Массивы -slug: Learn/JavaScript/Первые_шаги/Arrays +slug: Learn/JavaScript/First_steps/Arrays tags: - JavaScript - Pop @@ -11,6 +11,7 @@ tags: - Массивы - Статья translation_of: Learn/JavaScript/First_steps/Arrays +original_slug: Learn/JavaScript/Первые_шаги/Arrays ---
      {{LearnSidebar}}
      diff --git a/files/ru/learn/javascript/first_steps/index.html b/files/ru/learn/javascript/first_steps/index.html index bd435e920f..c1f7991f3d 100644 --- a/files/ru/learn/javascript/first_steps/index.html +++ b/files/ru/learn/javascript/first_steps/index.html @@ -1,11 +1,12 @@ --- title: Первые шаги в JavaScript -slug: Learn/JavaScript/Первые_шаги +slug: Learn/JavaScript/First_steps tags: - JavaScript - Массивы - Новичкам translation_of: Learn/JavaScript/First_steps +original_slug: Learn/JavaScript/Первые_шаги ---
      {{LearnSidebar}}
      diff --git a/files/ru/learn/javascript/first_steps/math/index.html b/files/ru/learn/javascript/first_steps/math/index.html index 29ff9258bf..22a6945573 100644 --- a/files/ru/learn/javascript/first_steps/math/index.html +++ b/files/ru/learn/javascript/first_steps/math/index.html @@ -1,6 +1,6 @@ --- title: Базовая математика в JavaScript — числа и операторы -slug: Learn/JavaScript/Первые_шаги/Math +slug: Learn/JavaScript/First_steps/Math tags: - JavaScript - Гайд @@ -12,6 +12,7 @@ tags: - Статья - кодинг translation_of: Learn/JavaScript/First_steps/Math +original_slug: Learn/JavaScript/Первые_шаги/Math ---
      {{LearnSidebar}}
      diff --git a/files/ru/learn/javascript/first_steps/silly_story_generator/index.html b/files/ru/learn/javascript/first_steps/silly_story_generator/index.html index 139e478847..62576df3be 100644 --- a/files/ru/learn/javascript/first_steps/silly_story_generator/index.html +++ b/files/ru/learn/javascript/first_steps/silly_story_generator/index.html @@ -1,6 +1,6 @@ --- title: Генератор глупых историй -slug: Learn/JavaScript/Первые_шаги/Создатель_глуых_историй +slug: Learn/JavaScript/First_steps/Silly_story_generator tags: - JavaScript - Задание @@ -14,6 +14,7 @@ tags: - Проверка - Числа translation_of: Learn/JavaScript/First_steps/Silly_story_generator +original_slug: Learn/JavaScript/Первые_шаги/Создатель_глуых_историй ---
      {{LearnSidebar}}
      diff --git a/files/ru/learn/javascript/first_steps/strings/index.html b/files/ru/learn/javascript/first_steps/strings/index.html index 583e29182e..9c769ff801 100644 --- a/files/ru/learn/javascript/first_steps/strings/index.html +++ b/files/ru/learn/javascript/first_steps/strings/index.html @@ -1,7 +1,8 @@ --- title: Работа с текстом — строки в JavaScript -slug: Learn/JavaScript/Первые_шаги/Строки +slug: Learn/JavaScript/First_steps/Strings translation_of: Learn/JavaScript/First_steps/Strings +original_slug: Learn/JavaScript/Первые_шаги/Строки ---
      {{LearnSidebar}}
      diff --git a/files/ru/learn/javascript/first_steps/useful_string_methods/index.html b/files/ru/learn/javascript/first_steps/useful_string_methods/index.html index 1318ee39ac..552423bc8b 100644 --- a/files/ru/learn/javascript/first_steps/useful_string_methods/index.html +++ b/files/ru/learn/javascript/first_steps/useful_string_methods/index.html @@ -1,6 +1,6 @@ --- title: Полезные строковые методы -slug: Learn/JavaScript/Первые_шаги/Useful_string_methods +slug: Learn/JavaScript/First_steps/Useful_string_methods tags: - Beginner - CodingScripting @@ -14,6 +14,7 @@ tags: - Обучение - Регистр translation_of: Learn/JavaScript/First_steps/Useful_string_methods +original_slug: Learn/JavaScript/Первые_шаги/Useful_string_methods ---

      {{LearnSidebar}}

      diff --git a/files/ru/learn/javascript/first_steps/variables/index.html b/files/ru/learn/javascript/first_steps/variables/index.html index e1195effd5..2e041f5e9f 100644 --- a/files/ru/learn/javascript/first_steps/variables/index.html +++ b/files/ru/learn/javascript/first_steps/variables/index.html @@ -1,7 +1,8 @@ --- title: Переменные - место хранения необходимой информации -slug: Learn/JavaScript/Первые_шаги/Variables +slug: Learn/JavaScript/First_steps/Variables translation_of: Learn/JavaScript/First_steps/Variables +original_slug: Learn/JavaScript/Первые_шаги/Variables ---
      {{LearnSidebar}}
      diff --git a/files/ru/learn/javascript/first_steps/what_is_javascript/index.html b/files/ru/learn/javascript/first_steps/what_is_javascript/index.html index f34dac6902..68c9173c1f 100644 --- a/files/ru/learn/javascript/first_steps/what_is_javascript/index.html +++ b/files/ru/learn/javascript/first_steps/what_is_javascript/index.html @@ -1,7 +1,8 @@ --- title: Что такое JavaScript? -slug: Learn/JavaScript/Первые_шаги/What_is_JavaScript +slug: Learn/JavaScript/First_steps/What_is_JavaScript translation_of: Learn/JavaScript/First_steps/What_is_JavaScript +original_slug: Learn/JavaScript/Первые_шаги/What_is_JavaScript ---
      {{LearnSidebar}}
      diff --git a/files/ru/learn/javascript/first_steps/what_went_wrong/index.html b/files/ru/learn/javascript/first_steps/what_went_wrong/index.html index dbb0a4577a..5e84e07e34 100644 --- a/files/ru/learn/javascript/first_steps/what_went_wrong/index.html +++ b/files/ru/learn/javascript/first_steps/what_went_wrong/index.html @@ -1,7 +1,8 @@ --- title: Что пошло не так? Устранение ошибок JavaScript -slug: Learn/JavaScript/Первые_шаги/Что_пошло_не_так +slug: Learn/JavaScript/First_steps/What_went_wrong translation_of: Learn/JavaScript/First_steps/What_went_wrong +original_slug: Learn/JavaScript/Первые_шаги/Что_пошло_не_так ---
      {{LearnSidebar}}
      diff --git a/files/ru/learn/javascript/objects/adding_bouncing_balls_features/index.html b/files/ru/learn/javascript/objects/adding_bouncing_balls_features/index.html index fe97392371..cb606d3818 100644 --- a/files/ru/learn/javascript/objects/adding_bouncing_balls_features/index.html +++ b/files/ru/learn/javascript/objects/adding_bouncing_balls_features/index.html @@ -1,7 +1,8 @@ --- title: Добавление функций в нашу демонстрацию отбойных шаров -slug: Learn/JavaScript/Объекты/Adding_bouncing_balls_features +slug: Learn/JavaScript/Objects/Adding_bouncing_balls_features translation_of: Learn/JavaScript/Objects/Adding_bouncing_balls_features +original_slug: Learn/JavaScript/Объекты/Adding_bouncing_balls_features ---
      {{LearnSidebar}}
      diff --git a/files/ru/learn/javascript/objects/basics/index.html b/files/ru/learn/javascript/objects/basics/index.html index a4e7cc0071..41873c646b 100644 --- a/files/ru/learn/javascript/objects/basics/index.html +++ b/files/ru/learn/javascript/objects/basics/index.html @@ -1,10 +1,11 @@ --- title: Основы объектов в JavaScript -slug: Learn/JavaScript/Объекты/Основы +slug: Learn/JavaScript/Objects/Basics tags: - JavaScript - ООП translation_of: Learn/JavaScript/Objects/Basics +original_slug: Learn/JavaScript/Объекты/Основы ---
      {{LearnSidebar}}
      diff --git a/files/ru/learn/javascript/objects/index.html b/files/ru/learn/javascript/objects/index.html index 9acc354feb..08d6d2dc43 100644 --- a/files/ru/learn/javascript/objects/index.html +++ b/files/ru/learn/javascript/objects/index.html @@ -1,12 +1,13 @@ --- title: Введение в объекты JavaScript -slug: Learn/JavaScript/Объекты +slug: Learn/JavaScript/Objects tags: - JavaScript - Начинающим - Объекты - Руководства translation_of: Learn/JavaScript/Objects +original_slug: Learn/JavaScript/Объекты ---
      {{LearnSidebar}}
      diff --git a/files/ru/learn/javascript/objects/inheritance/index.html b/files/ru/learn/javascript/objects/inheritance/index.html index c1565cd72f..fe473b0ef8 100644 --- a/files/ru/learn/javascript/objects/inheritance/index.html +++ b/files/ru/learn/javascript/objects/inheritance/index.html @@ -1,11 +1,12 @@ --- title: Наследование в JavaScript -slug: Learn/JavaScript/Объекты/Inheritance +slug: Learn/JavaScript/Objects/Inheritance tags: - JavaScript - Наследование - ООП translation_of: Learn/JavaScript/Objects/Inheritance +original_slug: Learn/JavaScript/Объекты/Inheritance ---

      diff --git a/files/ru/learn/javascript/objects/json/index.html b/files/ru/learn/javascript/objects/json/index.html index 371f254ec6..89de0661a8 100644 --- a/files/ru/learn/javascript/objects/json/index.html +++ b/files/ru/learn/javascript/objects/json/index.html @@ -1,11 +1,12 @@ --- title: Работа с JSON -slug: Learn/JavaScript/Объекты/JSON +slug: Learn/JavaScript/Objects/JSON tags: - Beginner - JSON - JavaScript translation_of: Learn/JavaScript/Objects/JSON +original_slug: Learn/JavaScript/Объекты/JSON ---

      {{LearnSidebar}}
      diff --git a/files/ru/learn/javascript/objects/object-oriented_js/index.html b/files/ru/learn/javascript/objects/object-oriented_js/index.html index 0299268a90..7df73c5045 100644 --- a/files/ru/learn/javascript/objects/object-oriented_js/index.html +++ b/files/ru/learn/javascript/objects/object-oriented_js/index.html @@ -1,6 +1,6 @@ --- title: Объектно-ориентированный JavaScript для начинающих -slug: Learn/JavaScript/Объекты/Object-oriented_JS +slug: Learn/JavaScript/Objects/Object-oriented_JS tags: - Constructor - Create @@ -11,6 +11,7 @@ tags: - ООП - экземпляр translation_of: Learn/JavaScript/Objects/Object-oriented_JS +original_slug: Learn/JavaScript/Объекты/Object-oriented_JS ---
      {{LearnSidebar}}
      diff --git a/files/ru/learn/javascript/objects/object_building_practice/index.html b/files/ru/learn/javascript/objects/object_building_practice/index.html index b06b769ca4..778e83578e 100644 --- a/files/ru/learn/javascript/objects/object_building_practice/index.html +++ b/files/ru/learn/javascript/objects/object_building_practice/index.html @@ -1,10 +1,11 @@ --- title: Практика построения объектов -slug: Learn/JavaScript/Объекты/Object_building_practice +slug: Learn/JavaScript/Objects/Object_building_practice tags: - Guide - JavaScript translation_of: Learn/JavaScript/Objects/Object_building_practice +original_slug: Learn/JavaScript/Объекты/Object_building_practice ---
      {{LearnSidebar}}
      diff --git a/files/ru/learn/javascript/objects/object_prototypes/index.html b/files/ru/learn/javascript/objects/object_prototypes/index.html index 0a76580d9c..a8487bf0e6 100644 --- a/files/ru/learn/javascript/objects/object_prototypes/index.html +++ b/files/ru/learn/javascript/objects/object_prototypes/index.html @@ -1,6 +1,6 @@ --- title: Прототипы объектов -slug: Learn/JavaScript/Объекты/Object_prototypes +slug: Learn/JavaScript/Objects/Object_prototypes tags: - JavaScript - create() @@ -12,6 +12,7 @@ tags: - Статья - прототип translation_of: Learn/JavaScript/Objects/Object_prototypes +original_slug: Learn/JavaScript/Объекты/Object_prototypes ---
      {{LearnSidebar}}
      diff --git a/files/ru/learn/server-side/django/authentication/index.html b/files/ru/learn/server-side/django/authentication/index.html index 807db42a90..30e5df336b 100644 --- a/files/ru/learn/server-side/django/authentication/index.html +++ b/files/ru/learn/server-side/django/authentication/index.html @@ -1,6 +1,6 @@ --- title: 'Руководство Django Часть 8: Аутентификация и авторизация пользователя' -slug: Learn/Server-side/Django/Аутентификация +slug: Learn/Server-side/Django/Authentication tags: - Python - Аутентификация @@ -16,6 +16,7 @@ tags: - на стороне сервера - сессии translation_of: Learn/Server-side/Django/Authentication +original_slug: Learn/Server-side/Django/Аутентификация ---
      {{LearnSidebar}}
      diff --git a/files/ru/learn/server-side/django/deployment/index.html b/files/ru/learn/server-side/django/deployment/index.html index 640527b63d..fc62ed6ac8 100644 --- a/files/ru/learn/server-side/django/deployment/index.html +++ b/files/ru/learn/server-side/django/deployment/index.html @@ -1,12 +1,13 @@ --- title: 'Django Руководство часть 11: Разворачивание сайта на сервере' -slug: Learn/Server-side/Django/Разворачивание +slug: Learn/Server-side/Django/Deployment tags: - Веб-сервер - Для начинающих - Разворачивание на сервере - Развёртывание Django translation_of: Learn/Server-side/Django/Deployment +original_slug: Learn/Server-side/Django/Разворачивание ---
      {{LearnSidebar}}
      diff --git a/files/ru/learn/server-side/django/introduction/index.html b/files/ru/learn/server-side/django/introduction/index.html index 4bff707908..f2f6b957f7 100644 --- a/files/ru/learn/server-side/django/introduction/index.html +++ b/files/ru/learn/server-side/django/introduction/index.html @@ -1,6 +1,6 @@ --- title: Django введение -slug: Learn/Server-side/Django/Введение +slug: Learn/Server-side/Django/Introduction tags: - Python - django @@ -9,6 +9,7 @@ tags: - Начинающим - Серверное программирование translation_of: Learn/Server-side/Django/Introduction +original_slug: Learn/Server-side/Django/Введение ---
      {{LearnSidebar}}
      diff --git a/files/ru/learn/server-side/django/sessions/index.html b/files/ru/learn/server-side/django/sessions/index.html index 5f7d492c72..8792653f11 100644 --- a/files/ru/learn/server-side/django/sessions/index.html +++ b/files/ru/learn/server-side/django/sessions/index.html @@ -1,6 +1,6 @@ --- title: 'Руководство часть 7: Сессии' -slug: Learn/Server-side/Django/Сессии +slug: Learn/Server-side/Django/Sessions tags: - django - Джанго @@ -13,6 +13,7 @@ tags: - применение сессий - сессии translation_of: Learn/Server-side/Django/Sessions +original_slug: Learn/Server-side/Django/Сессии ---
      {{LearnSidebar}}
      diff --git a/files/ru/learn/server-side/express_nodejs/tutorial_local_library_website/index.html b/files/ru/learn/server-side/express_nodejs/tutorial_local_library_website/index.html index c7e821248e..66954ba287 100644 --- a/files/ru/learn/server-side/express_nodejs/tutorial_local_library_website/index.html +++ b/files/ru/learn/server-side/express_nodejs/tutorial_local_library_website/index.html @@ -1,6 +1,6 @@ --- title: 'Учебник Express: сайт Local Library' -slug: Learn/Server-side/Express_Nodejs/Учебник_сайт_local_library +slug: Learn/Server-side/Express_Nodejs/Tutorial_local_library_website tags: - Express - Node @@ -10,6 +10,7 @@ tags: - Серверная часть - Учебник translation_of: Learn/Server-side/Express_Nodejs/Tutorial_local_library_website +original_slug: Learn/Server-side/Express_Nodejs/Учебник_сайт_local_library ---
      {{LearnSidebar}}
      diff --git a/files/ru/learn/server-side/first_steps/website_security/index.html b/files/ru/learn/server-side/first_steps/website_security/index.html index 6caa9b2aa2..95fa361668 100644 --- a/files/ru/learn/server-side/first_steps/website_security/index.html +++ b/files/ru/learn/server-side/first_steps/website_security/index.html @@ -1,7 +1,8 @@ --- title: Веб-безопасность -slug: Learn/Server-side/First_steps/Веб_Безопасность +slug: Learn/Server-side/First_steps/Website_security translation_of: Learn/Server-side/First_steps/Website_security +original_slug: Learn/Server-side/First_steps/Веб_Безопасность ---
      {{LearnSidebar}}
      diff --git a/files/ru/learn/tools_and_testing/client-side_javascript_frameworks/index.html b/files/ru/learn/tools_and_testing/client-side_javascript_frameworks/index.html index 08fb977bb5..f85eb11569 100644 --- a/files/ru/learn/tools_and_testing/client-side_javascript_frameworks/index.html +++ b/files/ru/learn/tools_and_testing/client-side_javascript_frameworks/index.html @@ -1,7 +1,8 @@ --- title: Понимание JavaScript-фреймворков для фронтенда -slug: Learn/Tools_and_testing/Фронтенд_JavaScript_фреймворки +slug: Learn/Tools_and_testing/Client-side_JavaScript_frameworks translation_of: Learn/Tools_and_testing/Client-side_JavaScript_frameworks +original_slug: Learn/Tools_and_testing/Фронтенд_JavaScript_фреймворки ---
      {{LearnSidebar}}
      JavaScript-фреймворки являются неотъемлемой частью современной веб-разработки,
      diff --git a/files/ru/learn/tools_and_testing/client-side_javascript_frameworks/react_getting_started/index.html b/files/ru/learn/tools_and_testing/client-side_javascript_frameworks/react_getting_started/index.html index 9a898b282a..710fe7511f 100644 --- a/files/ru/learn/tools_and_testing/client-side_javascript_frameworks/react_getting_started/index.html +++ b/files/ru/learn/tools_and_testing/client-side_javascript_frameworks/react_getting_started/index.html @@ -1,8 +1,10 @@ --- title: Начало работы с React -slug: Learn/Tools_and_testing/Фронтенд_JavaScript_фреймворки/React_getting_started +slug: >- + Learn/Tools_and_testing/Client-side_JavaScript_frameworks/React_getting_started translation_of: >- Learn/Tools_and_testing/Client-side_JavaScript_frameworks/React_getting_started +original_slug: Learn/Tools_and_testing/Фронтенд_JavaScript_фреймворки/React_getting_started ---
      {{LearnSidebar}}
      diff --git a/files/ru/learn/tools_and_testing/github/index.html b/files/ru/learn/tools_and_testing/github/index.html index f78ac2a27c..addc19507d 100644 --- a/files/ru/learn/tools_and_testing/github/index.html +++ b/files/ru/learn/tools_and_testing/github/index.html @@ -1,11 +1,12 @@ --- title: Гит и ГитХаб -slug: Learn/Tools_and_testing/ГитХаб +slug: Learn/Tools_and_testing/GitHub tags: - Веб - Начинающий - гит translation_of: Learn/Tools_and_testing/GitHub +original_slug: Learn/Tools_and_testing/ГитХаб ---
      {{LearnSidebar}}
      diff --git a/files/ru/mdn/at_ten/index.html b/files/ru/mdn/at_ten/index.html index bbbdcccd01..afa83467a3 100644 --- a/files/ru/mdn/at_ten/index.html +++ b/files/ru/mdn/at_ten/index.html @@ -1,9 +1,10 @@ --- title: 10-летие MDN -slug: MDN_at_ten +slug: MDN/At_ten tags: - MDN translation_of: MDN_at_ten +original_slug: MDN_at_ten ---
      Празднуем 10-летие документирования Web.
      diff --git a/files/ru/mdn/contribute/howto/add_or_update_browser_compatibility_data/index.html b/files/ru/mdn/contribute/howto/add_or_update_browser_compatibility_data/index.html index 5b31ce215e..6604a710ab 100644 --- a/files/ru/mdn/contribute/howto/add_or_update_browser_compatibility_data/index.html +++ b/files/ru/mdn/contribute/howto/add_or_update_browser_compatibility_data/index.html @@ -1,10 +1,11 @@ --- title: Как добавить или обновить данные о браузерной совместимости -slug: MDN/Contribute/Howto/Добавить_или_обновить_данные_о_браузерной_совместимости +slug: MDN/Contribute/Howto/Add_or_update_browser_compatibility_data tags: - MDN Meta - Руководство translation_of: MDN/Contribute/Howto/Add_or_update_browser_compatibility_data +original_slug: MDN/Contribute/Howto/Добавить_или_обновить_данные_о_браузерной_совместимости ---
      {{MDNSidebar}}{{IncludeSubnav("/ru/docs/MDN")}}
      diff --git a/files/ru/mdn/contribute/howto/create_an_interactive_exercise_to_help_learning_the_web/index.html b/files/ru/mdn/contribute/howto/create_an_interactive_exercise_to_help_learning_the_web/index.html index 5488b77d10..2ae7444791 100644 --- a/files/ru/mdn/contribute/howto/create_an_interactive_exercise_to_help_learning_the_web/index.html +++ b/files/ru/mdn/contribute/howto/create_an_interactive_exercise_to_help_learning_the_web/index.html @@ -1,8 +1,9 @@ --- title: Как создать интерактивное обучающее упражнение -slug: >- - MDN/Contribute/Howto/Создай_интерактивное_упражнение_для_помощи_в_изучении_веба +slug: MDN/Contribute/Howto/Create_an_interactive_exercise_to_help_learning_the_web translation_of: MDN/Contribute/Howto/Create_an_interactive_exercise_to_help_learning_the_web +original_slug: >- + MDN/Contribute/Howto/Создай_интерактивное_упражнение_для_помощи_в_изучении_веба ---
      {{MDNSidebar}}
      diff --git a/files/ru/mdn/contribute/howto/create_and_edit_pages/index.html b/files/ru/mdn/contribute/howto/create_and_edit_pages/index.html index 9b6d34eff9..eb06e1c506 100644 --- a/files/ru/mdn/contribute/howto/create_and_edit_pages/index.html +++ b/files/ru/mdn/contribute/howto/create_and_edit_pages/index.html @@ -1,6 +1,6 @@ --- title: Как создавать и редактировать страницы -slug: MDN/Contribute/Creating_and_editing_pages +slug: MDN/Contribute/Howto/Create_and_edit_pages tags: - MDN основы - Гайд @@ -8,6 +8,7 @@ tags: - Новичок - Стартовая translation_of: MDN/Contribute/Howto/Create_and_edit_pages +original_slug: MDN/Contribute/Creating_and_editing_pages ---
      {{MDNSidebar}}
      diff --git a/files/ru/mdn/contribute/processes/index.html b/files/ru/mdn/contribute/processes/index.html index 4c6bdda462..d0d186e509 100644 --- a/files/ru/mdn/contribute/processes/index.html +++ b/files/ru/mdn/contribute/processes/index.html @@ -1,11 +1,12 @@ --- title: Процессы документирования -slug: MDN/Contribute/Процессы +slug: MDN/Contribute/Processes tags: - Landing - MDN Meta - Процессы translation_of: MDN/Contribute/Processes +original_slug: MDN/Contribute/Процессы ---
      {{MDNSidebar}}
      {{IncludeSubnav("/en-US/docs/MDN")}}
      diff --git a/files/ru/mdn/tools/kumascript/troubleshooting/index.html b/files/ru/mdn/tools/kumascript/troubleshooting/index.html index dfbe9868eb..0e0b91324b 100644 --- a/files/ru/mdn/tools/kumascript/troubleshooting/index.html +++ b/files/ru/mdn/tools/kumascript/troubleshooting/index.html @@ -1,6 +1,6 @@ --- title: Решение проблем с ошибками в KumaScript -slug: MDN/Kuma/Troubleshooting_KumaScript_errors +slug: MDN/Tools/KumaScript/Troubleshooting tags: - Errors - KumaScript @@ -10,6 +10,7 @@ tags: - Руководство - инструменты translation_of: MDN/Tools/KumaScript/Troubleshooting +original_slug: MDN/Kuma/Troubleshooting_KumaScript_errors ---
      {{MDNSidebar}}
      diff --git a/files/ru/mdn/tools/search/index.html b/files/ru/mdn/tools/search/index.html index 08ba78607f..4f175b6ce8 100644 --- a/files/ru/mdn/tools/search/index.html +++ b/files/ru/mdn/tools/search/index.html @@ -1,10 +1,11 @@ --- title: Использование продвинутого поиска -slug: MDN/User_guide/Advanced_search +slug: MDN/Tools/Search tags: - Guide - MDN translation_of: MDN/Tools/Search +original_slug: MDN/User_guide/Advanced_search ---
      {{MDNSidebar}}

      В качестве дополнительной возможности внесения для вкладчиков в MDN у нас есть продвинутый механизм поиска, который позволяется вам искать по исходному коду страницы — то есть, по сырому HTML сайта, с макросами вместо их вывода — что позволяет искать использования определённых макросов, атрибутов HTML и тому подобное.

      На текущий момент для использования продвинутого механизма поиска нет пользовательского интерфейса, но вы можете получить к нему доступ посредством специально сформированных URL. Вы можете получить вывод либо на стандартную страницу с результатами поиска по MDN, либо в формате JSON (последнее означает, что вы можете использовать этот механизм, например, из кода на KumaScript). Эта статья описывает, как всем этим пользоваться.

      diff --git a/files/ru/mdn/tools/unsupported_get_api/index.html b/files/ru/mdn/tools/unsupported_get_api/index.html index d42d9c436e..7aab6b7657 100644 --- a/files/ru/mdn/tools/unsupported_get_api/index.html +++ b/files/ru/mdn/tools/unsupported_get_api/index.html @@ -1,6 +1,6 @@ --- title: URL-суффиксы -slug: MDN/Tools/URL-suffix +slug: MDN/Tools/Unsupported_GET_API tags: - HTTP - Kuma @@ -9,6 +9,7 @@ tags: - Параметры URL - инструменты translation_of: MDN/Tools/Document_parameters +original_slug: MDN/Tools/URL-suffix ---
      {{MDNSidebar}}
      diff --git a/files/ru/mdn/yari/index.html b/files/ru/mdn/yari/index.html index ee8105bf08..b230e4a533 100644 --- a/files/ru/mdn/yari/index.html +++ b/files/ru/mdn/yari/index.html @@ -1,10 +1,11 @@ --- title: 'Kuma: вики-платформа MDN' -slug: MDN/Kuma +slug: MDN/Yari tags: - Kuma - Главная translation_of: MDN/Kuma +original_slug: MDN/Kuma ---
      {{MDNSidebar}}
      diff --git a/files/ru/mozilla/add-ons/webextensions/internationalization/index.html b/files/ru/mozilla/add-ons/webextensions/internationalization/index.html index 36a37820d9..86ca109207 100644 --- a/files/ru/mozilla/add-ons/webextensions/internationalization/index.html +++ b/files/ru/mozilla/add-ons/webextensions/internationalization/index.html @@ -1,7 +1,8 @@ --- title: Интернационализация -slug: Mozilla/Add-ons/WebExtensions/Интернационализация +slug: Mozilla/Add-ons/WebExtensions/Internationalization translation_of: Mozilla/Add-ons/WebExtensions/Internationalization +original_slug: Mozilla/Add-ons/WebExtensions/Интернационализация ---
      {{AddonSidebar}}
      diff --git a/files/ru/mozilla/add-ons/webextensions/modify_a_web_page/index.html b/files/ru/mozilla/add-ons/webextensions/modify_a_web_page/index.html index 0f58364706..1419267790 100644 --- a/files/ru/mozilla/add-ons/webextensions/modify_a_web_page/index.html +++ b/files/ru/mozilla/add-ons/webextensions/modify_a_web_page/index.html @@ -1,7 +1,8 @@ --- title: Модификация веб страницы -slug: Mozilla/Add-ons/WebExtensions/модификация_веб_страницы +slug: Mozilla/Add-ons/WebExtensions/Modify_a_web_page translation_of: Mozilla/Add-ons/WebExtensions/Modify_a_web_page +original_slug: Mozilla/Add-ons/WebExtensions/модификация_веб_страницы ---

       

      diff --git a/files/ru/mozilla/developer_guide/introduction/index.html b/files/ru/mozilla/developer_guide/introduction/index.html index 206d60c40d..e3bb8c23b4 100644 --- a/files/ru/mozilla/developer_guide/introduction/index.html +++ b/files/ru/mozilla/developer_guide/introduction/index.html @@ -1,8 +1,9 @@ --- title: Введение (альтернативные проекты) -slug: Introduction_(alternate) +slug: Mozilla/Developer_guide/Introduction translation_of: Mozilla/Developer_guide/Introduction translation_of_original: Introduction_(alternate) +original_slug: Introduction_(alternate) ---

      Хотя Firefox в значительной степени написан на C++, есть много способов помочь сообществу, не зная C++.

      Firefox/Thunderbird/ и др.

      diff --git a/files/ru/mozilla/developer_guide/source_code/index.html b/files/ru/mozilla/developer_guide/source_code/index.html index f8ea35c33a..f7231a2093 100644 --- a/files/ru/mozilla/developer_guide/source_code/index.html +++ b/files/ru/mozilla/developer_guide/source_code/index.html @@ -1,9 +1,10 @@ --- title: Работа с исходным кодом Mozilla -slug: Mozilla/Developer_guide/Исходный_код +slug: Mozilla/Developer_guide/Source_Code tags: - Разработка в Mozilla - Средний уровень translation_of: Mozilla/Developer_guide/Source_Code +original_slug: Mozilla/Developer_guide/Исходный_код --- textex diff --git a/files/ru/mozilla/firefox/releases/1.5/using_firefox_1.5_caching/index.html b/files/ru/mozilla/firefox/releases/1.5/using_firefox_1.5_caching/index.html index 2db6fe3556..74ce692f87 100644 --- a/files/ru/mozilla/firefox/releases/1.5/using_firefox_1.5_caching/index.html +++ b/files/ru/mozilla/firefox/releases/1.5/using_firefox_1.5_caching/index.html @@ -1,7 +1,8 @@ --- title: Использование кэширования в Firefox 1.5 -slug: Using_Firefox_1.5_caching +slug: Mozilla/Firefox/Releases/1.5/Using_Firefox_1.5_caching translation_of: Mozilla/Firefox/Releases/1.5/Using_Firefox_1.5_caching +original_slug: Using_Firefox_1.5_caching ---
      {{FirefoxSidebar}}

       

      diff --git a/files/ru/mozilla/firefox/releases/3.5/index.html b/files/ru/mozilla/firefox/releases/3.5/index.html index a3e9f4c276..96baad6004 100644 --- a/files/ru/mozilla/firefox/releases/3.5/index.html +++ b/files/ru/mozilla/firefox/releases/3.5/index.html @@ -1,7 +1,8 @@ --- title: Firefox 3.5 для разработчика -slug: Firefox_3.5_для_разработчика +slug: Mozilla/Firefox/Releases/3.5 translation_of: Mozilla/Firefox/Releases/3.5 +original_slug: Firefox_3.5_для_разработчика ---
      {{FirefoxSidebar}}

      Firefox 3.5 вводит ряд новых возможностей, а также дополнительную и улучшенную поддержку для самых различных веб-стандартов. Данная статья представляет собой исчерпывающий перечень нововведений со ссылками на статьи, освещающие основные усовершенствования.

      Новые возможности для разработчиков

      diff --git a/files/ru/mozilla/firefox/releases/3/index.html b/files/ru/mozilla/firefox/releases/3/index.html index 98537faee9..c72f2672df 100644 --- a/files/ru/mozilla/firefox/releases/3/index.html +++ b/files/ru/mozilla/firefox/releases/3/index.html @@ -1,7 +1,8 @@ --- title: Firefox 3 для разработчиков -slug: Firefox_3_for_developers +slug: Mozilla/Firefox/Releases/3 translation_of: Mozilla/Firefox/Releases/3 +original_slug: Firefox_3_for_developers ---
      {{FirefoxSidebar}}

      Если вы разработчик и хотите познакомится со всеми возможностями Firefox 3 вы пришли по адресу. В этой статье представлен список новых статей, в которых рассказывается о новых возможностях Firefox 3. В статьях не будут представлены сведения о незначительных изменениях, однако они помогут вам познакомится с существенными обновлениями.

      Новые возможности для разработчиков в Firefox 3

      diff --git a/files/ru/orphaned/glossary/polifill/index.html b/files/ru/orphaned/glossary/polifill/index.html index caffde4878..ca0499456e 100644 --- a/files/ru/orphaned/glossary/polifill/index.html +++ b/files/ru/orphaned/glossary/polifill/index.html @@ -1,10 +1,11 @@ --- title: Полифил -slug: Glossary/Polifill +slug: orphaned/Glossary/Polifill tags: - Glossary - Глоссарий - Словарь +original_slug: Glossary/Polifill ---

      Полифил (англ. "polyfill") — это фрагмент кода, предоставляющий функционал необходимой технологии, которая будет нативным образом представлена браузером. Другими словами, код будет работать в точности так, как технология, которую он, собственно, и предназначен представлять. Подделка архитектуры API интерфейса, если вам угодно.

      diff --git a/files/ru/orphaned/learn/how_to_contribute/index.html b/files/ru/orphaned/learn/how_to_contribute/index.html index caed3b7970..16440b4327 100644 --- a/files/ru/orphaned/learn/how_to_contribute/index.html +++ b/files/ru/orphaned/learn/how_to_contribute/index.html @@ -1,6 +1,6 @@ --- title: Как сделать вклад в Обучающую Зону MDN -slug: Learn/Как_сделать_вклад +slug: orphaned/Learn/How_to_contribute tags: - Вклад - Документация @@ -10,6 +10,7 @@ tags: - Правила - Руководство translation_of: Learn/How_to_contribute +original_slug: Learn/Как_сделать_вклад ---
      {{LearnSidebar}}
      diff --git a/files/ru/orphaned/learn/html/forms/html5_updates/index.html b/files/ru/orphaned/learn/html/forms/html5_updates/index.html index ad5a8bc7e6..23d48d6765 100644 --- a/files/ru/orphaned/learn/html/forms/html5_updates/index.html +++ b/files/ru/orphaned/learn/html/forms/html5_updates/index.html @@ -1,6 +1,6 @@ --- title: Формы в HTML -slug: Web/Guide/HTML/Формы_в_HTML +slug: orphaned/Learn/HTML/Forms/HTML5_updates tags: - HTML - HTML5 @@ -12,6 +12,7 @@ tags: - Руководство - Формы translation_of: Learn/HTML/Forms/HTML5_updates +original_slug: Web/Guide/HTML/Формы_в_HTML ---

      Элементы и атрибуты форм в HTML5 предоставляют большие возможности семантической верстки, чем HTML4, а также позволяет отказаться от использования JavaScript и CSS, которое было ранее необходимо для HTML4. Большие возможности в формах HTML5 делают удобным для пользователей отправление информации с различных веб-сайтов. Они также предоставляют эти возможности для тех пользователей, у которых отключена поддержка JavaScript.

      diff --git a/files/ru/orphaned/mdn/about/linking_to_mdn/index.html b/files/ru/orphaned/mdn/about/linking_to_mdn/index.html index 093ce13265..daefa73c53 100644 --- a/files/ru/orphaned/mdn/about/linking_to_mdn/index.html +++ b/files/ru/orphaned/mdn/about/linking_to_mdn/index.html @@ -1,11 +1,12 @@ --- title: Проставление ссылок на MDN -slug: MDN/User_guide/Linking_to_MDN +slug: orphaned/MDN/About/Linking_to_MDN tags: - Documentation - Guide - MDN translation_of: MDN/About/Linking_to_MDN +original_slug: MDN/User_guide/Linking_to_MDN ---
      {{MDNSidebar}}

      Мы регулярно получаем от пользователей вопросы о том, как сослаться на MDN, или даже разрешено ли это делать. Краткий ответ таков: да, вы можете ссылаться на MDN! Читайте дальше, чтобы узнать о руководящих принципах и лучших практиках!

      diff --git a/files/ru/orphaned/mdn/community/conversations/index.html b/files/ru/orphaned/mdn/community/conversations/index.html index 1440b5cdcd..0c82918926 100644 --- a/files/ru/orphaned/mdn/community/conversations/index.html +++ b/files/ru/orphaned/mdn/community/conversations/index.html @@ -1,11 +1,12 @@ --- title: MDN community conversations -slug: MDN/Сообщество/Conversations +slug: orphaned/MDN/Community/Conversations tags: - MDN Meta - Руководство - Сообщество translation_of: MDN/Community/Conversations +original_slug: MDN/Сообщество/Conversations ---
      {{MDNSidebar}}
      diff --git a/files/ru/orphaned/mdn/community/index.html b/files/ru/orphaned/mdn/community/index.html index 5824e576e4..cbbdbc999b 100644 --- a/files/ru/orphaned/mdn/community/index.html +++ b/files/ru/orphaned/mdn/community/index.html @@ -1,11 +1,12 @@ --- title: Присоединяйся к сообществу MDN -slug: MDN/Сообщество +slug: orphaned/MDN/Community tags: - МДН - Руководство - Сообщество translation_of: MDN/Community +original_slug: MDN/Сообщество ---
      {{MDNSidebar}}
      diff --git a/files/ru/orphaned/mdn/community/whats_happening/index.html b/files/ru/orphaned/mdn/community/whats_happening/index.html index fb74f6342c..1230622cdd 100644 --- a/files/ru/orphaned/mdn/community/whats_happening/index.html +++ b/files/ru/orphaned/mdn/community/whats_happening/index.html @@ -1,7 +1,8 @@ --- title: Следите за событиями -slug: MDN/Сообщество/Whats_happening +slug: orphaned/MDN/Community/Whats_happening translation_of: MDN/Community/Whats_happening +original_slug: MDN/Сообщество/Whats_happening ---
      {{MDNSidebar}}
      diff --git a/files/ru/orphaned/mdn/community/working_in_community/index.html b/files/ru/orphaned/mdn/community/working_in_community/index.html index 9f5faaf33d..9fd9e70f83 100644 --- a/files/ru/orphaned/mdn/community/working_in_community/index.html +++ b/files/ru/orphaned/mdn/community/working_in_community/index.html @@ -1,6 +1,6 @@ --- title: Работа в сообществе -slug: MDN/Сообщество/Working_in_community +slug: orphaned/MDN/Community/Working_in_community tags: - Community - Guide @@ -8,6 +8,7 @@ tags: - Руководство - Сообщество translation_of: MDN/Community/Working_in_community +original_slug: MDN/Сообщество/Working_in_community ---
      {{MDNSidebar}}
      diff --git a/files/ru/orphaned/mdn/contribute/howto/create_an_mdn_account/index.html b/files/ru/orphaned/mdn/contribute/howto/create_an_mdn_account/index.html index 99857a600a..c2bbde2e7a 100644 --- a/files/ru/orphaned/mdn/contribute/howto/create_an_mdn_account/index.html +++ b/files/ru/orphaned/mdn/contribute/howto/create_an_mdn_account/index.html @@ -1,11 +1,12 @@ --- title: Как создать MDN аккаунт -slug: MDN/Contribute/Howto/Create_an_MDN_account +slug: orphaned/MDN/Contribute/Howto/Create_an_MDN_account tags: - Документация - Начинающий - Руководство translation_of: MDN/Contribute/Howto/Create_an_MDN_account +original_slug: MDN/Contribute/Howto/Create_an_MDN_account ---
      {{MDNSidebar}}
      diff --git a/files/ru/orphaned/mdn/contribute/howto/do_a_technical_review/index.html b/files/ru/orphaned/mdn/contribute/howto/do_a_technical_review/index.html index ba395e2669..8c5a6e29a5 100644 --- a/files/ru/orphaned/mdn/contribute/howto/do_a_technical_review/index.html +++ b/files/ru/orphaned/mdn/contribute/howto/do_a_technical_review/index.html @@ -1,6 +1,6 @@ --- title: Как сделать технический обзор -slug: MDN/Contribute/Howto/Do_a_technical_review +slug: orphaned/MDN/Contribute/Howto/Do_a_technical_review tags: - Guide - Howto @@ -8,6 +8,7 @@ tags: - Как сделать - Руководство translation_of: MDN/Contribute/Howto/Do_a_technical_review +original_slug: MDN/Contribute/Howto/Do_a_technical_review ---
      {{MDNSidebar}}
      diff --git a/files/ru/orphaned/mdn/contribute/howto/do_an_editorial_review/index.html b/files/ru/orphaned/mdn/contribute/howto/do_an_editorial_review/index.html index eab3b47fde..3556bb253c 100644 --- a/files/ru/orphaned/mdn/contribute/howto/do_an_editorial_review/index.html +++ b/files/ru/orphaned/mdn/contribute/howto/do_an_editorial_review/index.html @@ -1,6 +1,6 @@ --- title: Как сделать редакционный обзор -slug: MDN/Contribute/Howto/Do_an_editorial_review +slug: orphaned/MDN/Contribute/Howto/Do_an_editorial_review tags: - Guide - Howto @@ -8,6 +8,7 @@ tags: - Как сделать - Руководство translation_of: MDN/Contribute/Howto/Do_an_editorial_review +original_slug: MDN/Contribute/Howto/Do_an_editorial_review ---
      {{MDNSidebar}}

      Редакционный обзор заключается в исправлении опечаток и орфографических, грамматических, оборотных или текстовых ошибок в статье. Не все участники обладают лингвистическими навыками, но, благодаря их знаниям, появляются чрезвычайно полезные статьи, которые нуждаются в техническом редактировании и исправлении; это делается в редакционном обзоре.

      diff --git a/files/ru/orphaned/mdn/contribute/howto/set_the_summary_for_a_page/index.html b/files/ru/orphaned/mdn/contribute/howto/set_the_summary_for_a_page/index.html index 26d5101d9d..ab6d1a6292 100644 --- a/files/ru/orphaned/mdn/contribute/howto/set_the_summary_for_a_page/index.html +++ b/files/ru/orphaned/mdn/contribute/howto/set_the_summary_for_a_page/index.html @@ -1,7 +1,8 @@ --- title: Как оптимизировать страницы -slug: MDN/Contribute/Howto/Как_оптимизировать_страницы +slug: orphaned/MDN/Contribute/Howto/Set_the_summary_for_a_page translation_of: MDN/Contribute/Howto/Set_the_summary_for_a_page +original_slug: MDN/Contribute/Howto/Как_оптимизировать_страницы ---
      {{MDNSidebar}}

      Вы можете заняться оптимизацией любой страницы на MDN, для поисковой оптимизации страницы, вы можете выбрать любую страницу: пусть то будет Лендинговая страница или подсказки. Это должен быть текст, который связан по смыслу с контентом страницы. Все слова должны быть уникальными и не должны встречаться в тексте.

      diff --git a/files/ru/orphaned/mdn/contribute/howto/tag_javascript_pages/index.html b/files/ru/orphaned/mdn/contribute/howto/tag_javascript_pages/index.html index 0c0ed4eca9..81daf4193d 100644 --- a/files/ru/orphaned/mdn/contribute/howto/tag_javascript_pages/index.html +++ b/files/ru/orphaned/mdn/contribute/howto/tag_javascript_pages/index.html @@ -1,12 +1,13 @@ --- title: Как пометить страницы JavaScript -slug: MDN/Contribute/Howto/Метки_JavaScript_страниц +slug: orphaned/MDN/Contribute/Howto/Tag_JavaScript_pages tags: - Guide - Howto - JavaScript - MDN Meta translation_of: MDN/Contribute/Howto/Tag_JavaScript_pages +original_slug: MDN/Contribute/Howto/Метки_JavaScript_страниц ---
      {{MDNSidebar}}

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

      diff --git a/files/ru/orphaned/mdn/editor/basics/index.html b/files/ru/orphaned/mdn/editor/basics/index.html index 10b5d91eb9..9bfaeb7307 100644 --- a/files/ru/orphaned/mdn/editor/basics/index.html +++ b/files/ru/orphaned/mdn/editor/basics/index.html @@ -1,7 +1,8 @@ --- title: Редактор UI элементов -slug: MDN/Editor/Basics +slug: orphaned/MDN/Editor/Basics translation_of: MDN/Editor/Basics +original_slug: MDN/Editor/Basics ---
      {{MDNSidebar}}
      diff --git a/files/ru/orphaned/mdn/editor/basics/page_controls/index.html b/files/ru/orphaned/mdn/editor/basics/page_controls/index.html index 3f49c886b4..1ba42276a2 100644 --- a/files/ru/orphaned/mdn/editor/basics/page_controls/index.html +++ b/files/ru/orphaned/mdn/editor/basics/page_controls/index.html @@ -1,11 +1,12 @@ --- title: Элементы управления страницей в редакторе MDN -slug: MDN/Editor/Basics/Page_controls +slug: orphaned/MDN/Editor/Basics/Page_controls tags: - Beginner - Guide - editor translation_of: MDN/Editor/Basics/Page_controls +original_slug: MDN/Editor/Basics/Page_controls ---
      {{MDNSidebar}}
      diff --git a/files/ru/orphaned/mdn/editor/basics/toolbar/index.html b/files/ru/orphaned/mdn/editor/basics/toolbar/index.html index 8a01621158..6dc04bdd35 100644 --- a/files/ru/orphaned/mdn/editor/basics/toolbar/index.html +++ b/files/ru/orphaned/mdn/editor/basics/toolbar/index.html @@ -1,10 +1,11 @@ --- title: Панель инструментов редактора MDN -slug: MDN/Editor/Basics/Toolbar +slug: orphaned/MDN/Editor/Basics/Toolbar tags: - Beginner - editor translation_of: MDN/Editor/Basics/Toolbar +original_slug: MDN/Editor/Basics/Toolbar ---
      {{MDNSidebar}}
      diff --git a/files/ru/orphaned/mdn/editor/images/index.html b/files/ru/orphaned/mdn/editor/images/index.html index f095489297..21bd1eec8b 100644 --- a/files/ru/orphaned/mdn/editor/images/index.html +++ b/files/ru/orphaned/mdn/editor/images/index.html @@ -1,12 +1,13 @@ --- title: Изображения -slug: MDN/Editor/Картинки +slug: orphaned/MDN/Editor/Images tags: - Изображение - Работа с изображениями - Рисунок - Руководство translation_of: MDN/Editor/Images +original_slug: MDN/Editor/Картинки ---
      {{MDNSidebar}}
      diff --git a/files/ru/orphaned/mdn/editor/index.html b/files/ru/orphaned/mdn/editor/index.html index df98522e38..6a775db62e 100644 --- a/files/ru/orphaned/mdn/editor/index.html +++ b/files/ru/orphaned/mdn/editor/index.html @@ -1,11 +1,12 @@ --- title: Руководство по MDN редактору -slug: MDN/Editor +slug: orphaned/MDN/Editor tags: - Landing - MDN - Редактор MDN translation_of: MDN/Editor +original_slug: MDN/Editor ---
      {{MDNSidebar}}
      diff --git a/files/ru/orphaned/mdn/editor/keyboard_shortcuts/index.html b/files/ru/orphaned/mdn/editor/keyboard_shortcuts/index.html index 7a697614df..18456347b5 100644 --- a/files/ru/orphaned/mdn/editor/keyboard_shortcuts/index.html +++ b/files/ru/orphaned/mdn/editor/keyboard_shortcuts/index.html @@ -1,6 +1,6 @@ --- title: Горячие клавиши в редакторе MDN -slug: MDN/Editor/Горячие_клавиши +slug: orphaned/MDN/Editor/Keyboard_shortcuts tags: - MDN - MDN Meta @@ -9,6 +9,7 @@ tags: - Клавиши - Редактор translation_of: MDN/Editor/Keyboard_shortcuts +original_slug: MDN/Editor/Горячие_клавиши ---

      Существует ряд удобных горячих клавиш, позволяющих вам не отрывать руки от клавиатуры во время работы в UI редактора MDN.

      diff --git a/files/ru/orphaned/mdn/editor/links/index.html b/files/ru/orphaned/mdn/editor/links/index.html index 459a965172..7ddf996bb4 100644 --- a/files/ru/orphaned/mdn/editor/links/index.html +++ b/files/ru/orphaned/mdn/editor/links/index.html @@ -1,6 +1,6 @@ --- title: Создание ссылок в статьях MDN -slug: MDN/Editor/Ссылки +slug: orphaned/MDN/Editor/Links tags: - Guide - MDN @@ -9,6 +9,7 @@ tags: - Редактор - Руководство translation_of: MDN/Editor/Links +original_slug: MDN/Editor/Ссылки ---
      {{MDNSidebar}}
      diff --git a/files/ru/orphaned/mdn/editor/redirects/index.html b/files/ru/orphaned/mdn/editor/redirects/index.html index dade13fb99..eec64eb864 100644 --- a/files/ru/orphaned/mdn/editor/redirects/index.html +++ b/files/ru/orphaned/mdn/editor/redirects/index.html @@ -1,12 +1,13 @@ --- title: Перенаправление -slug: MDN/Editor/Перенаправление +slug: orphaned/MDN/Editor/Redirects tags: - Гайд - Переадресация - Перенаправление - Удаление translation_of: MDN/Editor/Redirects +original_slug: MDN/Editor/Перенаправление ---
      {{MDNSidebar}}
      diff --git a/files/ru/orphaned/mdn/editor/source_mode/index.html b/files/ru/orphaned/mdn/editor/source_mode/index.html index af5d7b5535..7923b81be6 100644 --- a/files/ru/orphaned/mdn/editor/source_mode/index.html +++ b/files/ru/orphaned/mdn/editor/source_mode/index.html @@ -1,6 +1,6 @@ --- title: Режим источника -slug: MDN/Editor/Source_mode +slug: orphaned/MDN/Editor/Source_mode tags: - Guide - MDN Meta @@ -9,6 +9,7 @@ tags: - Редактор MDN - Руководство translation_of: MDN/Editor/Source_mode +original_slug: MDN/Editor/Source_mode ---
      {{MDNSidebar}}
      diff --git a/files/ru/orphaned/mdn/editor/syntax_highlighting/index.html b/files/ru/orphaned/mdn/editor/syntax_highlighting/index.html index f959ae7809..1d70a0448e 100644 --- a/files/ru/orphaned/mdn/editor/syntax_highlighting/index.html +++ b/files/ru/orphaned/mdn/editor/syntax_highlighting/index.html @@ -1,6 +1,6 @@ --- title: Синтаксические выделения -slug: MDN/Editor/Синтаксические_выделения +slug: orphaned/MDN/Editor/Syntax_highlighting tags: - Guide - Howto @@ -10,6 +10,7 @@ tags: - Руководство - выделение translation_of: MDN/Editor/Syntax_highlighting +original_slug: MDN/Editor/Синтаксические_выделения ---
      {{MDNSidebar}}
      diff --git a/files/ru/orphaned/mdn/editor/tables/index.html b/files/ru/orphaned/mdn/editor/tables/index.html index 1f6f988d6a..50f6c4b373 100644 --- a/files/ru/orphaned/mdn/editor/tables/index.html +++ b/files/ru/orphaned/mdn/editor/tables/index.html @@ -1,6 +1,6 @@ --- title: Таблицы -slug: MDN/Editor/Tables +slug: orphaned/MDN/Editor/Tables tags: - Guide - MDN @@ -8,6 +8,7 @@ tags: - Редактор - Руководство translation_of: MDN/Editor/Tables +original_slug: MDN/Editor/Tables ---
      {{MDNSidebar}}
      diff --git a/files/ru/orphaned/mdn/structures/live_samples/simple_live_sample_demo/index.html b/files/ru/orphaned/mdn/structures/live_samples/simple_live_sample_demo/index.html index 393a20bc94..c16264ed11 100644 --- a/files/ru/orphaned/mdn/structures/live_samples/simple_live_sample_demo/index.html +++ b/files/ru/orphaned/mdn/structures/live_samples/simple_live_sample_demo/index.html @@ -1,11 +1,12 @@ --- title: A simple demo of a live code sample -slug: MDN/Structures/Live_samples/Simple_live_sample_demo +slug: orphaned/MDN/Structures/Live_samples/Simple_live_sample_demo tags: - MDN Meta - Конструкции - Пример translation_of: MDN/Structures/Live_samples/Simple_live_sample_demo +original_slug: MDN/Structures/Live_samples/Simple_live_sample_demo ---
      {{MDNSidebar}}
      diff --git a/files/ru/orphaned/mdn/tools/feeds/index.html b/files/ru/orphaned/mdn/tools/feeds/index.html index ba43bf1809..e7a69892e2 100644 --- a/files/ru/orphaned/mdn/tools/feeds/index.html +++ b/files/ru/orphaned/mdn/tools/feeds/index.html @@ -1,9 +1,10 @@ --- title: Ленты новостей MDN -slug: MDN/User_guide/Feeds +slug: orphaned/MDN/Tools/Feeds tags: - Kuma translation_of: MDN/Tools/Feeds +original_slug: MDN/User_guide/Feeds ---
      {{MDNSidebar}}

      Вики MDN предлагает ряд лент новостей, которые вы можете использовать для слежения за сайтом. В будущем их, вероятно, будет больше, а некоторые из них до сих пор ещё в разработке, но эта информация всё равно может быть для вас полезна.

      diff --git a/files/ru/orphaned/mdn/tools/page_deletion/index.html b/files/ru/orphaned/mdn/tools/page_deletion/index.html index ffd7d04664..ee44aa31f1 100644 --- a/files/ru/orphaned/mdn/tools/page_deletion/index.html +++ b/files/ru/orphaned/mdn/tools/page_deletion/index.html @@ -1,10 +1,11 @@ --- title: Удаление страниц -slug: MDN/User_guide/Deleting_pages +slug: orphaned/MDN/Tools/Page_deletion tags: - Guide - MDN translation_of: MDN/Tools/Page_deletion +original_slug: MDN/User_guide/Deleting_pages ---
      {{MDNSidebar}}

      Только администраторы MDN имеют право и могут удалять страницы. Эта статья описывает, как отправить запрос на удаление страницы с MDN.

      Чтобы организовать удаление страницы, вы должны сделать следующее:

      diff --git a/files/ru/orphaned/mdn/tools/page_watching/index.html b/files/ru/orphaned/mdn/tools/page_watching/index.html index 04b9dc05ad..3118cf34c3 100644 --- a/files/ru/orphaned/mdn/tools/page_watching/index.html +++ b/files/ru/orphaned/mdn/tools/page_watching/index.html @@ -1,6 +1,6 @@ --- title: Подписка на страницы -slug: MDN/Tools/Page_watching +slug: orphaned/MDN/Tools/Page_watching tags: - MDN Meta - Подписка @@ -8,6 +8,7 @@ tags: - Страница уровня - инструменты translation_of: MDN/Tools/Page_watching +original_slug: MDN/Tools/Page_watching ---
      {{MDNSidebar}}

      Ok

      diff --git a/files/ru/orphaned/mozilla/add-ons/webextensions/debugging/index.html b/files/ru/orphaned/mozilla/add-ons/webextensions/debugging/index.html index 4ceb3eab28..7e520f3a84 100644 --- a/files/ru/orphaned/mozilla/add-ons/webextensions/debugging/index.html +++ b/files/ru/orphaned/mozilla/add-ons/webextensions/debugging/index.html @@ -1,6 +1,6 @@ --- title: Отладка -slug: Mozilla/Add-ons/WebExtensions/Перевод +slug: orphaned/Mozilla/Add-ons/WebExtensions/Debugging tags: - Firefox - Mozilla @@ -8,6 +8,7 @@ tags: - Пособие - Предоставление Веб-страниц translation_of: Mozilla/Add-ons/WebExtensions/Debugging +original_slug: Mozilla/Add-ons/WebExtensions/Перевод ---
      {{AddonSidebar}}
      diff --git a/files/ru/orphaned/toolkit_api/index.html b/files/ru/orphaned/toolkit_api/index.html index 48d33c6e3a..bde21206ac 100644 --- a/files/ru/orphaned/toolkit_api/index.html +++ b/files/ru/orphaned/toolkit_api/index.html @@ -1,8 +1,9 @@ --- title: Toolkit API (Инструментарий АПИ) -slug: Toolkit_API +slug: orphaned/Toolkit_API tags: - Toolkit API +original_slug: Toolkit_API ---

      Mozilla Toolkit это набор программных интерфейсов (APIs) собранных на базе Gecko которые обеспечивают продвинутые службы на базе XUL приложенияй. Эти службы включают:

      • Менеджер профиля
      • Chrome регистрация
      • История просмотра
      • Расширения и Управление темами
      • Служба обновления приложения
      • Безопасный режим
      • diff --git a/files/ru/orphaned/tools/add-ons/dom_inspector/index.html b/files/ru/orphaned/tools/add-ons/dom_inspector/index.html index 0e2c41dc29..3316c31f83 100644 --- a/files/ru/orphaned/tools/add-ons/dom_inspector/index.html +++ b/files/ru/orphaned/tools/add-ons/dom_inspector/index.html @@ -1,7 +1,8 @@ --- title: DOM Inspector -slug: Tools/Add-ons/DOM_Inspector +slug: orphaned/Tools/Add-ons/DOM_Inspector translation_of: Tools/Add-ons/DOM_Inspector +original_slug: Tools/Add-ons/DOM_Inspector ---
        {{ToolsSidebar}}

        Инспектор DOM (также известный как DOMi) — инструмент для разработчиков, используемый для проверки, просмотра и редактирования объектной модели документа - обычных веб-страниц или XUL windows. По иерархии DOM можно перемещаться с помощью двух окон, отображающих целый ряд различных представлений документа и всех вложенных в него узлов.

        diff --git a/files/ru/orphaned/tools/add-ons/index.html b/files/ru/orphaned/tools/add-ons/index.html index ab408aeb18..c385f15d53 100644 --- a/files/ru/orphaned/tools/add-ons/index.html +++ b/files/ru/orphaned/tools/add-ons/index.html @@ -1,10 +1,11 @@ --- title: Add-ons -slug: Tools/Add-ons +slug: orphaned/Tools/Add-ons tags: - NeedsTranslation - TopicStub translation_of: Tools/Add-ons +original_slug: Tools/Add-ons ---
        {{ToolsSidebar}}

        Developer tools that are not built into Firefox, but ship as separate add-ons.

        diff --git a/files/ru/orphaned/web/api/web_crypto_api/checking_authenticity_with_password/index.html b/files/ru/orphaned/web/api/web_crypto_api/checking_authenticity_with_password/index.html index ea8ec86586..1d113bd79b 100644 --- a/files/ru/orphaned/web/api/web_crypto_api/checking_authenticity_with_password/index.html +++ b/files/ru/orphaned/web/api/web_crypto_api/checking_authenticity_with_password/index.html @@ -1,10 +1,11 @@ --- title: Проверка подлинности данных с паролем -slug: Web/API/Web_Crypto_API/Checking_authenticity_with_password +slug: orphaned/Web/API/Web_Crypto_API/Checking_authenticity_with_password tags: - HMAC - Web Crypto translation_of: Web/API/Web_Crypto_API/Checking_authenticity_with_password +original_slug: Web/API/Web_Crypto_API/Checking_authenticity_with_password ---

        {{APIRef("Web Crypto API")}}{{draft}}

        diff --git "a/files/ru/orphaned/web/guide/ajax/\321\201_\321\207\320\265\320\263\320\276_\320\275\320\260\321\207\320\260\321\202\321\214_question_/index.html" "b/files/ru/orphaned/web/guide/ajax/\321\201_\321\207\320\265\320\263\320\276_\320\275\320\260\321\207\320\260\321\202\321\214_question_/index.html" index f66d6b1dbf..7fbfff4658 100644 --- "a/files/ru/orphaned/web/guide/ajax/\321\201_\321\207\320\265\320\263\320\276_\320\275\320\260\321\207\320\260\321\202\321\214_question_/index.html" +++ "b/files/ru/orphaned/web/guide/ajax/\321\201_\321\207\320\265\320\263\320\276_\320\275\320\260\321\207\320\260\321\202\321\214_question_/index.html" @@ -1,6 +1,7 @@ --- title: С чего начать? -slug: Web/Guide/AJAX/С_чего_начать? +slug: orphaned/Web/Guide/AJAX/С_чего_начать? +original_slug: Web/Guide/AJAX/С_чего_начать? ---

        IKFIA

        diff --git a/files/ru/orphaned/web/html/element/element/index.html b/files/ru/orphaned/web/html/element/element/index.html index 183d25eb92..801d4ec7a9 100644 --- a/files/ru/orphaned/web/html/element/element/index.html +++ b/files/ru/orphaned/web/html/element/element/index.html @@ -1,7 +1,8 @@ --- title: -slug: Web/HTML/Element/element +slug: orphaned/Web/HTML/Element/element translation_of: Web/HTML/Element/element +original_slug: Web/HTML/Element/element ---

        {{obsolete_header}}

        diff --git a/files/ru/orphaned/web/html/global_attributes/dropzone/index.html b/files/ru/orphaned/web/html/global_attributes/dropzone/index.html index 19c7d5d01b..89e91d7a2c 100644 --- a/files/ru/orphaned/web/html/global_attributes/dropzone/index.html +++ b/files/ru/orphaned/web/html/global_attributes/dropzone/index.html @@ -1,7 +1,8 @@ --- title: dropzone -slug: Web/HTML/Global_attributes/dropzone +slug: orphaned/Web/HTML/Global_attributes/dropzone translation_of: Web/HTML/Global_attributes/dropzone +original_slug: Web/HTML/Global_attributes/dropzone ---

        {{HTMLSidebar("Global_attributes")}}{{SeeCompatTable}}

        diff --git "a/files/ru/orphaned/web/javascript/guide/\320\276\320\261_\321\215\321\202\320\276\320\274_\321\200\321\203\320\272\320\276\320\262\320\276\320\264\321\201\321\202\320\262\320\265/index.html" "b/files/ru/orphaned/web/javascript/guide/\320\276\320\261_\321\215\321\202\320\276\320\274_\321\200\321\203\320\272\320\276\320\262\320\276\320\264\321\201\321\202\320\262\320\265/index.html" index 397327911c..7a71d93a38 100644 --- "a/files/ru/orphaned/web/javascript/guide/\320\276\320\261_\321\215\321\202\320\276\320\274_\321\200\321\203\320\272\320\276\320\262\320\276\320\264\321\201\321\202\320\262\320\265/index.html" +++ "b/files/ru/orphaned/web/javascript/guide/\320\276\320\261_\321\215\321\202\320\276\320\274_\321\200\321\203\320\272\320\276\320\262\320\276\320\264\321\201\321\202\320\262\320\265/index.html" @@ -1,6 +1,7 @@ --- title: Об этом руководстве -slug: Web/JavaScript/Guide/Об_этом_руководстве +slug: orphaned/Web/JavaScript/Guide/Об_этом_руководстве +original_slug: Web/JavaScript/Guide/Об_этом_руководстве ---

         

        JavaScript является кросс-платформенным, объектно-ориентированный язык сценариев. Это руководство объясняет все, что нужно знать об использовании JavaScript.

        diff --git a/files/ru/orphaned/web/javascript/reference/global_objects/array/prototype/index.html b/files/ru/orphaned/web/javascript/reference/global_objects/array/prototype/index.html index 4d04fc0736..1995d42310 100644 --- a/files/ru/orphaned/web/javascript/reference/global_objects/array/prototype/index.html +++ b/files/ru/orphaned/web/javascript/reference/global_objects/array/prototype/index.html @@ -1,12 +1,13 @@ --- title: Array.prototype -slug: Web/JavaScript/Reference/Global_Objects/Array/prototype +slug: orphaned/Web/JavaScript/Reference/Global_Objects/Array/prototype tags: - Array - JavaScript - Property - Reference translation_of: Web/JavaScript/Reference/Global_Objects/Array/prototype +original_slug: Web/JavaScript/Reference/Global_Objects/Array/prototype ---
        {{JSRef("Global_Objects", "Array")}}
        diff --git a/files/ru/orphaned/web/javascript/reference/global_objects/asyncfunction/prototype/index.html b/files/ru/orphaned/web/javascript/reference/global_objects/asyncfunction/prototype/index.html index 9d0c21f241..5a3e01d354 100644 --- a/files/ru/orphaned/web/javascript/reference/global_objects/asyncfunction/prototype/index.html +++ b/files/ru/orphaned/web/javascript/reference/global_objects/asyncfunction/prototype/index.html @@ -1,7 +1,8 @@ --- title: AsyncFunction.prototype -slug: Web/JavaScript/Reference/Global_Objects/AsyncFunction/prototype +slug: orphaned/Web/JavaScript/Reference/Global_Objects/AsyncFunction/prototype translation_of: Web/JavaScript/Reference/Global_Objects/AsyncFunction/prototype +original_slug: Web/JavaScript/Reference/Global_Objects/AsyncFunction/prototype ---
        {{JSRef}}
        diff --git "a/files/ru/orphaned/web/javascript/reference/global_objects/math/\320\274\320\265\321\202\320\276\320\264_math.max()_/index.html" "b/files/ru/orphaned/web/javascript/reference/global_objects/math/\320\274\320\265\321\202\320\276\320\264_math.max()_/index.html" index ab66d8acb0..56c70fde75 100644 --- "a/files/ru/orphaned/web/javascript/reference/global_objects/math/\320\274\320\265\321\202\320\276\320\264_math.max()_/index.html" +++ "b/files/ru/orphaned/web/javascript/reference/global_objects/math/\320\274\320\265\321\202\320\276\320\264_math.max()_/index.html" @@ -1,11 +1,12 @@ --- title: Метод Math.max() -slug: Web/JavaScript/Reference/Global_Objects/Math/Метод_Math.max()_ +slug: orphaned/Web/JavaScript/Reference/Global_Objects/Math/Метод_Math.max()_ tags: - JavaScript - Math - Method - Reference +original_slug: Web/JavaScript/Reference/Global_Objects/Math/Метод_Math.max()_ ---
        {{JSRef("Global_Objects", "Math")}}
        diff --git a/files/ru/orphaned/web/manifest/serviceworker/index.html b/files/ru/orphaned/web/manifest/serviceworker/index.html index 11681a7060..8c1fe50334 100644 --- a/files/ru/orphaned/web/manifest/serviceworker/index.html +++ b/files/ru/orphaned/web/manifest/serviceworker/index.html @@ -1,11 +1,12 @@ --- title: serviceworker -slug: Web/Manifest/serviceworker +slug: orphaned/Web/Manifest/serviceworker tags: - Manifest - ServiceWorker - Web translation_of: Web/Manifest/serviceworker +original_slug: Web/Manifest/serviceworker ---
        {{QuickLinksWithSubpages("/ru/docs/Web/Manifest")}}
        diff --git a/files/ru/orphaned/web/security/information_security_basics/index.html b/files/ru/orphaned/web/security/information_security_basics/index.html index 0d36d99bad..53535a9992 100644 --- a/files/ru/orphaned/web/security/information_security_basics/index.html +++ b/files/ru/orphaned/web/security/information_security_basics/index.html @@ -1,7 +1,8 @@ --- title: Основы по информационной безопасности -slug: Web/Security/Information_Security_Basics +slug: orphaned/Web/Security/Information_Security_Basics translation_of: Web/Security/Information_Security_Basics +original_slug: Web/Security/Information_Security_Basics ---

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

        diff --git a/files/ru/orphaned/web/svg/attribute/onload/index.html b/files/ru/orphaned/web/svg/attribute/onload/index.html index b6a5d49ea2..8c73972cde 100644 --- a/files/ru/orphaned/web/svg/attribute/onload/index.html +++ b/files/ru/orphaned/web/svg/attribute/onload/index.html @@ -1,5 +1,6 @@ --- title: onload -slug: Web/SVG/Attribute/onload +slug: orphaned/Web/SVG/Attribute/onload +original_slug: Web/SVG/Attribute/onload ---

        Link not exist

        diff --git a/files/ru/orphaned/xml_in_mozilla/index.html b/files/ru/orphaned/xml_in_mozilla/index.html index aea3fbcb61..b1fa4c61a6 100644 --- a/files/ru/orphaned/xml_in_mozilla/index.html +++ b/files/ru/orphaned/xml_in_mozilla/index.html @@ -1,6 +1,7 @@ --- title: XML in Mozilla -slug: XML_in_Mozilla +slug: orphaned/XML_in_Mozilla +original_slug: XML_in_Mozilla ---

        Поведение метода length объекта XML в браузерах IE и Mozilla

        Непредвиденное поведение метода определяющего количество элементов в коллекции в браузере Mozilla.

        diff --git a/files/ru/orphaned/xpcnativewrapper/index.html b/files/ru/orphaned/xpcnativewrapper/index.html index c12a434e12..bd4a4ec19f 100644 --- a/files/ru/orphaned/xpcnativewrapper/index.html +++ b/files/ru/orphaned/xpcnativewrapper/index.html @@ -1,11 +1,12 @@ --- title: XPCNativeWrapper -slug: XPCNativeWrapper +slug: orphaned/XPCNativeWrapper tags: - DOM - XPCNativeWrapper - Безопасность - Расширения +original_slug: XPCNativeWrapper ---

         

        XPCNativeWrapper позволяет так обернуть объект, чтобы доступ к нему был безопасен для привилегированного кода. Эта обёртка может быть использована во всех версиях, хотя её поведение слегка изменилось начиная с Firefox 1.5 (Gecko 1.8). Информацию о поведении XPCNativeWrapper в Firefox версий младше 1.5 можно получить из статьи о XPCNativeWrapper в MozillaZine KnowledgeBase. Эта же статья посвящена XPCNativeWrapper в Firefox версий 1.5 и выше.

        diff --git a/files/ru/orphaned/xpcom/index.html b/files/ru/orphaned/xpcom/index.html index ee75427939..c2db3696b1 100644 --- a/files/ru/orphaned/xpcom/index.html +++ b/files/ru/orphaned/xpcom/index.html @@ -1,8 +1,9 @@ --- title: XPCOM -slug: XPCOM +slug: orphaned/XPCOM tags: - XPCOM +original_slug: XPCOM ---
        Введение в XPCOM

        Перевод статей с портала IBM developerWorks: Part I, Part II, Part III, Part IV & V

        diff --git "a/files/ru/orphaned/\320\262\320\265\320\261-\321\201\321\202\320\260\320\275\320\264\320\260\321\200\321\202\321\213/index.html" "b/files/ru/orphaned/\320\262\320\265\320\261-\321\201\321\202\320\260\320\275\320\264\320\260\321\200\321\202\321\213/index.html" index 993ff92019..fe2fd3a4f0 100644 --- "a/files/ru/orphaned/\320\262\320\265\320\261-\321\201\321\202\320\260\320\275\320\264\320\260\321\200\321\202\321\213/index.html" +++ "b/files/ru/orphaned/\320\262\320\265\320\261-\321\201\321\202\320\260\320\275\320\264\320\260\321\200\321\202\321\213/index.html" @@ -1,6 +1,7 @@ --- title: Веб-стандарты -slug: Веб-стандарты +slug: orphaned/Веб-стандарты +original_slug: Веб-стандарты ---

        Веб-стандарты, как следует из их названия, являются стандартами в области веб-технологий. Эти стандарты являются рекомендациями для разработчиков программного обеспечения и для веб-мастеров. Служат веб-стандарты для того, чтобы, с одной стороны, пользователи ПО без проблем и неудобств могли пользоваться сетью интернет, а с другой стороны, для того, чтобы разработчики программного обеспечения или веб-мастера были уверены в работоспособности своих продуктов.

        Исторически сложилось так, что в начале 90-х годов XX века развязалась так называемая "война браузеров" между компанией Netscape и Microsoft. Суть войны заключалась в том, что разработчики веб-браузеров стремились привнести в продукты своих разработок собственные новые функции, но при этом совершенно не заботились о совместимости технологий и не согласовывали свои действия с разработчиками конкурирующей компании. По этой причине начало возрастать недовольство как среди людей, создающих сайты, так и среди людей, пользующихся сетью интернет - ведь сайты, которые были написаны специально для Netscape Navigator крайне плохо работали в Microsoft Intrnet Explorer и наоборот посредством Internet Explorer почти невозможно было просматривать сайт, написанный для Netscape Navigator.

        diff --git "a/files/ru/orphaned/\320\262\320\276\320\277\321\200\320\276\321\201\321\213_\320\261\320\265\320\267_\320\276\321\202\320\262\320\265\321\202\320\276\320\262/index.html" "b/files/ru/orphaned/\320\262\320\276\320\277\321\200\320\276\321\201\321\213_\320\261\320\265\320\267_\320\276\321\202\320\262\320\265\321\202\320\276\320\262/index.html" index bd39637d9a..da5847b2af 100644 --- "a/files/ru/orphaned/\320\262\320\276\320\277\321\200\320\276\321\201\321\213_\320\261\320\265\320\267_\320\276\321\202\320\262\320\265\321\202\320\276\320\262/index.html" +++ "b/files/ru/orphaned/\320\262\320\276\320\277\321\200\320\276\321\201\321\213_\320\261\320\265\320\267_\320\276\321\202\320\262\320\265\321\202\320\276\320\262/index.html" @@ -1,8 +1,9 @@ --- title: Вопросы без ответов -slug: Вопросы_без_ответов +slug: orphaned/Вопросы_без_ответов tags: - Оставить вопрос - Список вопросов +original_slug: Вопросы_без_ответов ---

        Здесь Вы можете оставить свой вопрос, на который Вы не нашли ответа. После того, как мы найдём на него ответ, вопрос будет перемещён на страницу Часто Задаваемых Вопросов.

        diff --git "a/files/ru/orphaned/\320\264\320\270\320\275\320\260\320\274\320\270\321\207\320\265\321\201\320\272\320\270_\320\270\320\267\320\274\320\265\320\275\321\217\320\265\320\274\321\213\320\271_\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\271_\320\270\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201_\320\275\320\260_xul/index.html" "b/files/ru/orphaned/\320\264\320\270\320\275\320\260\320\274\320\270\321\207\320\265\321\201\320\272\320\270_\320\270\320\267\320\274\320\265\320\275\321\217\320\265\320\274\321\213\320\271_\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\271_\320\270\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201_\320\275\320\260_xul/index.html" index 418fbc826a..4c53fd3669 100644 --- "a/files/ru/orphaned/\320\264\320\270\320\275\320\260\320\274\320\270\321\207\320\265\321\201\320\272\320\270_\320\270\320\267\320\274\320\265\320\275\321\217\320\265\320\274\321\213\320\271_\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\271_\320\270\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201_\320\275\320\260_xul/index.html" +++ "b/files/ru/orphaned/\320\264\320\270\320\275\320\260\320\274\320\270\321\207\320\265\321\201\320\272\320\270_\320\270\320\267\320\274\320\265\320\275\321\217\320\265\320\274\321\213\320\271_\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\271_\320\270\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201_\320\275\320\260_xul/index.html" @@ -1,10 +1,11 @@ --- title: Динамически изменяемый пользовательский интерфейс на XUL -slug: Динамически_изменяемый_пользовательский_интерфейс_на_XUL +slug: orphaned/Динамически_изменяемый_пользовательский_интерфейс_на_XUL tags: - DOM - Extensions - XUL +original_slug: Динамически_изменяемый_пользовательский_интерфейс_на_XUL ---

        В этой статье обсуждается управление XUL интерфейсами с использованием DOM и других API. Здесь объясняется принцип документов DOM, приводится несколько простых примеров использования вызовов DOM для выполнения простейших манипуляций с документом, после чего приводится пример, демонстрирующий работу с анонимным XBL содержимым с использованием методов, специфичных для Mozilla.

        Эта статья написана как для начинающих, так и для разработчиков среднего уровня подготовки. Предполагается, что у читателя есть базовые знания по XUL и JavaScript. Возможно вы захотие прочитать некоторые вводные документы по DOM, такие как статья Об объектной модели документа или вводная страница Gecko DOM Reference.

        diff --git "a/files/ru/orphaned/\320\264\320\276\321\201\321\202\321\203\320\277\320\275\320\276\321\201\321\202\321\214/index.html" "b/files/ru/orphaned/\320\264\320\276\321\201\321\202\321\203\320\277\320\275\320\276\321\201\321\202\321\214/index.html" index b86149b9b8..b63553d6ea 100644 --- "a/files/ru/orphaned/\320\264\320\276\321\201\321\202\321\203\320\277\320\275\320\276\321\201\321\202\321\214/index.html" +++ "b/files/ru/orphaned/\320\264\320\276\321\201\321\202\321\203\320\277\320\275\320\276\321\201\321\202\321\214/index.html" @@ -1,8 +1,9 @@ --- title: Доступность -slug: Доступность +slug: orphaned/Доступность tags: - Accessibility +original_slug: Доступность ---

         

        diff --git "a/files/ru/orphaned/\320\267\320\260\320\263\320\276\320\273\320\276\320\262\320\276\320\272_\321\201\321\201\321\213\320\273\320\272\320\270/index.html" "b/files/ru/orphaned/\320\267\320\260\320\263\320\276\320\273\320\276\320\262\320\276\320\272_\321\201\321\201\321\213\320\273\320\272\320\270/index.html" index 633d7eb6a3..1865fd39fe 100644 --- "a/files/ru/orphaned/\320\267\320\260\320\263\320\276\320\273\320\276\320\262\320\276\320\272_\321\201\321\201\321\213\320\273\320\272\320\270/index.html" +++ "b/files/ru/orphaned/\320\267\320\260\320\263\320\276\320\273\320\276\320\262\320\276\320\272_\321\201\321\201\321\213\320\273\320\272\320\270/index.html" @@ -1,6 +1,7 @@ --- title: Заголовок ссылки -slug: Заголовок_ссылки +slug: orphaned/Заголовок_ссылки +original_slug: Заголовок_ссылки ---

        Это моя страничка для работы Кроме того мне нужно разместить здесь фотьографии diff --git "a/files/ru/orphaned/\320\272\320\276\320\275\321\202\321\200\320\276\320\273\321\214_\320\272\320\260\321\207\320\265\321\201\321\202\320\262\320\260/index.html" "b/files/ru/orphaned/\320\272\320\276\320\275\321\202\321\200\320\276\320\273\321\214_\320\272\320\260\321\207\320\265\321\201\321\202\320\262\320\260/index.html" index c5059d89f6..d9a09f4b91 100644 --- "a/files/ru/orphaned/\320\272\320\276\320\275\321\202\321\200\320\276\320\273\321\214_\320\272\320\260\321\207\320\265\321\201\321\202\320\262\320\260/index.html" +++ "b/files/ru/orphaned/\320\272\320\276\320\275\321\202\321\200\320\276\320\273\321\214_\320\272\320\260\321\207\320\265\321\201\321\202\320\262\320\260/index.html" @@ -1,6 +1,7 @@ --- title: Контроль качества -slug: Контроль_качества +slug: orphaned/Контроль_качества +original_slug: Контроль_качества ---


        Эта страница не содержит текста. Измените MDN добавив статью.

        diff --git "a/files/ru/orphaned/\320\273\320\276\320\272\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217/index.html" "b/files/ru/orphaned/\320\273\320\276\320\272\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217/index.html" index 0f723d6f82..4a5900ce30 100644 --- "a/files/ru/orphaned/\320\273\320\276\320\272\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217/index.html" +++ "b/files/ru/orphaned/\320\273\320\276\320\272\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217/index.html" @@ -1,5 +1,6 @@ --- title: Локализация -slug: Локализация +slug: orphaned/Локализация +original_slug: Локализация ---

        Локализация - это процесс перевода пользовательского интерфейса программного обеспечения с одного языка на другой и адаптации в соответствии с особенностями иностранной культуры. Данный ресурс расскажет о создании базирующихся на технологиях Mozilla локализованных приложений и расширений.

        diff --git "a/files/ru/orphaned/\320\275\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260_\321\201\321\200\320\265\320\264\321\213_\321\200\320\260\320\267\321\200\320\260\320\261\320\276\321\202\320\272\320\270_\321\200\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/index.html" "b/files/ru/orphaned/\320\275\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260_\321\201\321\200\320\265\320\264\321\213_\321\200\320\260\320\267\321\200\320\260\320\261\320\276\321\202\320\272\320\270_\321\200\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/index.html" index 14cfda019e..9e3ea0ff57 100644 --- "a/files/ru/orphaned/\320\275\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260_\321\201\321\200\320\265\320\264\321\213_\321\200\320\260\320\267\321\200\320\260\320\261\320\276\321\202\320\272\320\270_\321\200\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/index.html" +++ "b/files/ru/orphaned/\320\275\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260_\321\201\321\200\320\265\320\264\321\213_\321\200\320\260\320\267\321\200\320\260\320\261\320\276\321\202\320\272\320\270_\321\200\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/index.html" @@ -1,8 +1,9 @@ --- title: Настройка среды разработки расширений -slug: Настройка_среды_разработки_расширений +slug: orphaned/Настройка_среды_разработки_расширений tags: - Расширения +original_slug: Настройка_среды_разработки_расширений ---

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

        diff --git "a/files/ru/orphaned/\320\277\320\265\321\200\320\265\321\205\320\276\320\264_\321\201_internet_explorer_\320\275\320\260_mozilla/index.html" "b/files/ru/orphaned/\320\277\320\265\321\200\320\265\321\205\320\276\320\264_\321\201_internet_explorer_\320\275\320\260_mozilla/index.html" index c24c37d79d..4815631f3c 100644 --- "a/files/ru/orphaned/\320\277\320\265\321\200\320\265\321\205\320\276\320\264_\321\201_internet_explorer_\320\275\320\260_mozilla/index.html" +++ "b/files/ru/orphaned/\320\277\320\265\321\200\320\265\321\205\320\276\320\264_\321\201_internet_explorer_\320\275\320\260_mozilla/index.html" @@ -1,6 +1,7 @@ --- title: Переход с Internet Explorer на Mozilla -slug: Переход_с_Internet_Explorer_на_Mozilla +slug: orphaned/Переход_с_Internet_Explorer_на_Mozilla +original_slug: Переход_с_Internet_Explorer_на_Mozilla ---

        Введение

        Когда Netscape запустила броузер Mozilla, было решено поддерживать стандарт W3C. В результате, Mozilla не полностью совместима с Netscape Navigator 4.x и Microsoft Internet Explorer; например, Mozilla не поддерживает <layer>, я расскажу об этом позже. Броузеры, такие как Internet Explorer 4, были разработаны до утверждения стандарта W3C, и имеют много индивидуальных особенностей. В этом ключе, я опишу особенности Mozilla, с поддержкой строгого стиля HTML в сочетании с Internet Explorer и другими используемыми броузерами.

        diff --git "a/files/ru/orphaned/\321\201\320\261\320\276\321\200\320\272\320\260_\320\270_\321\203\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\260/index.html" "b/files/ru/orphaned/\321\201\320\261\320\276\321\200\320\272\320\260_\320\270_\321\203\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\260/index.html" index 0da2e7ca31..d513d5dbad 100644 --- "a/files/ru/orphaned/\321\201\320\261\320\276\321\200\320\272\320\260_\320\270_\321\203\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\260/index.html" +++ "b/files/ru/orphaned/\321\201\320\261\320\276\321\200\320\272\320\260_\320\270_\321\203\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\260/index.html" @@ -1,6 +1,7 @@ --- title: Сборка и установка -slug: Сборка_и_установка +slug: orphaned/Сборка_и_установка +original_slug: Сборка_и_установка ---
        Важно: Не начинайте сборку без предварительной конфигурации!

        Сборка

        diff --git "a/files/ru/orphaned/\321\201\320\276\320\267\320\264\320\260\320\275\320\270\320\265_\321\200\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217/index.html" "b/files/ru/orphaned/\321\201\320\276\320\267\320\264\320\260\320\275\320\270\320\265_\321\200\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217/index.html" index f5a8d14f6f..02595959ca 100644 --- "a/files/ru/orphaned/\321\201\320\276\320\267\320\264\320\260\320\275\320\270\320\265_\321\200\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217/index.html" +++ "b/files/ru/orphaned/\321\201\320\276\320\267\320\264\320\260\320\275\320\270\320\265_\321\200\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217/index.html" @@ -1,8 +1,9 @@ --- title: Создание расширения -slug: Создание_расширения +slug: orphaned/Создание_расширения tags: - Extensions +original_slug: Создание_расширения ---

        Введение

        diff --git "a/files/ru/orphaned/\321\201\320\276\320\267\320\264\320\260\320\275\320\270\320\265_\321\200\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217/\320\275\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260_firefox_\320\264\320\273\321\217_\321\200\320\260\320\267\321\200\320\260\320\261\320\276\321\202\320\272\320\270/index.html" "b/files/ru/orphaned/\321\201\320\276\320\267\320\264\320\260\320\275\320\270\320\265_\321\200\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217/\320\275\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260_firefox_\320\264\320\273\321\217_\321\200\320\260\320\267\321\200\320\260\320\261\320\276\321\202\320\272\320\270/index.html" index 790d74ed18..540eec6800 100644 --- "a/files/ru/orphaned/\321\201\320\276\320\267\320\264\320\260\320\275\320\270\320\265_\321\200\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217/\320\275\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260_firefox_\320\264\320\273\321\217_\321\200\320\260\320\267\321\200\320\260\320\261\320\276\321\202\320\272\320\270/index.html" +++ "b/files/ru/orphaned/\321\201\320\276\320\267\320\264\320\260\320\275\320\270\320\265_\321\200\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217/\320\275\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260_firefox_\320\264\320\273\321\217_\321\200\320\260\320\267\321\200\320\260\320\261\320\276\321\202\320\272\320\270/index.html" @@ -1,6 +1,7 @@ --- title: Настройка Firefox для разработки -slug: Создание_расширения/Настройка_Firefox_для_разработки +slug: orphaned/Создание_расширения/Настройка_Firefox_для_разработки +original_slug: Создание_расширения/Настройка_Firefox_для_разработки ---

        Перед созданием собственного расширения рекомендуется для этого настроить Firefox. Нужно это для того, чтобы не потерять важные данные и не сбить настройки на повседневном профиле браузера из-за неудачного опыта с расширением.

        Создание экспериментального профиля

        diff --git "a/files/ru/orphaned/\321\201\320\276\320\267\320\264\320\260\320\275\320\270\320\265_\321\200\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217/\320\275\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260_firefox_\320\264\320\273\321\217_\321\200\320\260\320\267\321\200\320\260\320\261\320\276\321\202\320\272\320\270_\321\200\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/index.html" "b/files/ru/orphaned/\321\201\320\276\320\267\320\264\320\260\320\275\320\270\320\265_\321\200\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217/\320\275\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260_firefox_\320\264\320\273\321\217_\321\200\320\260\320\267\321\200\320\260\320\261\320\276\321\202\320\272\320\270_\321\200\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/index.html" index 2ee5466f3e..f85369e2e0 100644 --- "a/files/ru/orphaned/\321\201\320\276\320\267\320\264\320\260\320\275\320\270\320\265_\321\200\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217/\320\275\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260_firefox_\320\264\320\273\321\217_\321\200\320\260\320\267\321\200\320\260\320\261\320\276\321\202\320\272\320\270_\321\200\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/index.html" +++ "b/files/ru/orphaned/\321\201\320\276\320\267\320\264\320\260\320\275\320\270\320\265_\321\200\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217/\320\275\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\260_firefox_\320\264\320\273\321\217_\321\200\320\260\320\267\321\200\320\260\320\261\320\276\321\202\320\272\320\270_\321\200\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271/index.html" @@ -1,6 +1,7 @@ --- title: Настройка Firefox для разработки расширений -slug: Создание_расширения/Настройка_Firefox_для_разработки_расширений +slug: orphaned/Создание_расширения/Настройка_Firefox_для_разработки_расширений +original_slug: Создание_расширения/Настройка_Firefox_для_разработки_расширений ---

        Прежде чем начать разработку расширения, желательно настроить для этого Firefox. Нужно это для того, чтобы не потерять нужные данные и не сбить настройки в повседневном профиле Firefox.

        Создание экспериментального профиля Firefox

        diff --git "a/files/ru/orphaned/\321\201\320\276\320\267\320\264\320\260\320\275\320\270\320\265_\321\200\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217_\320\264\320\273\321\217_firefox_\321\201_\320\270\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\320\275\320\270\320\265\320\274_mozilla_build_system/index.html" "b/files/ru/orphaned/\321\201\320\276\320\267\320\264\320\260\320\275\320\270\320\265_\321\200\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217_\320\264\320\273\321\217_firefox_\321\201_\320\270\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\320\275\320\270\320\265\320\274_mozilla_build_system/index.html" index b6fbfd6e87..41af48f7e2 100644 --- "a/files/ru/orphaned/\321\201\320\276\320\267\320\264\320\260\320\275\320\270\320\265_\321\200\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217_\320\264\320\273\321\217_firefox_\321\201_\320\270\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\320\275\320\270\320\265\320\274_mozilla_build_system/index.html" +++ "b/files/ru/orphaned/\321\201\320\276\320\267\320\264\320\260\320\275\320\270\320\265_\321\200\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\321\217_\320\264\320\273\321\217_firefox_\321\201_\320\270\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\320\275\320\270\320\265\320\274_mozilla_build_system/index.html" @@ -1,6 +1,7 @@ --- title: Создание расширения для Firefox с использованием Mozilla Build System -slug: Создание_расширения_для_Firefox_с_использованием_Mozilla_Build_System +slug: orphaned/Создание_расширения_для_Firefox_с_использованием_Mozilla_Build_System +original_slug: Создание_расширения_для_Firefox_с_использованием_Mozilla_Build_System ---

        Существует специальное расширение для создания новых расширений для Firefox.

        {{ languages( { "en": "en/Creating_Custom_Firefox_Extensions_with_the_Mozilla_Build_System", "it": "it/Creare_Estensioni_personalizzate_per_Firefox_con_il_sistema_di_sviluppo_di_Mozilla", "ja": "ja/Creating_Custom_Firefox_Extensions_with_the_Mozilla_Build_System" } ) }} diff --git "a/files/ru/orphaned/\321\201\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\260\321\217_\320\270\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\321\217_\320\277\320\276_gecko_dom/index.html" "b/files/ru/orphaned/\321\201\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\260\321\217_\320\270\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\321\217_\320\277\320\276_gecko_dom/index.html" index 91f9a7bee9..a86e2fa2dc 100644 --- "a/files/ru/orphaned/\321\201\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\260\321\217_\320\270\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\321\217_\320\277\320\276_gecko_dom/index.html" +++ "b/files/ru/orphaned/\321\201\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\260\321\217_\320\270\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\321\217_\320\277\320\276_gecko_dom/index.html" @@ -1,9 +1,10 @@ --- title: Справочная информация по Gecko DOM -slug: Справочная_информация_по_Gecko_DOM +slug: orphaned/Справочная_информация_по_Gecko_DOM tags: - NeedsTechnicalReview - Справочная_информация_по_Gecko_DOM +original_slug: Справочная_информация_по_Gecko_DOM ---

        Содержание справочной информации по Gecko DOM.

        diff --git "a/files/ru/orphaned/\321\201\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\260\321\217_\320\270\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\321\217_\320\277\320\276_gecko_dom/\320\262\320\262\320\265\320\264\320\265\320\275\320\270\320\265/index.html" "b/files/ru/orphaned/\321\201\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\260\321\217_\320\270\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\321\217_\320\277\320\276_gecko_dom/\320\262\320\262\320\265\320\264\320\265\320\275\320\270\320\265/index.html" index e2b49f348b..82a4ce1465 100644 --- "a/files/ru/orphaned/\321\201\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\260\321\217_\320\270\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\321\217_\320\277\320\276_gecko_dom/\320\262\320\262\320\265\320\264\320\265\320\275\320\270\320\265/index.html" +++ "b/files/ru/orphaned/\321\201\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\260\321\217_\320\270\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\321\217_\320\277\320\276_gecko_dom/\320\262\320\262\320\265\320\264\320\265\320\275\320\270\320\265/index.html" @@ -1,6 +1,7 @@ --- title: Введение -slug: Справочная_информация_по_Gecko_DOM/Введение +slug: orphaned/Справочная_информация_по_Gecko_DOM/Введение +original_slug: Справочная_информация_по_Gecko_DOM/Введение ---

        В этом разделе представлено краткое концептуальное введение в DOM: что это такое, как он предоставляет структуру для HTML и XML-документов, как вы можете получить к нему доступ, и как этот API представляет справочную информацию и примеры.

        diff --git "a/files/ru/orphaned/\321\201\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\260\321\217_\320\270\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\321\217_\320\277\320\276_gecko_dom/\320\277\321\200\320\265\320\264\320\270\321\201\320\273\320\276\320\262\320\270\320\265/index.html" "b/files/ru/orphaned/\321\201\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\260\321\217_\320\270\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\321\217_\320\277\320\276_gecko_dom/\320\277\321\200\320\265\320\264\320\270\321\201\320\273\320\276\320\262\320\270\320\265/index.html" index 6d891324fa..db38e4b46e 100644 --- "a/files/ru/orphaned/\321\201\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\260\321\217_\320\270\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\321\217_\320\277\320\276_gecko_dom/\320\277\321\200\320\265\320\264\320\270\321\201\320\273\320\276\320\262\320\270\320\265/index.html" +++ "b/files/ru/orphaned/\321\201\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\260\321\217_\320\270\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\321\217_\320\277\320\276_gecko_dom/\320\277\321\200\320\265\320\264\320\270\321\201\320\273\320\276\320\262\320\270\320\265/index.html" @@ -1,6 +1,7 @@ --- title: Предисловие -slug: Справочная_информация_по_Gecko_DOM/Предисловие +slug: orphaned/Справочная_информация_по_Gecko_DOM/Предисловие +original_slug: Справочная_информация_по_Gecko_DOM/Предисловие ---

         

        diff --git "a/files/ru/orphaned/\321\201\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\260\321\217_\320\270\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\321\217_\320\277\320\276_gecko_dom/\320\277\321\200\320\270\320\274\320\265\321\200\321\213/index.html" "b/files/ru/orphaned/\321\201\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\260\321\217_\320\270\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\321\217_\320\277\320\276_gecko_dom/\320\277\321\200\320\270\320\274\320\265\321\200\321\213/index.html" index 6d2319c182..f030f68c04 100644 --- "a/files/ru/orphaned/\321\201\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\260\321\217_\320\270\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\321\217_\320\277\320\276_gecko_dom/\320\277\321\200\320\270\320\274\320\265\321\200\321\213/index.html" +++ "b/files/ru/orphaned/\321\201\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\260\321\217_\320\270\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\321\217_\320\277\320\276_gecko_dom/\320\277\321\200\320\270\320\274\320\265\321\200\321\213/index.html" @@ -1,5 +1,6 @@ --- title: Примеры -slug: Справочная_информация_по_Gecko_DOM/Примеры +slug: orphaned/Справочная_информация_по_Gecko_DOM/Примеры +original_slug: Справочная_информация_по_Gecko_DOM/Примеры ---

        This page has no content. Enrich MDC by contributing.

        diff --git "a/files/ru/orphaned/\321\202\320\265\320\274\321\213/index.html" "b/files/ru/orphaned/\321\202\320\265\320\274\321\213/index.html" index 32b62868e6..b66e44f6ba 100644 --- "a/files/ru/orphaned/\321\202\320\265\320\274\321\213/index.html" +++ "b/files/ru/orphaned/\321\202\320\265\320\274\321\213/index.html" @@ -1,6 +1,7 @@ --- title: Темы -slug: Темы +slug: orphaned/Темы +original_slug: Темы ---

         

        Введение
        diff --git a/files/ru/plugins/roadmap/index.html b/files/ru/plugins/roadmap/index.html index d50a948963..1eda145955 100644 --- a/files/ru/plugins/roadmap/index.html +++ b/files/ru/plugins/roadmap/index.html @@ -1,7 +1,8 @@ --- title: План поддержки плагинов в Firefox -slug: Plugins/План +slug: Plugins/Roadmap translation_of: Plugins/Roadmap +original_slug: Plugins/План ---

        Плагины — проблема безопасности и производительности для пользователей Firefox. NPAPI плагины являются устаревшей технологией, и Mozilla движется к Вебу, в котором они не нужны. Последний оставшийся NPAPI плагин — Adobe Flash, который выпустил план по окончанию срока поддержки. Для поддержки воздержания от использования Flash, Firefox, вместе с другими браузерами, работает над тем, чтобы постепенно и аккуратно избавиться от использования и зависимости от Flash. Ниже представлен план, рассказывающий о том, что будет происходить с поддержкой плагинов в Firefox.

        diff --git a/files/ru/tools/accessibility_inspector/index.html b/files/ru/tools/accessibility_inspector/index.html index a375a027ae..52c20f411a 100644 --- a/files/ru/tools/accessibility_inspector/index.html +++ b/files/ru/tools/accessibility_inspector/index.html @@ -1,7 +1,8 @@ --- title: Инспектор доступности -slug: Tools/Инспектор_доступности +slug: Tools/Accessibility_inspector translation_of: Tools/Accessibility_inspector +original_slug: Tools/Инспектор_доступности ---
        {{ToolsSidebar}}
        diff --git a/files/ru/tools/browser_console/index.html b/files/ru/tools/browser_console/index.html index 487bc2eb5e..00d49816ff 100644 --- a/files/ru/tools/browser_console/index.html +++ b/files/ru/tools/browser_console/index.html @@ -1,14 +1,15 @@ --- title: Консоль браузера -slug: Tools/Консоль_браузера +slug: Tools/Browser_Console tags: - Tools - Web Development - Браузер - Отладка - - 'веб-разработка:инструменты' + - веб-разработка:инструменты - консоль translation_of: Tools/Browser_Console +original_slug: Tools/Консоль_браузера ---
        {{ToolsSidebar}}

        Консоль браузера — как Веб-консоль, но для работы со всем браузером, а не с отдельной его вкладкой.

        diff --git a/files/ru/tools/debugger/how_to/debug_eval_sources/index.html b/files/ru/tools/debugger/how_to/debug_eval_sources/index.html index 29224f2590..714444fe1c 100644 --- a/files/ru/tools/debugger/how_to/debug_eval_sources/index.html +++ b/files/ru/tools/debugger/how_to/debug_eval_sources/index.html @@ -1,9 +1,10 @@ --- title: Отладка кода внутри eval -slug: Tools/Debugger/How_to/Отладка_кода_внутри_eval +slug: Tools/Debugger/How_to/Debug_eval_sources tags: - Отладка translation_of: Tools/Debugger/How_to/Debug_eval_sources +original_slug: Tools/Debugger/How_to/Отладка_кода_внутри_eval ---
        {{ToolsSidebar}}

        Доступно, начиная с Firefox 36.

        diff --git a/files/ru/tools/debugger/how_to/pretty-print_a_minified_file/index.html b/files/ru/tools/debugger/how_to/pretty-print_a_minified_file/index.html index e224f9d591..2800f84c31 100644 --- a/files/ru/tools/debugger/how_to/pretty-print_a_minified_file/index.html +++ b/files/ru/tools/debugger/how_to/pretty-print_a_minified_file/index.html @@ -1,7 +1,8 @@ --- title: Работа с минифицированным кодом -slug: Tools/Debugger/How_to/Работа_с_минифицированным_кодом +slug: Tools/Debugger/How_to/Pretty-print_a_minified_file translation_of: Tools/Debugger/How_to/Pretty-print_a_minified_file +original_slug: Tools/Debugger/How_to/Работа_с_минифицированным_кодом ---
        {{ToolsSidebar}}

        Чтобы представить минифицированный код в удобочитаемом виде, откройте его, а затем нажмите на иконку с фигурными скобками:

        diff --git a/files/ru/tools/page_inspector/how_to/edit_fonts/index.html b/files/ru/tools/page_inspector/how_to/edit_fonts/index.html index 24b490e3d3..32000bbe0f 100644 --- a/files/ru/tools/page_inspector/how_to/edit_fonts/index.html +++ b/files/ru/tools/page_inspector/how_to/edit_fonts/index.html @@ -1,11 +1,12 @@ --- title: Просмотр шрифтов -slug: Tools/Page_Inspector/How_to/Просмотр_шрифтов +slug: Tools/Page_Inspector/How_to/Edit_fonts tags: - Guide - Инспектор - инструменты translation_of: Tools/Page_Inspector/How_to/Edit_fonts +original_slug: Tools/Page_Inspector/How_to/Просмотр_шрифтов ---
        {{ToolsSidebar}}

        Всплывающая подсказка у font-family

        diff --git a/files/ru/tools/page_inspector/how_to/examine_event_listeners/index.html b/files/ru/tools/page_inspector/how_to/examine_event_listeners/index.html index c5ea101f0b..02599668dd 100644 --- a/files/ru/tools/page_inspector/how_to/examine_event_listeners/index.html +++ b/files/ru/tools/page_inspector/how_to/examine_event_listeners/index.html @@ -1,11 +1,12 @@ --- title: Исследовать Event Listeners -slug: Tools/Page_Inspector/How_to/Исследовать_event_listeners +slug: Tools/Page_Inspector/How_to/Examine_event_listeners tags: - Инспектор - Руководство - инструменты translation_of: Tools/Page_Inspector/How_to/Examine_event_listeners +original_slug: Tools/Page_Inspector/How_to/Исследовать_event_listeners ---
        {{ToolsSidebar}}

        Начиная с Firefox 33 вы увидите значок «ev» в области HTML, напротив элементов, у которых есть связаные с ними Event Listeners:

        diff --git a/files/ru/tools/page_inspector/how_to/open_the_inspector/index.html b/files/ru/tools/page_inspector/how_to/open_the_inspector/index.html index a4e0927d76..7e9bddf5a5 100644 --- a/files/ru/tools/page_inspector/how_to/open_the_inspector/index.html +++ b/files/ru/tools/page_inspector/how_to/open_the_inspector/index.html @@ -1,11 +1,12 @@ --- title: Открытие Инспектора -slug: Tools/Page_Inspector/How_to/Otkrytie_Inspektora +slug: Tools/Page_Inspector/How_to/Open_the_Inspector tags: - Guide - Инспектор - инструменты translation_of: Tools/Page_Inspector/How_to/Open_the_Inspector +original_slug: Tools/Page_Inspector/How_to/Otkrytie_Inspektora ---
        {{ToolsSidebar}}

        Есть два основных способа открытия Инспектора:

        diff --git a/files/ru/tools/page_inspector/how_to/select_an_element/index.html b/files/ru/tools/page_inspector/how_to/select_an_element/index.html index 16db872b70..c607b31043 100644 --- a/files/ru/tools/page_inspector/how_to/select_an_element/index.html +++ b/files/ru/tools/page_inspector/how_to/select_an_element/index.html @@ -1,11 +1,12 @@ --- title: Выбор элемента -slug: Tools/Page_Inspector/How_to/Vybor_elementa +slug: Tools/Page_Inspector/How_to/Select_an_element tags: - Guide - Инспектор - инструменты translation_of: Tools/Page_Inspector/How_to/Select_an_element +original_slug: Tools/Page_Inspector/How_to/Vybor_elementa ---
        {{ToolsSidebar}}

        {{EmbedYouTube("y2LcsxE2pR0")}}

        diff --git a/files/ru/tools/page_inspector/keyboard_shortcuts/index.html b/files/ru/tools/page_inspector/keyboard_shortcuts/index.html index ae162ef628..a5129643e4 100644 --- a/files/ru/tools/page_inspector/keyboard_shortcuts/index.html +++ b/files/ru/tools/page_inspector/keyboard_shortcuts/index.html @@ -1,10 +1,11 @@ --- title: Клавиатурные сокращения -slug: Tools/Page_Inspector/Сочетания_клавиш +slug: Tools/Page_Inspector/Keyboard_shortcuts tags: - Инспектор - инструменты translation_of: Tools/Page_Inspector/Keyboard_shortcuts +original_slug: Tools/Page_Inspector/Сочетания_клавиш ---
        {{ToolsSidebar}}

        {{ Page ("ru/docs/tools/Keyboard_shortcuts", "page-inspector") }}

        diff --git a/files/ru/tools/performance/index.html b/files/ru/tools/performance/index.html index ba11369101..ac389754f9 100644 --- a/files/ru/tools/performance/index.html +++ b/files/ru/tools/performance/index.html @@ -1,7 +1,8 @@ --- title: Производительность -slug: Tools/Производительность +slug: Tools/Performance translation_of: Tools/Performance +original_slug: Tools/Производительность ---
        {{ToolsSidebar}}

        Инструмент даёт Вам понять общую отзывчивость вашего сайта,  JavaScript и общее представление о разметке. С помощью инструмента производительности Вы создадите запись или профиль своего сайта за определенный промежуток времени. Затем, инструмент покажет Вам действия браузера и график смены частоты кадров, поверх профиля, рендера Вашего сайта.

        diff --git a/files/ru/tools/performance/waterfall/index.html b/files/ru/tools/performance/waterfall/index.html index 1531a44a10..7b785197a7 100644 --- a/files/ru/tools/performance/waterfall/index.html +++ b/files/ru/tools/performance/waterfall/index.html @@ -1,7 +1,8 @@ --- title: Waterfall -slug: Tools/Производительность/Waterfall +slug: Tools/Performance/Waterfall translation_of: Tools/Performance/Waterfall +original_slug: Tools/Производительность/Waterfall ---
        {{ToolsSidebar}}

        Водопад (Waterfall) дает вам представление о различных процессах, которые происходят внутри браузера, когда вы открывайте ваш сайт или запускаете ваше приложение. Он основан на идее разделения всех происходящих внутри браузера процессов на различные типы  - запуск JavaScript, обновление layout и так далее - и что в любой момент времени браузрер выполняет один из этих процессов.

        diff --git a/files/ru/tools/responsive_design_mode/index.html b/files/ru/tools/responsive_design_mode/index.html index e5acc43af0..417421f884 100644 --- a/files/ru/tools/responsive_design_mode/index.html +++ b/files/ru/tools/responsive_design_mode/index.html @@ -1,17 +1,18 @@ --- title: Режим адаптивного дизайна -slug: Tools/Responsive_Design_View +slug: Tools/Responsive_Design_Mode tags: - Design - Firefox - Guide - Tools - Web Development - - 'l10n:priority' + - l10n:priority - Дизайн - адаптивный дизайн - инструменты разработки translation_of: Tools/Responsive_Design_Mode +original_slug: Tools/Responsive_Design_View ---
        {{ToolsSidebar}}
        diff --git a/files/ru/tools/rulers/index.html b/files/ru/tools/rulers/index.html index c8d17fffac..e14bb8a970 100644 --- a/files/ru/tools/rulers/index.html +++ b/files/ru/tools/rulers/index.html @@ -1,7 +1,8 @@ --- title: Линейки -slug: Tools/Линейки +slug: Tools/Rulers translation_of: Tools/Rulers +original_slug: Tools/Линейки ---
        {{ToolsSidebar}}

        Новое в Firefox 40.

        diff --git a/files/ru/tools/web_console/ui_tour/index.html b/files/ru/tools/web_console/ui_tour/index.html index 41f3e760cc..6848e5d67c 100644 --- a/files/ru/tools/web_console/ui_tour/index.html +++ b/files/ru/tools/web_console/ui_tour/index.html @@ -1,7 +1,8 @@ --- title: Opening the Web Console -slug: Tools/Web_Console/Opening_the_Web_Console +slug: Tools/Web_Console/UI_Tour translation_of: Tools/Web_Console/UI_Tour +original_slug: Tools/Web_Console/Opening_the_Web_Console ---
        {{ToolsSidebar}}

        To open the Web Console:

        diff --git a/files/ru/web/api/baseaudiocontext/createpanner/index.html b/files/ru/web/api/baseaudiocontext/createpanner/index.html index 0a4d5db32b..28e5bdc0f7 100644 --- a/files/ru/web/api/baseaudiocontext/createpanner/index.html +++ b/files/ru/web/api/baseaudiocontext/createpanner/index.html @@ -1,7 +1,8 @@ --- title: AudioContext.createPanner() -slug: Web/API/AudioContext/createPanner +slug: Web/API/BaseAudioContext/createPanner translation_of: Web/API/BaseAudioContext/createPanner +original_slug: Web/API/AudioContext/createPanner ---

        {{ APIRef("Web Audio API") }}

        diff --git a/files/ru/web/api/baseaudiocontext/currenttime/index.html b/files/ru/web/api/baseaudiocontext/currenttime/index.html index 51370701f4..ed77cb9ec9 100644 --- a/files/ru/web/api/baseaudiocontext/currenttime/index.html +++ b/files/ru/web/api/baseaudiocontext/currenttime/index.html @@ -1,7 +1,8 @@ --- title: AudioContext.currentTime -slug: Web/API/AudioContext/currentTime +slug: Web/API/BaseAudioContext/currentTime translation_of: Web/API/BaseAudioContext/currentTime +original_slug: Web/API/AudioContext/currentTime ---

        {{ APIRef("AudioContext") }}

        diff --git a/files/ru/web/api/baseaudiocontext/decodeaudiodata/index.html b/files/ru/web/api/baseaudiocontext/decodeaudiodata/index.html index faae982eae..a04a0df083 100644 --- a/files/ru/web/api/baseaudiocontext/decodeaudiodata/index.html +++ b/files/ru/web/api/baseaudiocontext/decodeaudiodata/index.html @@ -1,9 +1,10 @@ --- title: AudioContext.decodeAudioData() -slug: Web/API/AudioContext/decodeAudioData +slug: Web/API/BaseAudioContext/decodeAudioData tags: - API translation_of: Web/API/BaseAudioContext/decodeAudioData +original_slug: Web/API/AudioContext/decodeAudioData ---

        {{ APIRef("Web Audio API") }}

        diff --git a/files/ru/web/api/canvas_api/tutorial/applying_styles_and_colors/index.html b/files/ru/web/api/canvas_api/tutorial/applying_styles_and_colors/index.html index 2c9eeaae78..3dc5e6c8f0 100644 --- a/files/ru/web/api/canvas_api/tutorial/applying_styles_and_colors/index.html +++ b/files/ru/web/api/canvas_api/tutorial/applying_styles_and_colors/index.html @@ -1,7 +1,8 @@ --- title: Применение стилей и цветов -slug: Web/API/Canvas_API/Tutorial/Применение_стилей_и_цветов +slug: Web/API/Canvas_API/Tutorial/Applying_styles_and_colors translation_of: Web/API/Canvas_API/Tutorial/Applying_styles_and_colors +original_slug: Web/API/Canvas_API/Tutorial/Применение_стилей_и_цветов ---
        {{CanvasSidebar}} {{PreviousNext("Web/API/Canvas_API/Tutorial/Drawing_shapes", "Web/API/Canvas_API/Tutorial/Drawing_text")}}
        diff --git a/files/ru/web/api/canvas_api/tutorial/basic_animations/index.html b/files/ru/web/api/canvas_api/tutorial/basic_animations/index.html index a47b8b734e..e4595cbbd4 100644 --- a/files/ru/web/api/canvas_api/tutorial/basic_animations/index.html +++ b/files/ru/web/api/canvas_api/tutorial/basic_animations/index.html @@ -1,6 +1,6 @@ --- title: Простые анимации -slug: Web/API/Canvas_API/Tutorial/Основы_анимации +slug: Web/API/Canvas_API/Tutorial/Basic_animations tags: - HTML - HTML5 @@ -9,6 +9,7 @@ tags: - Средний уровень - Холст translation_of: Web/API/Canvas_API/Tutorial/Basic_animations +original_slug: Web/API/Canvas_API/Tutorial/Основы_анимации ---
        {{CanvasSidebar}} {{PreviousNext("Web/API/Canvas_API/Tutorial/Compositing", "Web/API/Canvas_API/Tutorial/Advanced_animations")}}
        diff --git a/files/ru/web/api/canvas_api/tutorial/compositing/index.html b/files/ru/web/api/canvas_api/tutorial/compositing/index.html index 264cc7e544..bac6986141 100644 --- a/files/ru/web/api/canvas_api/tutorial/compositing/index.html +++ b/files/ru/web/api/canvas_api/tutorial/compositing/index.html @@ -1,9 +1,10 @@ --- title: Композиция и обрезка -slug: Web/API/Canvas_API/Tutorial/Композиции +slug: Web/API/Canvas_API/Tutorial/Compositing tags: - канвас translation_of: Web/API/Canvas_API/Tutorial/Compositing +original_slug: Web/API/Canvas_API/Tutorial/Композиции ---
        {{CanvasSidebar}} {{PreviousNext("Web/API/Canvas_API/Tutorial/Transformations", "Web/API/Canvas_API/Tutorial/Basic_animations")}}
        diff --git a/files/ru/web/api/canvas_api/tutorial/drawing_shapes/index.html b/files/ru/web/api/canvas_api/tutorial/drawing_shapes/index.html index f6ca6c23ef..046e249975 100644 --- a/files/ru/web/api/canvas_api/tutorial/drawing_shapes/index.html +++ b/files/ru/web/api/canvas_api/tutorial/drawing_shapes/index.html @@ -1,7 +1,8 @@ --- title: Рисование фигур с помощью canvas -slug: Web/API/Canvas_API/Tutorial/Рисование_фигур +slug: Web/API/Canvas_API/Tutorial/Drawing_shapes translation_of: Web/API/Canvas_API/Tutorial/Drawing_shapes +original_slug: Web/API/Canvas_API/Tutorial/Рисование_фигур ---
        {{CanvasSidebar}} {{PreviousNext("Web/API/Canvas_API/Tutorial/Basic_usage", "Web/API/Canvas_API/Tutorial/Applying_styles_and_colors")}}
        diff --git a/files/ru/web/api/canvas_api/tutorial/drawing_text/index.html b/files/ru/web/api/canvas_api/tutorial/drawing_text/index.html index 90915c5e09..c25c49be30 100644 --- a/files/ru/web/api/canvas_api/tutorial/drawing_text/index.html +++ b/files/ru/web/api/canvas_api/tutorial/drawing_text/index.html @@ -1,6 +1,6 @@ --- title: Рисование текста -slug: Web/API/Canvas_API/Tutorial/Рисование_текста +slug: Web/API/Canvas_API/Tutorial/Drawing_text tags: - Canvas - Графика @@ -8,6 +8,7 @@ tags: - Рукводовство - мануал translation_of: Web/API/Canvas_API/Tutorial/Drawing_text +original_slug: Web/API/Canvas_API/Tutorial/Рисование_текста ---
        {{CanvasSidebar}} {{PreviousNext("Web/API/Canvas_API/Tutorial/Applying_styles_and_colors", "Web/API/Canvas_API/Tutorial/Using_images")}}
        diff --git a/files/ru/web/api/canvas_api/tutorial/using_images/index.html b/files/ru/web/api/canvas_api/tutorial/using_images/index.html index 3ce4b8384e..d1addb4b7d 100644 --- a/files/ru/web/api/canvas_api/tutorial/using_images/index.html +++ b/files/ru/web/api/canvas_api/tutorial/using_images/index.html @@ -1,9 +1,10 @@ --- title: Использование изображений -slug: Web/API/Canvas_API/Tutorial/Использование_изображений +slug: Web/API/Canvas_API/Tutorial/Using_images tags: - Графика translation_of: Web/API/Canvas_API/Tutorial/Using_images +original_slug: Web/API/Canvas_API/Tutorial/Использование_изображений ---
        {{CanvasSidebar}} {{PreviousNext("Web/API/Canvas_API/Tutorial/Drawing_text", "Web/API/Canvas_API/Tutorial/Трансформации")}}
        diff --git a/files/ru/web/api/crypto/getrandomvalues/index.html b/files/ru/web/api/crypto/getrandomvalues/index.html index c59f5dde54..20f900e9bb 100644 --- a/files/ru/web/api/crypto/getrandomvalues/index.html +++ b/files/ru/web/api/crypto/getrandomvalues/index.html @@ -1,12 +1,13 @@ --- title: RandomSource.getRandomValues() -slug: Web/API/RandomSource/getRandomValues +slug: Web/API/Crypto/getRandomValues tags: - АПИ - Криптография - Справка - метод translation_of: Web/API/Crypto/getRandomValues +original_slug: Web/API/RandomSource/getRandomValues ---

        {{APIRef("Web Crypto API")}}

        diff --git a/files/ru/web/api/css_object_model/managing_screen_orientation/index.html b/files/ru/web/api/css_object_model/managing_screen_orientation/index.html index a6b16cba4a..198fae2acb 100644 --- a/files/ru/web/api/css_object_model/managing_screen_orientation/index.html +++ b/files/ru/web/api/css_object_model/managing_screen_orientation/index.html @@ -1,11 +1,12 @@ --- title: Разбираемся с ориентацией экрана -slug: Web/API/CSS_Object_Model/ориентация_экрана +slug: Web/API/CSS_Object_Model/Managing_screen_orientation tags: - Ориентация экрана - Положение экрана - Руководство translation_of: Web/API/CSS_Object_Model/Managing_screen_orientation +original_slug: Web/API/CSS_Object_Model/ориентация_экрана ---

        {{DefaultAPISidebar("Screen Orientation API")}}{{SeeCompatTable}}

        diff --git a/files/ru/web/api/document/createelement/index.html b/files/ru/web/api/document/createelement/index.html index 15542d751d..f233ecf007 100644 --- a/files/ru/web/api/document/createelement/index.html +++ b/files/ru/web/api/document/createelement/index.html @@ -1,10 +1,11 @@ --- title: document.createElement -slug: DOM/document.createElement +slug: Web/API/Document/createElement tags: - DOM - Gecko translation_of: Web/API/Document/createElement +original_slug: DOM/document.createElement ---

        {{ ApiRef() }}

        diff --git a/files/ru/web/api/document/images/index.html b/files/ru/web/api/document/images/index.html index c9ba4ac1e2..420dd40024 100644 --- a/files/ru/web/api/document/images/index.html +++ b/files/ru/web/api/document/images/index.html @@ -1,10 +1,11 @@ --- title: document.images -slug: DOM/document.images +slug: Web/API/Document/images tags: - DOM - JavaScript translation_of: Web/API/Document/images +original_slug: DOM/document.images ---

        {{ ApiRef() }}

        Кратко об обьекте

        diff --git a/files/ru/web/api/document/readystatechange_event/index.html b/files/ru/web/api/document/readystatechange_event/index.html index 5a268b033f..70ea3f778a 100644 --- a/files/ru/web/api/document/readystatechange_event/index.html +++ b/files/ru/web/api/document/readystatechange_event/index.html @@ -1,9 +1,10 @@ --- title: readystatechange -slug: Web/Events/readystatechange +slug: Web/API/Document/readystatechange_event tags: - события translation_of: Web/API/Document/readystatechange_event +original_slug: Web/Events/readystatechange ---

        {{ApiRef}}

        diff --git a/files/ru/web/api/document_object_model/events/index.html b/files/ru/web/api/document_object_model/events/index.html index eeadb57328..c5995b792e 100644 --- a/files/ru/web/api/document_object_model/events/index.html +++ b/files/ru/web/api/document_object_model/events/index.html @@ -1,7 +1,8 @@ --- title: Events and the DOM -slug: DOM/DOM_Reference/Events +slug: Web/API/Document_Object_Model/Events translation_of: Web/API/Document_Object_Model/Events +original_slug: DOM/DOM_Reference/Events ---

        Вступление

        diff --git a/files/ru/web/api/document_object_model/examples/index.html b/files/ru/web/api/document_object_model/examples/index.html index a3332f7585..b590dec1ae 100644 --- a/files/ru/web/api/document_object_model/examples/index.html +++ b/files/ru/web/api/document_object_model/examples/index.html @@ -1,7 +1,8 @@ --- title: Examples of web and XML development using the DOM -slug: DOM/DOM_Reference/Examples +slug: Web/API/Document_Object_Model/Examples translation_of: Web/API/Document_Object_Model/Examples +original_slug: DOM/DOM_Reference/Examples ---

        В этой главе представлены более длинные примеры разработки веб-сайтов и XML с использованием DOM. По возможности, примеры используют общие API, трюки и шаблоны в JavaScript для управления объектом документа.

        diff --git a/files/ru/web/api/document_object_model/index.html b/files/ru/web/api/document_object_model/index.html index db06b01dd8..a1546eb2a4 100644 --- a/files/ru/web/api/document_object_model/index.html +++ b/files/ru/web/api/document_object_model/index.html @@ -1,6 +1,6 @@ --- title: Руководство по DOM -slug: DOM/DOM_Reference +slug: Web/API/Document_Object_Model tags: - DOM - DOM Reference @@ -8,6 +8,7 @@ tags: - Intermediate - Руководство translation_of: Web/API/Document_Object_Model +original_slug: DOM/DOM_Reference ---

        Объектная Модель Документа (DOM) является программным интерфейсом для HTML, XML и SVG документов. Это обеспечивает структурированное представление документа (дерева), и определяет способ, по которому структура может быть доступна для программы, для изменения структуры документа, его стиля и содержания. DOM обеспечивает представление документа в виде структурированной группы узлов и объектов, которые имеют свойства и методы. По сути, она связывает веб -страницы со скриптами или языками программирования.

        diff --git a/files/ru/web/api/document_object_model/introduction/index.html b/files/ru/web/api/document_object_model/introduction/index.html index 3c02e5799f..9fa1a55cbc 100644 --- a/files/ru/web/api/document_object_model/introduction/index.html +++ b/files/ru/web/api/document_object_model/introduction/index.html @@ -1,9 +1,10 @@ --- title: Введение -slug: DOM/DOM_Reference/Введение +slug: Web/API/Document_Object_Model/Introduction tags: - DOM translation_of: Web/API/Document_Object_Model/Introduction +original_slug: DOM/DOM_Reference/Введение ---

        Этот раздел представляет краткое знакомство с Объектной Моделью Документа (DOM) - что такое DOM, каким образом предоставляются структуры HTML и XML документов, и как взаимодействовать с ними. Данный раздел содержит справочную информацию и примеры.

        diff --git a/files/ru/web/api/document_object_model/locating_dom_elements_using_selectors/index.html b/files/ru/web/api/document_object_model/locating_dom_elements_using_selectors/index.html index 73538e8616..0bdfd09bdc 100644 --- a/files/ru/web/api/document_object_model/locating_dom_elements_using_selectors/index.html +++ b/files/ru/web/api/document_object_model/locating_dom_elements_using_selectors/index.html @@ -1,7 +1,8 @@ --- title: Locating DOM elements using selectors -slug: DOM/DOM_Reference/Locating_DOM_elements_using_selectors +slug: Web/API/Document_object_model/Locating_DOM_elements_using_selectors translation_of: Web/API/Document_object_model/Locating_DOM_elements_using_selectors +original_slug: DOM/DOM_Reference/Locating_DOM_elements_using_selectors ---
        {{ gecko_minversion_header("1.9.1") }}
        diff --git a/files/ru/web/api/documentorshadowroot/activeelement/index.html b/files/ru/web/api/documentorshadowroot/activeelement/index.html index 71db5bc678..4261eee4e9 100644 --- a/files/ru/web/api/documentorshadowroot/activeelement/index.html +++ b/files/ru/web/api/documentorshadowroot/activeelement/index.html @@ -1,6 +1,6 @@ --- title: Document.activeElement -slug: Web/API/Document/activeElement +slug: Web/API/DocumentOrShadowRoot/activeElement tags: - API - Document @@ -9,6 +9,7 @@ tags: - Reference translation_of: Web/API/DocumentOrShadowRoot/activeElement translation_of_original: Web/API/Document/activeElement +original_slug: Web/API/Document/activeElement ---

        {{ ApiRef() }}

        diff --git a/files/ru/web/api/documentorshadowroot/getselection/index.html b/files/ru/web/api/documentorshadowroot/getselection/index.html index c57695e055..ce4007b2f3 100644 --- a/files/ru/web/api/documentorshadowroot/getselection/index.html +++ b/files/ru/web/api/documentorshadowroot/getselection/index.html @@ -1,8 +1,9 @@ --- title: Document.getSelection() -slug: Web/API/Document/getSelection +slug: Web/API/DocumentOrShadowRoot/getSelection translation_of: Web/API/DocumentOrShadowRoot/getSelection translation_of_original: Web/API/Document/getSelection +original_slug: Web/API/Document/getSelection ---

        {{APIRef("DOM")}}

        diff --git a/files/ru/web/api/element/blur_event/index.html b/files/ru/web/api/element/blur_event/index.html index a29fa0debc..3beea937a2 100644 --- a/files/ru/web/api/element/blur_event/index.html +++ b/files/ru/web/api/element/blur_event/index.html @@ -1,10 +1,11 @@ --- title: blur (event) -slug: Web/Events/blur +slug: Web/API/Element/blur_event tags: - DOM - DOM Events translation_of: Web/API/Element/blur_event +original_slug: Web/Events/blur ---

        Событие blur вызывается когда элемент теряет фокус. Главное отличие между этим событием и  focusout только в том что у последнего есть фаза всплытия.

        diff --git a/files/ru/web/api/element/error_event/index.html b/files/ru/web/api/element/error_event/index.html index 787fb9a4fa..716ebfef1d 100644 --- a/files/ru/web/api/element/error_event/index.html +++ b/files/ru/web/api/element/error_event/index.html @@ -1,6 +1,6 @@ --- title: error -slug: Web/Events/error +slug: Web/API/Element/error_event tags: - DOM - UI события @@ -13,6 +13,7 @@ tags: - аудио - события translation_of: Web/API/Element/error_event +original_slug: Web/Events/error ---

        Событие error возникает, когда произошла какая-либо ошибка. Точные обстоятельства могут быть различными, потому что события с этим именем используются множеством различных API.

        diff --git a/files/ru/web/api/element/focusin_event/index.html b/files/ru/web/api/element/focusin_event/index.html index 02f27b66fb..8a8b4f0608 100644 --- a/files/ru/web/api/element/focusin_event/index.html +++ b/files/ru/web/api/element/focusin_event/index.html @@ -1,7 +1,8 @@ --- title: focusin -slug: Web/Events/focusin +slug: Web/API/Element/focusin_event translation_of: Web/API/Element/focusin_event +original_slug: Web/Events/focusin ---

        Событие focusin срабатывает, когда элемент получает фокус. Главное отличие от focus в том, что последний не всплывает.

        diff --git a/files/ru/web/api/element/focusout_event/index.html b/files/ru/web/api/element/focusout_event/index.html index 742f52af03..38a4eed235 100644 --- a/files/ru/web/api/element/focusout_event/index.html +++ b/files/ru/web/api/element/focusout_event/index.html @@ -1,7 +1,8 @@ --- title: focusout -slug: Web/Events/focusout +slug: Web/API/Element/focusout_event translation_of: Web/API/Element/focusout_event +original_slug: Web/Events/focusout ---

        Событие focusout вызывается перед потерей элементом фокуса. Главное отличие между этим событием и blur в том, что у последнего нет фазы всплытия.

        diff --git a/files/ru/web/api/elementcssinlinestyle/style/index.html b/files/ru/web/api/elementcssinlinestyle/style/index.html index 683bfa1101..95f9209797 100644 --- a/files/ru/web/api/elementcssinlinestyle/style/index.html +++ b/files/ru/web/api/elementcssinlinestyle/style/index.html @@ -1,6 +1,6 @@ --- title: HTMLElement.style -slug: Web/API/HTMLElement/style +slug: Web/API/ElementCSSInlineStyle/style tags: - API - HTML DOM @@ -12,6 +12,7 @@ tags: - Свойство - Ссылки translation_of: Web/API/ElementCSSInlineStyle/style +original_slug: Web/API/HTMLElement/style ---

        Кратко

        diff --git a/files/ru/web/api/file_and_directory_entries_api/introduction/index.html b/files/ru/web/api/file_and_directory_entries_api/introduction/index.html index e5c76758c1..fba2cad5c7 100644 --- a/files/ru/web/api/file_and_directory_entries_api/introduction/index.html +++ b/files/ru/web/api/file_and_directory_entries_api/introduction/index.html @@ -1,7 +1,8 @@ --- title: Введение в API файлов и каталогов -slug: Web/API/File_and_Directory_Entries_API/Введение +slug: Web/API/File_and_Directory_Entries_API/Introduction translation_of: Web/API/File_and_Directory_Entries_API/Introduction +original_slug: Web/API/File_and_Directory_Entries_API/Введение ---
        {{DefaultAPISidebar("File System API")}}{{Non-standard_header}}
        diff --git a/files/ru/web/api/fullscreen_api/index.html b/files/ru/web/api/fullscreen_api/index.html index ad21d6d20e..74c429955a 100644 --- a/files/ru/web/api/fullscreen_api/index.html +++ b/files/ru/web/api/fullscreen_api/index.html @@ -1,7 +1,8 @@ --- title: Fullscreen API -slug: DOM/Using_fullscreen_mode +slug: Web/API/Fullscreen_API translation_of: Web/API/Fullscreen_API +original_slug: DOM/Using_fullscreen_mode ---
        {{DefaultAPISidebar("Fullscreen API")}}
        diff --git a/files/ru/web/api/geolocation_api/index.html b/files/ru/web/api/geolocation_api/index.html index 39847dedc5..3082794454 100644 --- a/files/ru/web/api/geolocation_api/index.html +++ b/files/ru/web/api/geolocation_api/index.html @@ -1,11 +1,12 @@ --- title: Использование геолокации -slug: Web/API/Geolocation/Using_geolocation +slug: Web/API/Geolocation_API tags: - Geolocation API - Guide - Intermediate translation_of: Web/API/Geolocation_API +original_slug: Web/API/Geolocation/Using_geolocation ---
        {{securecontext_header}}{{DefaultAPISidebar("Geolocation API")}}
        diff --git a/files/ru/web/api/geolocation_api/using_the_geolocation_api/index.html b/files/ru/web/api/geolocation_api/using_the_geolocation_api/index.html index 5fa1055292..c945a1ba55 100644 --- a/files/ru/web/api/geolocation_api/using_the_geolocation_api/index.html +++ b/files/ru/web/api/geolocation_api/using_the_geolocation_api/index.html @@ -1,11 +1,12 @@ --- title: Использование Geolocation API -slug: Web/API/Geolocation/Using_geolocation/Using_the_Geolocation_API +slug: Web/API/Geolocation_API/Using_the_Geolocation_API tags: - Geolocation API - Guide - Tutorial translation_of: Web/API/Geolocation_API/Using_the_Geolocation_API +original_slug: Web/API/Geolocation/Using_geolocation/Using_the_Geolocation_API ---
        {{securecontext_header}}{{DefaultAPISidebar("Geolocation API")}}
        diff --git a/files/ru/web/api/html_drag_and_drop_api/drag_operations/index.html b/files/ru/web/api/html_drag_and_drop_api/drag_operations/index.html index 2dcdb6babb..0841bc211b 100644 --- a/files/ru/web/api/html_drag_and_drop_api/drag_operations/index.html +++ b/files/ru/web/api/html_drag_and_drop_api/drag_operations/index.html @@ -1,7 +1,8 @@ --- title: Drag Operations -slug: Web/Guide/HTML/Drag_and_drop/Drag_operations +slug: Web/API/HTML_Drag_and_Drop_API/Drag_operations translation_of: Web/API/HTML_Drag_and_Drop_API/Drag_operations +original_slug: Web/Guide/HTML/Drag_and_drop/Drag_operations ---

        {{DefaultAPISidebar("HTML Drag and Drop API")}}

        diff --git a/files/ru/web/api/html_drag_and_drop_api/index.html b/files/ru/web/api/html_drag_and_drop_api/index.html index 86467501fd..1532a3573e 100644 --- a/files/ru/web/api/html_drag_and_drop_api/index.html +++ b/files/ru/web/api/html_drag_and_drop_api/index.html @@ -1,7 +1,8 @@ --- title: Drag and drop -slug: Web/Guide/HTML/Drag_and_drop +slug: Web/API/HTML_Drag_and_Drop_API translation_of: Web/API/HTML_Drag_and_Drop_API +original_slug: Web/Guide/HTML/Drag_and_drop ---

        Firefox и прочие приложения компании Mozilla имеют ряд возможностей для управления drag и drop. Это позволяет пользователю нажать и удерживая зажатой кнопку мыши над элементом, переместить его на другую позицию, отпустив кнопку мыши пользователь может оставить элемент на новой позиции. На протяжении всей операции перемещения полупрозрачное представление элемента следует за курсором мыши. Новая позиция элемента может располагаться в совершенно другом приложении. Веб сайты, и XUL приложения могут использовать эту функциональность для того, чтобы определить какие элементы страницы могут быть перемещены, а также определить элементы куда первые могут быть перемещены.

        diff --git a/files/ru/web/api/htmlaudioelement/audio/index.html b/files/ru/web/api/htmlaudioelement/audio/index.html index 4d9e39dfab..56fb80134f 100644 --- a/files/ru/web/api/htmlaudioelement/audio/index.html +++ b/files/ru/web/api/htmlaudioelement/audio/index.html @@ -1,9 +1,10 @@ --- title: Audio() -slug: Web/API/HTMLAudioElement/Audio() +slug: Web/API/HTMLAudioElement/Audio tags: - аудио translation_of: Web/API/HTMLAudioElement/Audio +original_slug: Web/API/HTMLAudioElement/Audio() ---

        {{APIRef("HTML DOM")}}

        diff --git a/files/ru/web/api/htmlelement/accesskey/index.html b/files/ru/web/api/htmlelement/accesskey/index.html index 0230ecc9e0..01b872003b 100644 --- a/files/ru/web/api/htmlelement/accesskey/index.html +++ b/files/ru/web/api/htmlelement/accesskey/index.html @@ -1,8 +1,9 @@ --- title: Element.accessKey -slug: Web/API/Element/accessKey +slug: Web/API/HTMLElement/accessKey translation_of: Web/API/HTMLElement/accessKey translation_of_original: Web/API/Element/accessKey +original_slug: Web/API/Element/accessKey ---
        {{APIRef("DOM")}}
        diff --git a/files/ru/web/api/htmlelement/innertext/index.html b/files/ru/web/api/htmlelement/innertext/index.html index ef23b48d59..cb530097c2 100644 --- a/files/ru/web/api/htmlelement/innertext/index.html +++ b/files/ru/web/api/htmlelement/innertext/index.html @@ -1,7 +1,8 @@ --- title: Node.innerText -slug: Web/API/Node/innerText +slug: Web/API/HTMLElement/innerText translation_of: Web/API/HTMLElement/innerText +original_slug: Web/API/Node/innerText ---
        {{APIRef("DOM")}}
        diff --git a/files/ru/web/api/htmlelement/transitionend_event/index.html b/files/ru/web/api/htmlelement/transitionend_event/index.html index dfb8542da6..898af024d0 100644 --- a/files/ru/web/api/htmlelement/transitionend_event/index.html +++ b/files/ru/web/api/htmlelement/transitionend_event/index.html @@ -1,9 +1,10 @@ --- title: transitionend -slug: Web/Events/transitionend +slug: Web/API/HTMLElement/transitionend_event tags: - CSS translation_of: Web/API/HTMLElement/transitionend_event +original_slug: Web/Events/transitionend ---

        Событие transitionend срабатывает, когда CSS transition закончил свое выполнение. В случае, когда анимация удаляется до ее завершения(например, если transition-property [en-US] удаляется), то событие не срабатывает.

        diff --git a/files/ru/web/api/htmlmediaelement/seeking_event/index.html b/files/ru/web/api/htmlmediaelement/seeking_event/index.html index 5802aecadb..145c72b01b 100644 --- a/files/ru/web/api/htmlmediaelement/seeking_event/index.html +++ b/files/ru/web/api/htmlmediaelement/seeking_event/index.html @@ -1,7 +1,8 @@ --- title: стримится -slug: Web/HTML/Element/video/seeking_event +slug: Web/API/HTMLMediaElement/seeking_event translation_of: Web/API/HTMLMediaElement/seeking_event +original_slug: Web/HTML/Element/video/seeking_event ---

        Событие 'seeking' в случае, когда идет подгрузка видео

        diff --git a/files/ru/web/api/htmlorforeignelement/dataset/index.html b/files/ru/web/api/htmlorforeignelement/dataset/index.html index 328b265afa..f69b78492a 100644 --- a/files/ru/web/api/htmlorforeignelement/dataset/index.html +++ b/files/ru/web/api/htmlorforeignelement/dataset/index.html @@ -1,7 +1,8 @@ --- title: HTMLElement.dataset -slug: Web/API/HTMLElement/dataset +slug: Web/API/HTMLOrForeignElement/dataset translation_of: Web/API/HTMLOrForeignElement/dataset +original_slug: Web/API/HTMLElement/dataset ---

        {{ APIRef("HTML DOM") }}

        diff --git a/files/ru/web/api/htmlorforeignelement/nonce/index.html b/files/ru/web/api/htmlorforeignelement/nonce/index.html index e47f3aea23..497dd8a6be 100644 --- a/files/ru/web/api/htmlorforeignelement/nonce/index.html +++ b/files/ru/web/api/htmlorforeignelement/nonce/index.html @@ -1,7 +1,8 @@ --- title: HTMLElement.nonce -slug: Web/API/HTMLElement/nonce +slug: Web/API/HTMLOrForeignElement/nonce translation_of: Web/API/HTMLOrForeignElement/nonce +original_slug: Web/API/HTMLElement/nonce ---

        {{SeeCompatTable}}{{APIRef("HTML DOM")}}

        diff --git a/files/ru/web/api/htmlorforeignelement/tabindex/index.html b/files/ru/web/api/htmlorforeignelement/tabindex/index.html index fe41116fe4..5844679d21 100644 --- a/files/ru/web/api/htmlorforeignelement/tabindex/index.html +++ b/files/ru/web/api/htmlorforeignelement/tabindex/index.html @@ -1,7 +1,8 @@ --- title: HTMLElement.tabIndex -slug: Web/API/HTMLElement/tabIndex +slug: Web/API/HTMLOrForeignElement/tabIndex translation_of: Web/API/HTMLOrForeignElement/tabIndex +original_slug: Web/API/HTMLElement/tabIndex ---
        {{ APIRef("HTML DOM") }}
        diff --git a/files/ru/web/api/mediatrackconstraints/echocancellation/index.html b/files/ru/web/api/mediatrackconstraints/echocancellation/index.html index 3e8d1f1a4e..060a3d8b05 100644 --- a/files/ru/web/api/mediatrackconstraints/echocancellation/index.html +++ b/files/ru/web/api/mediatrackconstraints/echocancellation/index.html @@ -1,6 +1,6 @@ --- title: MediaTrackConstraints.echoCancellation -slug: Web/API/MediaTrackConstraints/Эхоподавление +slug: Web/API/MediaTrackConstraints/echoCancellation tags: - API - Media Capture and Streams API @@ -13,6 +13,7 @@ tags: - Эхоподавление - справочник translation_of: Web/API/MediaTrackConstraints/echoCancellation +original_slug: Web/API/MediaTrackConstraints/Эхоподавление ---
        {{APIRef("Media Capture and Streams")}}
        diff --git a/files/ru/web/api/navigator/connection/index.html b/files/ru/web/api/navigator/connection/index.html index 607101a911..76f086052f 100644 --- a/files/ru/web/api/navigator/connection/index.html +++ b/files/ru/web/api/navigator/connection/index.html @@ -1,7 +1,8 @@ --- title: NetworkInformation.connection -slug: Web/API/NetworkInformation/connection +slug: Web/API/Navigator/connection translation_of: Web/API/Navigator/connection +original_slug: Web/API/NetworkInformation/connection ---

        {{ apiref("Network Information API") }}

        diff --git a/files/ru/web/api/node/replacechild/index.html b/files/ru/web/api/node/replacechild/index.html index 6d69392c57..c1959cc322 100644 --- a/files/ru/web/api/node/replacechild/index.html +++ b/files/ru/web/api/node/replacechild/index.html @@ -1,6 +1,6 @@ --- title: Node.replaceChild -slug: Web/API/Node.replaceChild +slug: Web/API/Node/replaceChild tags: - API - DOM @@ -9,6 +9,7 @@ tags: - Method - Node translation_of: Web/API/Node/replaceChild +original_slug: Web/API/Node.replaceChild ---
        {{ApiRef}}
        diff --git a/files/ru/web/api/nondocumenttypechildnode/nextelementsibling/index.html b/files/ru/web/api/nondocumenttypechildnode/nextelementsibling/index.html index 84c40445d8..1e8d05c4c2 100644 --- a/files/ru/web/api/nondocumenttypechildnode/nextelementsibling/index.html +++ b/files/ru/web/api/nondocumenttypechildnode/nextelementsibling/index.html @@ -1,7 +1,8 @@ --- title: NonDocumentTypeChildNode.nextElementSibling -slug: Web/API/NonDocumentTypeChildNode/NonDocumentTypeChildNode.nextElementSibling +slug: Web/API/NonDocumentTypeChildNode/nextElementSibling translation_of: Web/API/NonDocumentTypeChildNode/nextElementSibling +original_slug: Web/API/NonDocumentTypeChildNode/NonDocumentTypeChildNode.nextElementSibling ---
        {{APIRef("DOM")}}
        diff --git a/files/ru/web/api/notation/index.html b/files/ru/web/api/notation/index.html index a1f468a55d..d0343162fa 100644 --- a/files/ru/web/api/notation/index.html +++ b/files/ru/web/api/notation/index.html @@ -1,9 +1,10 @@ --- title: Нотация -slug: Web/API/Нотация +slug: Web/API/Notation tags: - Нотация translation_of: Web/API/Notation +original_slug: Web/API/Нотация ---
        {{APIRef("DOM")}}{{draft}}{{obsolete_header}}
        diff --git a/files/ru/web/api/page_visibility_api/index.html b/files/ru/web/api/page_visibility_api/index.html index 9b181e92d1..9fc21bfaba 100644 --- a/files/ru/web/api/page_visibility_api/index.html +++ b/files/ru/web/api/page_visibility_api/index.html @@ -1,6 +1,6 @@ --- title: Видимость страницы API -slug: Web/API/Видимость_страницы_API +slug: Web/API/Page_Visibility_API tags: - API - DOM @@ -8,6 +8,7 @@ tags: - Показать страницу - Скрыть страницу translation_of: Web/API/Page_Visibility_API +original_slug: Web/API/Видимость_страницы_API ---
        {{DefaultAPISidebar("Page Visibility API")}}
        diff --git a/files/ru/web/api/web_workers_api/using_web_workers/index.html b/files/ru/web/api/web_workers_api/using_web_workers/index.html index 7503eccacb..8fd2faebd3 100644 --- a/files/ru/web/api/web_workers_api/using_web_workers/index.html +++ b/files/ru/web/api/web_workers_api/using_web_workers/index.html @@ -1,10 +1,11 @@ --- title: Использование Web Workers -slug: DOM/Using_web_workers +slug: Web/API/Web_Workers_API/Using_web_workers tags: - воркер - поток translation_of: Web/API/Web_Workers_API/Using_web_workers +original_slug: DOM/Using_web_workers ---
        {{DefaultAPISidebar("Web Workers API")}}
        diff --git a/files/ru/web/api/webgl_api/tutorial/creating_3d_objects_using_webgl/index.html b/files/ru/web/api/webgl_api/tutorial/creating_3d_objects_using_webgl/index.html index b5abccbe14..298613d533 100644 --- a/files/ru/web/api/webgl_api/tutorial/creating_3d_objects_using_webgl/index.html +++ b/files/ru/web/api/webgl_api/tutorial/creating_3d_objects_using_webgl/index.html @@ -1,10 +1,11 @@ --- title: Создание 3D объектов с помощью WebGL -slug: Web/API/WebGL_API/Tutorial/Создание_3D_объектов_с_помощью_WebGL +slug: Web/API/WebGL_API/Tutorial/Creating_3D_objects_using_WebGL tags: - WebGL - Урок translation_of: Web/API/WebGL_API/Tutorial/Creating_3D_objects_using_WebGL +original_slug: Web/API/WebGL_API/Tutorial/Создание_3D_объектов_с_помощью_WebGL ---

        {{WebGLSidebar("Tutorial")}} {{PreviousNext("Web/API/WebGL_API/Tutorial/Animating_objects_with_WebGL", "Web/API/WebGL_API/Tutorial/Using_textures_in_WebGL")}}

        diff --git a/files/ru/web/api/webrtc_api/connectivity/index.html b/files/ru/web/api/webrtc_api/connectivity/index.html index 7c4f173c05..375f486aaa 100644 --- a/files/ru/web/api/webrtc_api/connectivity/index.html +++ b/files/ru/web/api/webrtc_api/connectivity/index.html @@ -1,7 +1,8 @@ --- title: WebRTC подключение -slug: Web/API/WebRTC_API/связь +slug: Web/API/WebRTC_API/Connectivity translation_of: Web/API/WebRTC_API/Connectivity +original_slug: Web/API/WebRTC_API/связь ---

        {{WebRTCSidebar}}{{draft}}

        diff --git a/files/ru/web/api/webrtc_api/protocols/index.html b/files/ru/web/api/webrtc_api/protocols/index.html index df618ab083..5d2fab37d9 100644 --- a/files/ru/web/api/webrtc_api/protocols/index.html +++ b/files/ru/web/api/webrtc_api/protocols/index.html @@ -1,7 +1,8 @@ --- title: Введение в протоколы WebRTC -slug: Web/API/WebRTC_API/протоколы +slug: Web/API/WebRTC_API/Protocols translation_of: Web/API/WebRTC_API/Protocols +original_slug: Web/API/WebRTC_API/протоколы ---

        {{APIRef("WebRTC")}}{{draft}}

        diff --git a/files/ru/web/api/websockets_api/index.html b/files/ru/web/api/websockets_api/index.html index 8e6c614a0b..071d8b9a49 100644 --- a/files/ru/web/api/websockets_api/index.html +++ b/files/ru/web/api/websockets_api/index.html @@ -1,6 +1,6 @@ --- title: WebSockets -slug: WebSockets +slug: Web/API/WebSockets_API tags: - NeedsBrowserCompatibility - NeedsTranslation @@ -8,6 +8,7 @@ tags: - TopicStub - WebSockets translation_of: Web/API/WebSockets_API +original_slug: WebSockets ---

        Вебсокеты это продвинутая технология, позволяющая открыть постоянное двунаправленное сетевое соединение между браузером пользователя и сервером. С помощью его API вы можете отправить сообщение на сервер и получить ответ без выполнения http запроса, причем этот процесс будет событийно-управляемым.

        diff --git a/files/ru/web/api/websockets_api/writing_websocket_client_applications/index.html b/files/ru/web/api/websockets_api/writing_websocket_client_applications/index.html index 5eaca515c2..73c9a28e62 100644 --- a/files/ru/web/api/websockets_api/writing_websocket_client_applications/index.html +++ b/files/ru/web/api/websockets_api/writing_websocket_client_applications/index.html @@ -1,7 +1,8 @@ --- title: Написание клиентских приложений с помощью вебсокетов -slug: WebSockets/Writing_WebSocket_client_applications +slug: Web/API/WebSockets_API/Writing_WebSocket_client_applications translation_of: Web/API/WebSockets_API/Writing_WebSocket_client_applications +original_slug: WebSockets/Writing_WebSocket_client_applications ---

        {{ draft() }}

        diff --git a/files/ru/web/api/window/domcontentloaded_event/index.html b/files/ru/web/api/window/domcontentloaded_event/index.html index 7702dcfd24..8531476a12 100644 --- a/files/ru/web/api/window/domcontentloaded_event/index.html +++ b/files/ru/web/api/window/domcontentloaded_event/index.html @@ -1,9 +1,10 @@ --- title: DOMContentLoaded -slug: Web/Events/DOMContentLoaded +slug: Web/API/Window/DOMContentLoaded_event tags: - события translation_of: Web/API/Window/DOMContentLoaded_event +original_slug: Web/Events/DOMContentLoaded ---

        Событие DOMContentLoaded происходит когда весь HTML был полностью загружен и пройден парсером, не дожидаясь окончания загрузки таблиц стилей, изображений и фреймов. Значительно отличающееся от него событие load используется для отслеживания только полностью загруженной страницы. Широко распространённой ошибкой является использование load в ситуации когда DOMContentLoaded является более подходящим, будьте внимательны.

        diff --git a/files/ru/web/api/window/load_event/index.html b/files/ru/web/api/window/load_event/index.html index a8d456806d..1574cedf21 100644 --- a/files/ru/web/api/window/load_event/index.html +++ b/files/ru/web/api/window/load_event/index.html @@ -1,7 +1,8 @@ --- title: load -slug: Web/Events/load +slug: Web/API/Window/load_event translation_of: Web/API/Window/load_event +original_slug: Web/Events/load ---

        Событие load происходит когда ресурс и его зависимые ресурсы закончили загружаться.

        diff --git a/files/ru/web/api/window/requestanimationframe/index.html b/files/ru/web/api/window/requestanimationframe/index.html index d451cae62f..48d694a584 100644 --- a/files/ru/web/api/window/requestanimationframe/index.html +++ b/files/ru/web/api/window/requestanimationframe/index.html @@ -1,9 +1,10 @@ --- title: window.requestAnimationFrame() -slug: DOM/window.requestAnimationFrame +slug: Web/API/window/requestAnimationFrame tags: - Анимация translation_of: Web/API/window/requestAnimationFrame +original_slug: DOM/window.requestAnimationFrame ---
        {{APIRef}}
        diff --git a/files/ru/web/api/window/unhandledrejection_event/index.html b/files/ru/web/api/window/unhandledrejection_event/index.html index 5248e75748..c32838dc9c 100644 --- a/files/ru/web/api/window/unhandledrejection_event/index.html +++ b/files/ru/web/api/window/unhandledrejection_event/index.html @@ -1,7 +1,8 @@ --- title: unhandledrejection -slug: Web/Events/unhandledrejection +slug: Web/API/Window/unhandledrejection_event translation_of: Web/API/Window/unhandledrejection_event +original_slug: Web/Events/unhandledrejection ---

        Событие unhandledrejection происходит, когда {{jsxref("Promise")}} завершен с ошибкой, но на данную ошибку не установлен обработчик.

        diff --git a/files/ru/web/api/windoworworkerglobalscope/btoa/index.html b/files/ru/web/api/windoworworkerglobalscope/btoa/index.html index 06b76a6304..dd19e4cc27 100644 --- a/files/ru/web/api/windoworworkerglobalscope/btoa/index.html +++ b/files/ru/web/api/windoworworkerglobalscope/btoa/index.html @@ -1,7 +1,8 @@ --- title: WindowBase64.btoa() -slug: Web/API/WindowBase64/btoa +slug: Web/API/WindowOrWorkerGlobalScope/btoa translation_of: Web/API/WindowOrWorkerGlobalScope/btoa +original_slug: Web/API/WindowBase64/btoa ---
        {{APIRef("HTML DOM")}}
        diff --git a/files/ru/web/api/windoworworkerglobalscope/settimeout/index.html b/files/ru/web/api/windoworworkerglobalscope/settimeout/index.html index 9e39020215..8fb8144b50 100644 --- a/files/ru/web/api/windoworworkerglobalscope/settimeout/index.html +++ b/files/ru/web/api/windoworworkerglobalscope/settimeout/index.html @@ -1,7 +1,8 @@ --- title: WindowTimers.setTimeout() -slug: Web/API/WindowTimers/setTimeout +slug: Web/API/WindowOrWorkerGlobalScope/setTimeout translation_of: Web/API/WindowOrWorkerGlobalScope/setTimeout +original_slug: Web/API/WindowTimers/setTimeout ---
        {{ APIRef() }}
        diff --git a/files/ru/web/api/xmldocument/async/index.html b/files/ru/web/api/xmldocument/async/index.html index 2ff21f28af..73e02f4142 100644 --- a/files/ru/web/api/xmldocument/async/index.html +++ b/files/ru/web/api/xmldocument/async/index.html @@ -1,7 +1,8 @@ --- title: Document.async -slug: Web/API/Document/async +slug: Web/API/XMLDocument/async translation_of: Web/API/XMLDocument/async +original_slug: Web/API/Document/async ---

        {{APIRef("DOM")}}{{Deprecated_header}} {{Non-standard_header}}

        diff --git a/files/ru/web/api/xmlhttprequest/loadstart_event/index.html b/files/ru/web/api/xmlhttprequest/loadstart_event/index.html index b725b05b30..4065e0f968 100644 --- a/files/ru/web/api/xmlhttprequest/loadstart_event/index.html +++ b/files/ru/web/api/xmlhttprequest/loadstart_event/index.html @@ -1,7 +1,8 @@ --- title: loadstart -slug: Web/Events/loadstart +slug: Web/API/XMLHttpRequest/loadstart_event translation_of: Web/API/XMLHttpRequest/loadstart_event +original_slug: Web/Events/loadstart ---

        Событие loadstart происходит, когда начинается загрузка.

        diff --git a/files/ru/web/css/actual_value/index.html b/files/ru/web/css/actual_value/index.html index da6231da1f..10d233d98f 100644 --- a/files/ru/web/css/actual_value/index.html +++ b/files/ru/web/css/actual_value/index.html @@ -1,11 +1,12 @@ --- title: Действительное значение -slug: Web/CSS/Действительное_значение +slug: Web/CSS/actual_value tags: - CSS - Guide - Web translation_of: Web/CSS/actual_value +original_slug: Web/CSS/Действительное_значение ---

        {{CSSRef}}

        diff --git a/files/ru/web/css/comments/index.html b/files/ru/web/css/comments/index.html index 1db7dd50b5..cdc6eff0c0 100644 --- a/files/ru/web/css/comments/index.html +++ b/files/ru/web/css/comments/index.html @@ -1,6 +1,6 @@ --- title: Комментарии -slug: Web/CSS/Тихий +slug: Web/CSS/Comments tags: - Beginner - CSS @@ -9,6 +9,7 @@ tags: - Новичку - Руководство translation_of: Web/CSS/Comments +original_slug: Web/CSS/Тихий ---
        {{CSSRef}}
        diff --git a/files/ru/web/css/css_animations/using_css_animations/index.html b/files/ru/web/css/css_animations/using_css_animations/index.html index 05f6cb5cec..36aa62c5ac 100644 --- a/files/ru/web/css/css_animations/using_css_animations/index.html +++ b/files/ru/web/css/css_animations/using_css_animations/index.html @@ -1,6 +1,6 @@ --- title: Использование CSS-анимации -slug: Web/CSS/CSS_Animations/Ispolzovanie_CSS_animatciy +slug: Web/CSS/CSS_Animations/Using_CSS_animations tags: - Advanced - CSS @@ -9,6 +9,7 @@ tags: - Experimental - Guide translation_of: Web/CSS/CSS_Animations/Using_CSS_animations +original_slug: Web/CSS/CSS_Animations/Ispolzovanie_CSS_animatciy ---

        {{SeeCompatTable}}{{CSSRef}}

        diff --git a/files/ru/web/css/css_background_and_borders/border-radius_generator/index.html b/files/ru/web/css/css_background_and_borders/border-radius_generator/index.html index 71f94831f0..0dbb391c06 100644 --- a/files/ru/web/css/css_background_and_borders/border-radius_generator/index.html +++ b/files/ru/web/css/css_background_and_borders/border-radius_generator/index.html @@ -1,7 +1,8 @@ --- title: Border-radius генератор -slug: Web/CSS/CSS_Background_and_Borders/Border-radius_генератор +slug: Web/CSS/CSS_Background_and_Borders/Border-radius_generator translation_of: Web/CSS/CSS_Background_and_Borders/Border-radius_generator +original_slug: Web/CSS/CSS_Background_and_Borders/Border-radius_генератор ---

        С помощью этого инструмента вы можете создать CSS3 {{cssxref("border-radius")}} эффекты.

        diff --git a/files/ru/web/css/css_background_and_borders/box-shadow_generator/index.html b/files/ru/web/css/css_background_and_borders/box-shadow_generator/index.html index 3f46cf53ba..a26dbc165d 100644 --- a/files/ru/web/css/css_background_and_borders/box-shadow_generator/index.html +++ b/files/ru/web/css/css_background_and_borders/box-shadow_generator/index.html @@ -1,11 +1,12 @@ --- title: Генератор теней -slug: Web/CSS/CSS_Box_Model/Box-shadow_generator +slug: Web/CSS/CSS_Background_and_Borders/Box-shadow_generator tags: - CSS3 - Тень - инструменты translation_of: Web/CSS/CSS_Background_and_Borders/Box-shadow_generator +original_slug: Web/CSS/CSS_Box_Model/Box-shadow_generator ---

        Этот инструмент позволяет вам создавать CSS {{cssxref("box-shadow")}} эффекты, добавлять тени вашим элементам.

        diff --git a/files/ru/web/css/css_backgrounds_and_borders/index.html b/files/ru/web/css/css_backgrounds_and_borders/index.html index 59c2117194..3c843d9d45 100644 --- a/files/ru/web/css/css_backgrounds_and_borders/index.html +++ b/files/ru/web/css/css_backgrounds_and_borders/index.html @@ -1,6 +1,6 @@ --- title: CSS Background and Borders -slug: Web/CSS/CSS_Background_and_Borders +slug: Web/CSS/CSS_Backgrounds_and_Borders tags: - CSS - CSS Backgrounds and Borders @@ -10,6 +10,7 @@ tags: - TopicStub translation_of: Web/CSS/CSS_Backgrounds_and_Borders translation_of_original: Web/CSS/CSS_Background_and_Borders +original_slug: Web/CSS/CSS_Background_and_Borders ---

        {{CSSRef}}

        diff --git a/files/ru/web/css/css_backgrounds_and_borders/using_multiple_backgrounds/index.html b/files/ru/web/css/css_backgrounds_and_borders/using_multiple_backgrounds/index.html index 231c794702..dc2ba0d32f 100644 --- a/files/ru/web/css/css_backgrounds_and_borders/using_multiple_backgrounds/index.html +++ b/files/ru/web/css/css_backgrounds_and_borders/using_multiple_backgrounds/index.html @@ -1,8 +1,9 @@ --- title: Множественные фоны -slug: Web/CSS/CSS_Background_and_Borders/Множественные_фоны +slug: Web/CSS/CSS_Backgrounds_and_Borders/Using_multiple_backgrounds translation_of: Web/CSS/CSS_Backgrounds_and_Borders/Using_multiple_backgrounds translation_of_original: Web/CSS/CSS_Background_and_Borders/Using_CSS_multiple_backgrounds +original_slug: Web/CSS/CSS_Background_and_Borders/Множественные_фоны ---

        {{CSSRef}}

        diff --git a/files/ru/web/css/css_basic_user_interface/using_url_values_for_the_cursor_property/index.html b/files/ru/web/css/css_basic_user_interface/using_url_values_for_the_cursor_property/index.html index c629b7bffd..9b133d5a73 100644 --- a/files/ru/web/css/css_basic_user_interface/using_url_values_for_the_cursor_property/index.html +++ b/files/ru/web/css/css_basic_user_interface/using_url_values_for_the_cursor_property/index.html @@ -1,13 +1,14 @@ --- title: Использование URL значений для свойства cursor -slug: >- - Web/CSS/CSS_Basic_User_Interface/Использование_URL_значений_для_свойства_cursor +slug: Web/CSS/CSS_Basic_User_Interface/Using_URL_values_for_the_cursor_property tags: - CSS - Gecko - Справка - справочник translation_of: Web/CSS/CSS_Basic_User_Interface/Using_URL_values_for_the_cursor_property +original_slug: >- + Web/CSS/CSS_Basic_User_Interface/Использование_URL_значений_для_свойства_cursor ---
        {{cssref}}
        diff --git a/files/ru/web/css/css_box_model/introduction_to_the_css_box_model/index.html b/files/ru/web/css/css_box_model/introduction_to_the_css_box_model/index.html index 6868871c5a..1ad4642062 100644 --- a/files/ru/web/css/css_box_model/introduction_to_the_css_box_model/index.html +++ b/files/ru/web/css/css_box_model/introduction_to_the_css_box_model/index.html @@ -1,11 +1,12 @@ --- -title: 'Блоковая модель (боксовая модель, box model)' -slug: Web/CSS/box_model +title: Блоковая модель (боксовая модель, box model) +slug: Web/CSS/CSS_Box_Model/Introduction_to_the_CSS_box_model tags: - CSS - Guide - Веб translation_of: Web/CSS/CSS_Box_Model/Introduction_to_the_CSS_box_model +original_slug: Web/CSS/box_model ---

        Описание

        diff --git a/files/ru/web/css/css_color/index.html b/files/ru/web/css/css_color/index.html index c6225aec39..18417802f5 100644 --- a/files/ru/web/css/css_color/index.html +++ b/files/ru/web/css/css_color/index.html @@ -1,12 +1,13 @@ --- title: CSS Colors -slug: Web/CSS/CSS_Colors +slug: Web/CSS/CSS_Color tags: - CSS - Цвета - Цвета в CSS translation_of: Web/CSS/CSS_Color translation_of_original: Web/CSS/CSS_Colors +original_slug: Web/CSS/CSS_Colors ---
        {{CSSRef}}
        diff --git a/files/ru/web/css/css_columns/using_multi-column_layouts/index.html b/files/ru/web/css/css_columns/using_multi-column_layouts/index.html index 65e96fcdcf..f9fb1c78d5 100644 --- a/files/ru/web/css/css_columns/using_multi-column_layouts/index.html +++ b/files/ru/web/css/css_columns/using_multi-column_layouts/index.html @@ -1,7 +1,8 @@ --- title: Использование CSS разметки для многих колонок -slug: Web/Guide/CSS/Using_multi-column_layouts +slug: Web/CSS/CSS_Columns/Using_multi-column_layouts translation_of: Web/CSS/CSS_Columns/Using_multi-column_layouts +original_slug: Web/Guide/CSS/Using_multi-column_layouts ---

        {{CSSRef("CSS Multi-columns")}}

        diff --git a/files/ru/web/css/css_flexible_box_layout/aligning_items_in_a_flex_container/index.html b/files/ru/web/css/css_flexible_box_layout/aligning_items_in_a_flex_container/index.html index 9fe0b2932f..e28dc11693 100644 --- a/files/ru/web/css/css_flexible_box_layout/aligning_items_in_a_flex_container/index.html +++ b/files/ru/web/css/css_flexible_box_layout/aligning_items_in_a_flex_container/index.html @@ -1,7 +1,8 @@ --- title: Выравнивание элементов во Flex контейнере -slug: Web/CSS/CSS_Flexible_Box_Layout/Выравнивание_элементов_в_Flex_контейнере +slug: Web/CSS/CSS_Flexible_Box_Layout/Aligning_Items_in_a_Flex_Container translation_of: Web/CSS/CSS_Flexible_Box_Layout/Aligning_Items_in_a_Flex_Container +original_slug: Web/CSS/CSS_Flexible_Box_Layout/Выравнивание_элементов_в_Flex_контейнере ---

        {{CSSRef}}

        diff --git a/files/ru/web/css/css_flexible_box_layout/controlling_ratios_of_flex_items_along_the_main_ax/index.html b/files/ru/web/css/css_flexible_box_layout/controlling_ratios_of_flex_items_along_the_main_ax/index.html index 97e521c2e1..7f0dc50bf1 100644 --- a/files/ru/web/css/css_flexible_box_layout/controlling_ratios_of_flex_items_along_the_main_ax/index.html +++ b/files/ru/web/css/css_flexible_box_layout/controlling_ratios_of_flex_items_along_the_main_ax/index.html @@ -1,9 +1,11 @@ --- title: Управление соотношением элементов вдоль главной оси slug: >- - Web/CSS/CSS_Flexible_Box_Layout/Контролирование_соотношения_элементов_вдоль_главной_оси + Web/CSS/CSS_Flexible_Box_Layout/Controlling_Ratios_of_Flex_Items_Along_the_Main_Ax translation_of: >- Web/CSS/CSS_Flexible_Box_Layout/Controlling_Ratios_of_Flex_Items_Along_the_Main_Ax +original_slug: >- + Web/CSS/CSS_Flexible_Box_Layout/Контролирование_соотношения_элементов_вдоль_главной_оси ---
        {{CSSRef}}
        diff --git a/files/ru/web/css/css_flow_layout/block_and_inline_layout_in_normal_flow/index.html b/files/ru/web/css/css_flow_layout/block_and_inline_layout_in_normal_flow/index.html index 86879d343e..48b0353176 100644 --- a/files/ru/web/css/css_flow_layout/block_and_inline_layout_in_normal_flow/index.html +++ b/files/ru/web/css/css_flow_layout/block_and_inline_layout_in_normal_flow/index.html @@ -1,6 +1,6 @@ --- title: Блочное и строчное расположение в нормальном потоке -slug: Web/CSS/CSS_Flow_Layout/Блочное_и_строчное_размещение_в_нормальном_потоке +slug: Web/CSS/CSS_Flow_Layout/Block_and_Inline_Layout_in_Normal_Flow tags: - CSS - Макет @@ -10,6 +10,7 @@ tags: - Средний уровень - поток translation_of: Web/CSS/CSS_Flow_Layout/Block_and_Inline_Layout_in_Normal_Flow +original_slug: Web/CSS/CSS_Flow_Layout/Блочное_и_строчное_размещение_в_нормальном_потоке ---
        {{CSSRef}}
        diff --git a/files/ru/web/css/css_flow_layout/intro_to_formatting_contexts/index.html b/files/ru/web/css/css_flow_layout/intro_to_formatting_contexts/index.html index c027e8eb3b..aed2f568ec 100644 --- a/files/ru/web/css/css_flow_layout/intro_to_formatting_contexts/index.html +++ b/files/ru/web/css/css_flow_layout/intro_to_formatting_contexts/index.html @@ -1,7 +1,8 @@ --- title: Введение в контексты форматирования -slug: Web/CSS/CSS_Flow_Layout/Введение_в_контексты_форматирования +slug: Web/CSS/CSS_Flow_Layout/Intro_to_formatting_contexts translation_of: Web/CSS/CSS_Flow_Layout/Intro_to_formatting_contexts +original_slug: Web/CSS/CSS_Flow_Layout/Введение_в_контексты_форматирования ---
        {{CSSRef}}
        diff --git a/files/ru/web/css/css_grid_layout/css_grid_logical_values_and_writing_modes/index.html b/files/ru/web/css/css_grid_layout/css_grid_logical_values_and_writing_modes/index.html index 48eec35abe..a481d519ad 100644 --- a/files/ru/web/css/css_grid_layout/css_grid_logical_values_and_writing_modes/index.html +++ b/files/ru/web/css/css_grid_layout/css_grid_logical_values_and_writing_modes/index.html @@ -1,7 +1,8 @@ --- -title: 'CSS grids, logical values and writing modes' -slug: 'Web/CSS/CSS_Grid_Layout/CSS_Grid,_Logical_Values_and_Writing_Modes' -translation_of: 'Web/CSS/CSS_Grid_Layout/CSS_Grid,_Logical_Values_and_Writing_Modes' +title: CSS grids, logical values and writing modes +slug: Web/CSS/CSS_Grid_Layout/CSS_Grid_Logical_Values_and_Writing_Modes +translation_of: Web/CSS/CSS_Grid_Layout/CSS_Grid,_Logical_Values_and_Writing_Modes +original_slug: Web/CSS/CSS_Grid_Layout/CSS_Grid,_Logical_Values_and_Writing_Modes ---

        В этих руководствах я уже затронул важную особенность grid layout: поддержка различных режимов записи, встроенных в спецификацию. В этом руководстве мы рассмотрим эту особенность grid и других современных методов компоновки, немного узнав о режимах записи и логических и физических свойствах, когда мы это делаем.

        diff --git a/files/ru/web/css/css_grid_layout/grid_template_areas/index.html b/files/ru/web/css/css_grid_layout/grid_template_areas/index.html index 6d2d3b6892..87da484318 100644 --- a/files/ru/web/css/css_grid_layout/grid_template_areas/index.html +++ b/files/ru/web/css/css_grid_layout/grid_template_areas/index.html @@ -1,7 +1,8 @@ --- title: Шаблоны грид-областей -slug: Web/CSS/CSS_Grid_Layout/Грид-области +slug: Web/CSS/CSS_Grid_Layout/Grid_Template_Areas translation_of: Web/CSS/CSS_Grid_Layout/Grid_Template_Areas +original_slug: Web/CSS/CSS_Grid_Layout/Грид-области ---

        В предыдущем обзоре мы рассмотрели грид-линии и то, как с их помощью размещать элементы в гридах. Когда Вы работаете с CSS Grid Layout, у Вас всегда есть грид-линии, поэтому они - быстрый, прямой и надежный способ расположить элементы. Как бы то ни было, существует альтернативный метод, и этот метод можно использовать как в одиночку, так и в сочетании с расположением элементов по грид-линиям. В этом методе элементы располагаются с помощью именнованных, заранее определенных грид-областей. Давайте рассмотрим, как он работает, и Вы скоро поймете, почему его называют методом ascii-искусства в концепции макетов на гридах!

        diff --git a/files/ru/web/css/css_grid_layout/line-based_placement_with_css_grid/index.html b/files/ru/web/css/css_grid_layout/line-based_placement_with_css_grid/index.html index e470a72ce7..be2ecaee2e 100644 --- a/files/ru/web/css/css_grid_layout/line-based_placement_with_css_grid/index.html +++ b/files/ru/web/css/css_grid_layout/line-based_placement_with_css_grid/index.html @@ -1,7 +1,6 @@ --- title: Расположение элементов по грид-линиям с помощью CSS Grid -slug: >- - Web/CSS/CSS_Grid_Layout/Расположение_элементов_по_грид-линиям_с_помощью_CSS_Grid +slug: Web/CSS/CSS_Grid_Layout/Line-based_Placement_with_CSS_Grid tags: - CSS - CSS Grid @@ -9,6 +8,8 @@ tags: - Руководство - Сетка translation_of: Web/CSS/CSS_Grid_Layout/Line-based_Placement_with_CSS_Grid +original_slug: >- + Web/CSS/CSS_Grid_Layout/Расположение_элементов_по_грид-линиям_с_помощью_CSS_Grid ---

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

        diff --git a/files/ru/web/css/css_positioning/understanding_z_index/adding_z-index/index.html b/files/ru/web/css/css_positioning/understanding_z_index/adding_z-index/index.html index 2fff1726d3..4f041d515f 100644 --- a/files/ru/web/css/css_positioning/understanding_z_index/adding_z-index/index.html +++ b/files/ru/web/css/css_positioning/understanding_z_index/adding_z-index/index.html @@ -1,7 +1,8 @@ --- title: Using z-index -slug: Web/Guide/CSS/Understanding_z_index/Adding_z-index +slug: Web/CSS/CSS_Positioning/Understanding_z_index/Adding_z-index translation_of: Web/CSS/CSS_Positioning/Understanding_z_index/Adding_z-index +original_slug: Web/Guide/CSS/Understanding_z_index/Adding_z-index ---
        {{cssref}}
        diff --git a/files/ru/web/css/css_positioning/understanding_z_index/index.html b/files/ru/web/css/css_positioning/understanding_z_index/index.html index 0074ff2577..8d5d965a23 100644 --- a/files/ru/web/css/css_positioning/understanding_z_index/index.html +++ b/files/ru/web/css/css_positioning/understanding_z_index/index.html @@ -1,6 +1,6 @@ --- title: Понимание CSS z-index -slug: Web/Guide/CSS/Understanding_z_index +slug: Web/CSS/CSS_Positioning/Understanding_z_index tags: - Advanced - CSS @@ -11,6 +11,7 @@ tags: - Web - z-index translation_of: Web/CSS/CSS_Positioning/Understanding_z_index +original_slug: Web/Guide/CSS/Understanding_z_index ---

        Обычно HTML страницы можно считать двухмерными, потому что текст, картинки и другие элементы расположены на странице без перекрытия. Существует единый нормальный поток отрисовки (rendering flow) и элементы избегают пространства, занятого другими.{{cssxref("z-index")}} атрибут позволяет регулировать порядок наложения объектов друг на друга в процессе отрисовки контента (rendering content).

        diff --git a/files/ru/web/css/css_positioning/understanding_z_index/stacking_without_z-index/index.html b/files/ru/web/css/css_positioning/understanding_z_index/stacking_without_z-index/index.html index 7f4eb09133..4ed7e1686d 100644 --- a/files/ru/web/css/css_positioning/understanding_z_index/stacking_without_z-index/index.html +++ b/files/ru/web/css/css_positioning/understanding_z_index/stacking_without_z-index/index.html @@ -1,10 +1,11 @@ --- title: Stacking without z-index -slug: Web/Guide/CSS/Understanding_z_index/Stacking_without_z-index +slug: Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_without_z-index tags: - CSS - z-index translation_of: Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_without_z-index +original_slug: Web/Guide/CSS/Understanding_z_index/Stacking_without_z-index ---

        « CSS « Понимание CSS z-index

        diff --git a/files/ru/web/css/css_selectors/index.html b/files/ru/web/css/css_selectors/index.html index 8745681718..f3c8f7dfa7 100644 --- a/files/ru/web/css/css_selectors/index.html +++ b/files/ru/web/css/css_selectors/index.html @@ -1,11 +1,12 @@ --- title: CSS-селекторы -slug: Web/CSS/CSS_Селекторы +slug: Web/CSS/CSS_Selectors tags: - CSS - Обзор - Селекторы translation_of: Web/CSS/CSS_Selectors +original_slug: Web/CSS/CSS_Селекторы ---
        {{CSSRef}}
        diff --git a/files/ru/web/css/css_selectors/using_the__colon_target_pseudo-class_in_selectors/index.html b/files/ru/web/css/css_selectors/using_the__colon_target_pseudo-class_in_selectors/index.html index f737d2cb6d..456e350fad 100644 --- a/files/ru/web/css/css_selectors/using_the__colon_target_pseudo-class_in_selectors/index.html +++ b/files/ru/web/css/css_selectors/using_the__colon_target_pseudo-class_in_selectors/index.html @@ -1,7 +1,8 @@ --- -title: 'Использование псевдокласса :target в селекторах' -slug: 'Web/CSS/CSS_Селекторы/Using_the_:target_pseudo-class_in_selectors' -translation_of: 'Web/CSS/CSS_Selectors/Using_the_:target_pseudo-class_in_selectors' +title: Использование псевдокласса :target в селекторах +slug: Web/CSS/CSS_Selectors/Using_the_:target_pseudo-class_in_selectors +translation_of: Web/CSS/CSS_Selectors/Using_the_:target_pseudo-class_in_selectors +original_slug: Web/CSS/CSS_Селекторы/Using_the_:target_pseudo-class_in_selectors ---
        {{CSSRef}}
        diff --git a/files/ru/web/css/layout_mode/index.html b/files/ru/web/css/layout_mode/index.html index dcf1440cb5..eed469409b 100644 --- a/files/ru/web/css/layout_mode/index.html +++ b/files/ru/web/css/layout_mode/index.html @@ -1,9 +1,10 @@ --- title: Способ разметки -slug: Web/CSS/Способ_расположения +slug: Web/CSS/Layout_mode tags: - CSS translation_of: Web/CSS/Layout_mode +original_slug: Web/CSS/Способ_расположения ---

        CSS способ разметки (или раскладки, или англ. layout) — это алгоритм определения позиции и размеров блоков, основанный на способе, которым они взаимодействуют с родственными блоками. Существует несколько типов разметки:

        diff --git a/files/ru/web/css/length/index.html b/files/ru/web/css/length/index.html index 4fd88f8cc2..287959e343 100644 --- a/files/ru/web/css/length/index.html +++ b/files/ru/web/css/length/index.html @@ -1,6 +1,6 @@ --- title: -slug: Web/CSS/размер +slug: Web/CSS/length tags: - CSS - CSS Тип Данных @@ -8,6 +8,7 @@ tags: - Разметка - длина translation_of: Web/CSS/length +original_slug: Web/CSS/размер ---
        {{CSSRef}}
        diff --git a/files/ru/web/css/media_queries/testing_media_queries/index.html b/files/ru/web/css/media_queries/testing_media_queries/index.html index 878621ebd3..d7f3f0cb76 100644 --- a/files/ru/web/css/media_queries/testing_media_queries/index.html +++ b/files/ru/web/css/media_queries/testing_media_queries/index.html @@ -1,10 +1,11 @@ --- title: Тестирование медиа-запросов программно -slug: Web/CSS/Media_Queries/Тестирование_медиа_запросы +slug: Web/CSS/Media_Queries/Testing_media_queries tags: - Запросы - медиа-запросы translation_of: Web/CSS/Media_Queries/Testing_media_queries +original_slug: Web/CSS/Media_Queries/Тестирование_медиа_запросы ---
        {{cssref}}
        diff --git a/files/ru/web/css/pseudo-classes/index.html b/files/ru/web/css/pseudo-classes/index.html index 2c280be32b..1b27fa85c5 100644 --- a/files/ru/web/css/pseudo-classes/index.html +++ b/files/ru/web/css/pseudo-classes/index.html @@ -1,12 +1,13 @@ --- title: Псевдоклассы -slug: Web/CSS/Псевдо-классы +slug: Web/CSS/Pseudo-classes tags: - CSS - Reference - Псевдоклассы - Селекторы translation_of: Web/CSS/Pseudo-classes +original_slug: Web/CSS/Псевдо-классы ---
        {{CSSRef}}
        diff --git a/files/ru/web/css/replaced_element/index.html b/files/ru/web/css/replaced_element/index.html index a252cbad33..d06bd6b9b9 100644 --- a/files/ru/web/css/replaced_element/index.html +++ b/files/ru/web/css/replaced_element/index.html @@ -1,11 +1,12 @@ --- title: Замещаемый элемент -slug: Web/CSS/Замещаемый_элемент +slug: Web/CSS/Replaced_element tags: - CSS - Reference - замещаемый элемент translation_of: Web/CSS/Replaced_element +original_slug: Web/CSS/Замещаемый_элемент ---
        {{CSSRef}}
        diff --git a/files/ru/web/css/specified_value/index.html b/files/ru/web/css/specified_value/index.html index 4f143afb74..7cc26d6db9 100644 --- a/files/ru/web/css/specified_value/index.html +++ b/files/ru/web/css/specified_value/index.html @@ -1,10 +1,11 @@ --- title: Указанное значение -slug: Web/CSS/Указанное_значение +slug: Web/CSS/specified_value tags: - CSS - CSS Reference translation_of: Web/CSS/specified_value +original_slug: Web/CSS/Указанное_значение ---

        {{CSSRef}}

        diff --git a/files/ru/web/css/syntax/index.html b/files/ru/web/css/syntax/index.html index 1adfb2fb04..d2db52f659 100644 --- a/files/ru/web/css/syntax/index.html +++ b/files/ru/web/css/syntax/index.html @@ -1,7 +1,8 @@ --- title: Синтаксис -slug: Web/CSS/Синтаксис +slug: Web/CSS/Syntax translation_of: Web/CSS/Syntax +original_slug: Web/CSS/Синтаксис ---
        {{cssref}}
        diff --git a/files/ru/web/css/visual_formatting_model/index.html b/files/ru/web/css/visual_formatting_model/index.html index 7a5de35909..b7cc6050f3 100644 --- a/files/ru/web/css/visual_formatting_model/index.html +++ b/files/ru/web/css/visual_formatting_model/index.html @@ -1,7 +1,8 @@ --- title: Модель визуального форматирования -slug: Web/Guide/CSS/Visual_formatting_model +slug: Web/CSS/Visual_formatting_model translation_of: Web/CSS/Visual_formatting_model +original_slug: Web/Guide/CSS/Visual_formatting_model ---

        {{CSSRef}}

        diff --git a/files/ru/web/guide/ajax/getting_started/index.html b/files/ru/web/guide/ajax/getting_started/index.html index e06b408228..ab99a986ce 100644 --- a/files/ru/web/guide/ajax/getting_started/index.html +++ b/files/ru/web/guide/ajax/getting_started/index.html @@ -1,9 +1,10 @@ --- title: С чего начать -slug: Web/Guide/AJAX/С_чего_начать +slug: Web/Guide/AJAX/Getting_Started tags: - AJAX translation_of: Web/Guide/AJAX/Getting_Started +original_slug: Web/Guide/AJAX/С_чего_начать ---

         

        diff --git a/files/ru/web/guide/events/creating_and_triggering_events/index.html b/files/ru/web/guide/events/creating_and_triggering_events/index.html index 9e7a8f099b..f766a93097 100644 --- a/files/ru/web/guide/events/creating_and_triggering_events/index.html +++ b/files/ru/web/guide/events/creating_and_triggering_events/index.html @@ -1,12 +1,13 @@ --- title: Создание и вызов событий -slug: Web/Guide/Events/Создание_и_вызов_событий +slug: Web/Guide/Events/Creating_and_triggering_events tags: - DOM - JavaScript - events - события translation_of: Web/Guide/Events/Creating_and_triggering_events +original_slug: Web/Guide/Events/Создание_и_вызов_событий ---

        Эта статья демонстрирует, как создавать и вызывать пользовательские DOM-события. Такие события часто называют исскуственными событиями, по отношению к событиям, производимым браузером.

        diff --git a/files/ru/web/guide/graphics/index.html b/files/ru/web/guide/graphics/index.html index 57dd4238e1..600c9cd4dd 100644 --- a/files/ru/web/guide/graphics/index.html +++ b/files/ru/web/guide/graphics/index.html @@ -1,7 +1,8 @@ --- title: Графика для Web -slug: Web/Guide/Графика +slug: Web/Guide/Graphics translation_of: Web/Guide/Graphics +original_slug: Web/Guide/Графика ---

        Современным веб-сайтам и веб-приложениям часто требуется отображать графику. Статические изображения легко отобразить с помощью элемента {{HTMLElement("img")}}, или с помощью CSS свойства  {{cssxref("background-image")}}. Часто требуется создавать графику на лету, или модифицировать ее каким-либо образом после. Как это проделать можно узнать в следующих статьях.

        diff --git a/files/ru/web/guide/html/html5/constraint_validation/index.html b/files/ru/web/guide/html/html5/constraint_validation/index.html index 5a5fccec8c..cad42baedb 100644 --- a/files/ru/web/guide/html/html5/constraint_validation/index.html +++ b/files/ru/web/guide/html/html5/constraint_validation/index.html @@ -1,9 +1,10 @@ --- title: Constraint validation -slug: HTML/HTML5/Constraint_validation +slug: Web/Guide/HTML/HTML5/Constraint_validation tags: - Селекторы translation_of: Web/Guide/HTML/HTML5/Constraint_validation +original_slug: HTML/HTML5/Constraint_validation ---

        Создание веб форм всегда было комплексной задачей. В то время как сама по себе разметка формы - задача не сложная, проверка каждого поля на валидность - сложнее, а информирование юзера о проблеме - может стать головной болью. Стандарт HTML5 предоставил новые механизмы для форм: были добавлены новые семантические типы для элемента {{ HTMLElement("input") }} и обязательная валидация, чтобы облегчить работу по проверке содержимого формы на стороне браузера. Проще говоря, обычная проверка может быть выполнена без JavaScript, простой установкой новых аттрибутов; более сложные ограничения могут быть реализованы через HTML5 Constraint Validation API.

        diff --git a/files/ru/web/guide/html/html5/index.html b/files/ru/web/guide/html/html5/index.html index dca2e39993..a090f00d95 100644 --- a/files/ru/web/guide/html/html5/index.html +++ b/files/ru/web/guide/html/html5/index.html @@ -1,9 +1,10 @@ --- title: HTML5 -slug: HTML/HTML5 +slug: Web/Guide/HTML/HTML5 tags: - HTML5 translation_of: Web/Guide/HTML/HTML5 +original_slug: HTML/HTML5 ---

        HTML5 — последняя версия стандарта HTML. Термин имеет два определения:

        diff --git a/files/ru/web/guide/html/html5/introduction_to_html5/index.html b/files/ru/web/guide/html/html5/introduction_to_html5/index.html index 28b8138f0e..64b43c9b8a 100644 --- a/files/ru/web/guide/html/html5/introduction_to_html5/index.html +++ b/files/ru/web/guide/html/html5/introduction_to_html5/index.html @@ -1,11 +1,12 @@ --- title: Введение в HTML5 -slug: HTML/HTML5/Введение_в_HTML5 +slug: Web/Guide/HTML/HTML5/Introduction_to_HTML5 tags: - DOCTYPE - HTML5 - HTML5 парсер translation_of: Web/Guide/HTML/HTML5/Introduction_to_HTML5 +original_slug: HTML/HTML5/Введение_в_HTML5 ---

        HTML5 - пятая редакция и самая новая версия стандарта HTML. Она предлагает новые возможности, которые предоставляют не только богатую поддержку медиа, но и также расширяет возможности для создания веб-приложений, которые могут взаимодействовать с пользователем, его локальными данными, и серверами проще и эффективнее, чем это было раньше.

        Because HTML5 is still being developed, changes to the specifications are inevitable. Therefore, not all of its features are supported by all browsers yet. However, Gecko, and by extension, Firefox, has very good initial support for HTML5, and work continues toward supporting more of its features. Gecko began supporting some HTML5 features in version 1.8.1. You can find a list of all of the HTML5 features that Gecko currently supports on the main HTML5 page. For detailed information about multiple browsers' support of HTML5 features, refer to the CanIUse website.

        diff --git a/files/ru/web/guide/html/using_html_sections_and_outlines/index.html b/files/ru/web/guide/html/using_html_sections_and_outlines/index.html index a6236d9c24..5bd0fa3f9d 100644 --- a/files/ru/web/guide/html/using_html_sections_and_outlines/index.html +++ b/files/ru/web/guide/html/using_html_sections_and_outlines/index.html @@ -1,6 +1,6 @@ --- title: Использование разделов и создание структуры HTML документа -slug: Web/Guide/HTML/Sections_and_Outlines_of_an_HTML5_document +slug: Web/Guide/HTML/Using_HTML_sections_and_outlines tags: - HTML5 - Веб @@ -11,6 +11,7 @@ tags: - Руководство - Структура translation_of: Web/Guide/HTML/Using_HTML_sections_and_outlines +original_slug: Web/Guide/HTML/Sections_and_Outlines_of_an_HTML5_document ---

        Важно: В настоящее время нет известных реализаций алгоритма построения структуры документа в графических браузерах или пользовательских приложениях, использующих реабилитационные технологии, хотя такой алгоритм внедрен в другие приложения, например, в средствах проверки соответствия спецификации. Поэтому алгоритм построения структуры нельзя использовать для передачи структуры документа пользователям. Авторы рекомендуют использовать для этой цели степень важности заголовков (h1-h6).

        diff --git a/files/ru/web/guide/performance/index.html b/files/ru/web/guide/performance/index.html index 8b1d2760da..e87f08135a 100644 --- a/files/ru/web/guide/performance/index.html +++ b/files/ru/web/guide/performance/index.html @@ -1,10 +1,11 @@ --- title: Оптимизация и производительность -slug: Web/Guide/Производительность +slug: Web/Guide/Performance tags: - Оптимизация - Производительность translation_of: Web/Guide/Performance +original_slug: Web/Guide/Производительность ---

        Создаваемые Вами современные веб-приложения и сайты должны иметь хорошую производительность - работать быстро и эффективно, как на персональных компьютерах (десктоп), так и на менее мощных мобильных устройствах. Существуют различные инструменты для тестирования сайтов на производительность. Самые известные из них:

        diff --git a/files/ru/web/html/attributes/crossorigin/index.html b/files/ru/web/html/attributes/crossorigin/index.html index 686989bb0c..b0b744eb5d 100644 --- a/files/ru/web/html/attributes/crossorigin/index.html +++ b/files/ru/web/html/attributes/crossorigin/index.html @@ -1,7 +1,8 @@ --- title: CORS settings attributes -slug: Web/HTML/CORS_settings_attributes +slug: Web/HTML/Attributes/crossorigin translation_of: Web/HTML/Attributes/crossorigin +original_slug: Web/HTML/CORS_settings_attributes ---

        В HTML5 некоторые теги поддерживают CORS, например {{ HTMLElement("img") }} или {{ HTMLElement("video") }}, имеют атрибут crossorigin (crossOrigin свойство), которое позволяет настроить CORS запросы для данных получаемых элементом. Эти атрибуты могут иметь следующие значения:

        diff --git a/files/ru/web/html/element/button/index.html b/files/ru/web/html/element/button/index.html index ec13035e29..813ab839f3 100644 --- a/files/ru/web/html/element/button/index.html +++ b/files/ru/web/html/element/button/index.html @@ -1,6 +1,6 @@ --- title:

Разделы документации

Введение в веб-разработку
Руководство, обучающее разработке для веб.
HTML
HyperText Markup Language — основной язык, используемый для создания веб-страниц и других документов, пригодных для просмотра в браузере.
JavaScript
JavaScript — наиболее широко используемый для разработки веб-приложений скриптовый язык; он также используется и при разработке программного обеспечения основанного на Mozilla.
CSS
Cascading Style Sheets — таблицы стилей позволяющие создать make it possible to do advanced layout and page design on the Web.
AJAX
Asynchronous JavaScript and XML — не столько технология, сколько подход к сочетанию имеющихся технологий; JavaScript и другие современные веб-технологии используются совместно при создании динамических веб-приложений.
Веб-стандарты
Learn how to make your Web site or application reach the largest number of users through compatibility with the open Web.
DOM
Document Object Model — API для HTML- и XML-документов, providing a structural representation of the document that you can modify in order to alter its visual presentation.
XHTML
Extensible HyperText Markup Language is an XML-based HTML-like language that offers a stricter syntax than HTML.
SVG
Scalable Vector Graphics — язык разметки, основанный на XML, для описания двухмерной векторной графики.
Mozilla Web developer FAQ
Наиболее часто задаваемые веб-разработчиками вопросы. С ответами!

View All...

Сообщество

Инструменты