diff --git a/1-js/2-first-steps/1-hello-world/article.md b/1-js/2-first-steps/1-hello-world/article.md index 4a1fa717..50da17ba 100644 --- a/1-js/2-first-steps/1-hello-world/article.md +++ b/1-js/2-first-steps/1-hello-world/article.md @@ -99,180 +99,3 @@ Итак, для вставки скрипта мы просто пишем ` -``` - -Здесь `/path/to/script.js` -- это абсолютный путь к файлу, содержащему скрипт (из корня сайта). - -Браузер сам скачает скрипт и выполнит. - -Можно указать и полный URL, например: - -```html - -``` - -Вы также можете использовать путь относительно текущей страницы, например `src="jquery.js"` обозначает файл из текущей директории. - -Чтобы подключить несколько скриптов, используйте несколько тегов: - -```html - - -... -``` - -[smart] -Как правило, в HTML пишут только самые простые скрипты, а сложные выносят в отдельный файл. - -Браузер скачает его только первый раз и в дальнейшем, при правильной настройке сервера, будет брать из своего [кеша](http://ru.wikipedia.org/wiki/%D0%9A%D1%8D%D1%88). - -Благодаря этому один и тот же большой скрипт, содержащий, к примеру, библиотеку функций, может использоваться на разных страницах без полной перезагрузки с сервера. - -[/smart] - - -[warn header="Если указан атрибут `src`, то содержимое тега игнорируется."] - -В одном теге `SCRIPT` нельзя одновременно подключить внешний скрипт и указать код. - -Вот так не cработает: - -```html - -``` - -Нужно выбрать: либо `SCRIPT` идёт с `src`, либо содержит код. Тег выше следует разбить на два: один -- с `src`, другой -- с кодом, вот так: - -```html - - -``` - -[/warn] - -## Асинхронные скрипты: defer/async - -Обычно тег ` -*/!* - -

Кролики посчитаны!

- - - -``` - -Такое поведение называют "синхронным". Как правило, оно вполне нормально, но бывает беда. - -Внешние скрипты ` - -

...Важная информация!

-``` - -В примере выше важная информация не покажется, пока не загрузится внешний скрипт. Но действительно ли он так важен, что мы хотим заставить посетителя ждать? Если это реклама или счётчик посещаемости, то вряд ли. - -Можно поставить все подобные скрипты в конец страницы -- это уменьшит проблему, но не избавит от неё полностью, поскольку если какой-то один скрипт тормозит или завис, то последующие будут его ждать. - -Чтобы это обойти, можно использовать для скриптов атрибуты `async` или `defer`: -
-
Атрибут `async`
-
Поддерживается всеми браузерами, кроме IE9-. Скрипт выполняется полностью асинхронно. То есть, при обнаружении ` - -``` - -А в таком коде (с `defer`) первым сработает всегда `1.js`, а скрипт `2.js`, даже если загрузился раньше, будет его ждать. - -```html - - -``` - -Атрибут `defer` используют в тех случаях, когда второй скрипт `2.js` зависит от первого `1.js`, к примеру -- использует что-то, описанное первым скриптом. - -
-
- -[warn header="Либо `async` либо `defer`"] -Одновременно указывать `async` и `defer` не имеет смысла, в этом случае браузер использует только `async`. -[/warn] - -[warn header="Атрибуты `async/defer` -- только для внешних скриптов"] -Атрибуты `async/defer` работают только в том случае, если назначены на внешние скрипты, т.е. имеющие `src`. - -При попытке назначить их на обычные скрипты <script>...</script>, они будут проигнороированы. -[/warn] - -Тот же пример с `async`: - -```html - -

Начало страницы...

- - - -

...Важная информация!

-``` - -При запуске вы увидите, что вся страница отобразилась тут же, а `alert` из внешнего скрипта появится позже, когда загрузится скрипт. - -**Большинство современных системы рекламы и счётчиков знают про эти атрибуты и используют их.** - -## Итого - - - -Очень важно не только читать учебник, но делать что-то самостоятельно. - -Решите задачки, чтобы удостовериться, что вы все правильно поняли. - diff --git a/1-js/2-first-steps/9-bitwise-operators/1-bitwise-operator-value/solution.md b/1-js/2-first-steps/10-bitwise-operators/1-bitwise-operator-value/solution.md similarity index 100% rename from 1-js/2-first-steps/9-bitwise-operators/1-bitwise-operator-value/solution.md rename to 1-js/2-first-steps/10-bitwise-operators/1-bitwise-operator-value/solution.md diff --git a/1-js/2-first-steps/9-bitwise-operators/1-bitwise-operator-value/task.md b/1-js/2-first-steps/10-bitwise-operators/1-bitwise-operator-value/task.md similarity index 100% rename from 1-js/2-first-steps/9-bitwise-operators/1-bitwise-operator-value/task.md rename to 1-js/2-first-steps/10-bitwise-operators/1-bitwise-operator-value/task.md diff --git a/1-js/2-first-steps/9-bitwise-operators/2-check-integer/solution.md b/1-js/2-first-steps/10-bitwise-operators/2-check-integer/solution.md similarity index 100% rename from 1-js/2-first-steps/9-bitwise-operators/2-check-integer/solution.md rename to 1-js/2-first-steps/10-bitwise-operators/2-check-integer/solution.md diff --git a/1-js/2-first-steps/9-bitwise-operators/2-check-integer/task.md b/1-js/2-first-steps/10-bitwise-operators/2-check-integer/task.md similarity index 100% rename from 1-js/2-first-steps/9-bitwise-operators/2-check-integer/task.md rename to 1-js/2-first-steps/10-bitwise-operators/2-check-integer/task.md diff --git a/1-js/2-first-steps/9-bitwise-operators/3-bitwise-symmetry/solution.md b/1-js/2-first-steps/10-bitwise-operators/3-bitwise-symmetry/solution.md similarity index 100% rename from 1-js/2-first-steps/9-bitwise-operators/3-bitwise-symmetry/solution.md rename to 1-js/2-first-steps/10-bitwise-operators/3-bitwise-symmetry/solution.md diff --git a/1-js/2-first-steps/9-bitwise-operators/3-bitwise-symmetry/task.md b/1-js/2-first-steps/10-bitwise-operators/3-bitwise-symmetry/task.md similarity index 100% rename from 1-js/2-first-steps/9-bitwise-operators/3-bitwise-symmetry/task.md rename to 1-js/2-first-steps/10-bitwise-operators/3-bitwise-symmetry/task.md diff --git a/1-js/2-first-steps/9-bitwise-operators/4-bit-rounding/solution.md b/1-js/2-first-steps/10-bitwise-operators/4-bit-rounding/solution.md similarity index 100% rename from 1-js/2-first-steps/9-bitwise-operators/4-bit-rounding/solution.md rename to 1-js/2-first-steps/10-bitwise-operators/4-bit-rounding/solution.md diff --git a/1-js/2-first-steps/9-bitwise-operators/4-bit-rounding/task.md b/1-js/2-first-steps/10-bitwise-operators/4-bit-rounding/task.md similarity index 100% rename from 1-js/2-first-steps/9-bitwise-operators/4-bit-rounding/task.md rename to 1-js/2-first-steps/10-bitwise-operators/4-bit-rounding/task.md diff --git a/1-js/2-first-steps/9-bitwise-operators/article.md b/1-js/2-first-steps/10-bitwise-operators/article.md similarity index 100% rename from 1-js/2-first-steps/9-bitwise-operators/article.md rename to 1-js/2-first-steps/10-bitwise-operators/article.md diff --git a/1-js/2-first-steps/10-uibasic/1-simple-page/solution.md b/1-js/2-first-steps/11-uibasic/1-simple-page/solution.md similarity index 100% rename from 1-js/2-first-steps/10-uibasic/1-simple-page/solution.md rename to 1-js/2-first-steps/11-uibasic/1-simple-page/solution.md diff --git a/1-js/2-first-steps/10-uibasic/1-simple-page/task.md b/1-js/2-first-steps/11-uibasic/1-simple-page/task.md similarity index 100% rename from 1-js/2-first-steps/10-uibasic/1-simple-page/task.md rename to 1-js/2-first-steps/11-uibasic/1-simple-page/task.md diff --git a/1-js/2-first-steps/10-uibasic/article.md b/1-js/2-first-steps/11-uibasic/article.md similarity index 100% rename from 1-js/2-first-steps/10-uibasic/article.md rename to 1-js/2-first-steps/11-uibasic/article.md diff --git a/1-js/2-first-steps/11-ifelse/1-if-zero-string/solution.md b/1-js/2-first-steps/12-ifelse/1-if-zero-string/solution.md similarity index 100% rename from 1-js/2-first-steps/11-ifelse/1-if-zero-string/solution.md rename to 1-js/2-first-steps/12-ifelse/1-if-zero-string/solution.md diff --git a/1-js/2-first-steps/11-ifelse/1-if-zero-string/task.md b/1-js/2-first-steps/12-ifelse/1-if-zero-string/task.md similarity index 100% rename from 1-js/2-first-steps/11-ifelse/1-if-zero-string/task.md rename to 1-js/2-first-steps/12-ifelse/1-if-zero-string/task.md diff --git a/1-js/2-first-steps/11-ifelse/2-check-standard/ifelse_task2.png b/1-js/2-first-steps/12-ifelse/2-check-standard/ifelse_task2.png old mode 100755 new mode 100644 similarity index 100% rename from 1-js/2-first-steps/11-ifelse/2-check-standard/ifelse_task2.png rename to 1-js/2-first-steps/12-ifelse/2-check-standard/ifelse_task2.png diff --git a/1-js/2-first-steps/11-ifelse/2-check-standard/ifelse_task2/index.html b/1-js/2-first-steps/12-ifelse/2-check-standard/ifelse_task2/index.html old mode 100755 new mode 100644 similarity index 100% rename from 1-js/2-first-steps/11-ifelse/2-check-standard/ifelse_task2/index.html rename to 1-js/2-first-steps/12-ifelse/2-check-standard/ifelse_task2/index.html diff --git a/1-js/2-first-steps/11-ifelse/2-check-standard/solution.md b/1-js/2-first-steps/12-ifelse/2-check-standard/solution.md similarity index 100% rename from 1-js/2-first-steps/11-ifelse/2-check-standard/solution.md rename to 1-js/2-first-steps/12-ifelse/2-check-standard/solution.md diff --git a/1-js/2-first-steps/11-ifelse/2-check-standard/task.md b/1-js/2-first-steps/12-ifelse/2-check-standard/task.md similarity index 100% rename from 1-js/2-first-steps/11-ifelse/2-check-standard/task.md rename to 1-js/2-first-steps/12-ifelse/2-check-standard/task.md diff --git a/1-js/2-first-steps/11-ifelse/2-check-standardifelse_task2/index.html b/1-js/2-first-steps/12-ifelse/2-check-standardifelse_task2/index.html old mode 100755 new mode 100644 similarity index 100% rename from 1-js/2-first-steps/11-ifelse/2-check-standardifelse_task2/index.html rename to 1-js/2-first-steps/12-ifelse/2-check-standardifelse_task2/index.html diff --git a/1-js/2-first-steps/11-ifelse/3-sign/if_sign/index.html b/1-js/2-first-steps/12-ifelse/3-sign/if_sign/index.html old mode 100755 new mode 100644 similarity index 100% rename from 1-js/2-first-steps/11-ifelse/3-sign/if_sign/index.html rename to 1-js/2-first-steps/12-ifelse/3-sign/if_sign/index.html diff --git a/1-js/2-first-steps/11-ifelse/3-sign/solution.md b/1-js/2-first-steps/12-ifelse/3-sign/solution.md similarity index 100% rename from 1-js/2-first-steps/11-ifelse/3-sign/solution.md rename to 1-js/2-first-steps/12-ifelse/3-sign/solution.md diff --git a/1-js/2-first-steps/11-ifelse/3-sign/task.md b/1-js/2-first-steps/12-ifelse/3-sign/task.md similarity index 100% rename from 1-js/2-first-steps/11-ifelse/3-sign/task.md rename to 1-js/2-first-steps/12-ifelse/3-sign/task.md diff --git a/1-js/2-first-steps/11-ifelse/4-check-login/ifelse_task.png b/1-js/2-first-steps/12-ifelse/4-check-login/ifelse_task.png old mode 100755 new mode 100644 similarity index 100% rename from 1-js/2-first-steps/11-ifelse/4-check-login/ifelse_task.png rename to 1-js/2-first-steps/12-ifelse/4-check-login/ifelse_task.png diff --git a/1-js/2-first-steps/11-ifelse/4-check-login/solution.md b/1-js/2-first-steps/12-ifelse/4-check-login/solution.md similarity index 100% rename from 1-js/2-first-steps/11-ifelse/4-check-login/solution.md rename to 1-js/2-first-steps/12-ifelse/4-check-login/solution.md diff --git a/1-js/2-first-steps/11-ifelse/4-check-login/task.md b/1-js/2-first-steps/12-ifelse/4-check-login/task.md similarity index 100% rename from 1-js/2-first-steps/11-ifelse/4-check-login/task.md rename to 1-js/2-first-steps/12-ifelse/4-check-login/task.md diff --git a/1-js/2-first-steps/11-ifelse/5-rewrite-if-question/solution.md b/1-js/2-first-steps/12-ifelse/5-rewrite-if-question/solution.md similarity index 100% rename from 1-js/2-first-steps/11-ifelse/5-rewrite-if-question/solution.md rename to 1-js/2-first-steps/12-ifelse/5-rewrite-if-question/solution.md diff --git a/1-js/2-first-steps/11-ifelse/5-rewrite-if-question/task.md b/1-js/2-first-steps/12-ifelse/5-rewrite-if-question/task.md similarity index 100% rename from 1-js/2-first-steps/11-ifelse/5-rewrite-if-question/task.md rename to 1-js/2-first-steps/12-ifelse/5-rewrite-if-question/task.md diff --git a/1-js/2-first-steps/11-ifelse/6-rewrite-if-else-question/solution.md b/1-js/2-first-steps/12-ifelse/6-rewrite-if-else-question/solution.md similarity index 100% rename from 1-js/2-first-steps/11-ifelse/6-rewrite-if-else-question/solution.md rename to 1-js/2-first-steps/12-ifelse/6-rewrite-if-else-question/solution.md diff --git a/1-js/2-first-steps/11-ifelse/6-rewrite-if-else-question/task.md b/1-js/2-first-steps/12-ifelse/6-rewrite-if-else-question/task.md similarity index 100% rename from 1-js/2-first-steps/11-ifelse/6-rewrite-if-else-question/task.md rename to 1-js/2-first-steps/12-ifelse/6-rewrite-if-else-question/task.md diff --git a/1-js/2-first-steps/11-ifelse/article.md b/1-js/2-first-steps/12-ifelse/article.md similarity index 100% rename from 1-js/2-first-steps/11-ifelse/article.md rename to 1-js/2-first-steps/12-ifelse/article.md diff --git a/1-js/2-first-steps/12-logical-ops/1-alert-null-2-undefined/solution.md b/1-js/2-first-steps/13-logical-ops/1-alert-null-2-undefined/solution.md similarity index 100% rename from 1-js/2-first-steps/12-logical-ops/1-alert-null-2-undefined/solution.md rename to 1-js/2-first-steps/13-logical-ops/1-alert-null-2-undefined/solution.md diff --git a/1-js/2-first-steps/12-logical-ops/1-alert-null-2-undefined/task.md b/1-js/2-first-steps/13-logical-ops/1-alert-null-2-undefined/task.md similarity index 100% rename from 1-js/2-first-steps/12-logical-ops/1-alert-null-2-undefined/task.md rename to 1-js/2-first-steps/13-logical-ops/1-alert-null-2-undefined/task.md diff --git a/1-js/2-first-steps/12-logical-ops/2-alert-or/solution.md b/1-js/2-first-steps/13-logical-ops/2-alert-or/solution.md similarity index 100% rename from 1-js/2-first-steps/12-logical-ops/2-alert-or/solution.md rename to 1-js/2-first-steps/13-logical-ops/2-alert-or/solution.md diff --git a/1-js/2-first-steps/12-logical-ops/2-alert-or/task.md b/1-js/2-first-steps/13-logical-ops/2-alert-or/task.md similarity index 100% rename from 1-js/2-first-steps/12-logical-ops/2-alert-or/task.md rename to 1-js/2-first-steps/13-logical-ops/2-alert-or/task.md diff --git a/1-js/2-first-steps/12-logical-ops/3-alert-1-null-2/solution.md b/1-js/2-first-steps/13-logical-ops/3-alert-1-null-2/solution.md similarity index 100% rename from 1-js/2-first-steps/12-logical-ops/3-alert-1-null-2/solution.md rename to 1-js/2-first-steps/13-logical-ops/3-alert-1-null-2/solution.md diff --git a/1-js/2-first-steps/12-logical-ops/3-alert-1-null-2/task.md b/1-js/2-first-steps/13-logical-ops/3-alert-1-null-2/task.md similarity index 100% rename from 1-js/2-first-steps/12-logical-ops/3-alert-1-null-2/task.md rename to 1-js/2-first-steps/13-logical-ops/3-alert-1-null-2/task.md diff --git a/1-js/2-first-steps/12-logical-ops/4-alert-and/solution.md b/1-js/2-first-steps/13-logical-ops/4-alert-and/solution.md similarity index 100% rename from 1-js/2-first-steps/12-logical-ops/4-alert-and/solution.md rename to 1-js/2-first-steps/13-logical-ops/4-alert-and/solution.md diff --git a/1-js/2-first-steps/12-logical-ops/4-alert-and/task.md b/1-js/2-first-steps/13-logical-ops/4-alert-and/task.md similarity index 100% rename from 1-js/2-first-steps/12-logical-ops/4-alert-and/task.md rename to 1-js/2-first-steps/13-logical-ops/4-alert-and/task.md diff --git a/1-js/2-first-steps/12-logical-ops/5-check-if-in-range/solution.md b/1-js/2-first-steps/13-logical-ops/5-check-if-in-range/solution.md similarity index 100% rename from 1-js/2-first-steps/12-logical-ops/5-check-if-in-range/solution.md rename to 1-js/2-first-steps/13-logical-ops/5-check-if-in-range/solution.md diff --git a/1-js/2-first-steps/12-logical-ops/5-check-if-in-range/task.md b/1-js/2-first-steps/13-logical-ops/5-check-if-in-range/task.md similarity index 100% rename from 1-js/2-first-steps/12-logical-ops/5-check-if-in-range/task.md rename to 1-js/2-first-steps/13-logical-ops/5-check-if-in-range/task.md diff --git a/1-js/2-first-steps/12-logical-ops/6-check-if-out-range/solution.md b/1-js/2-first-steps/13-logical-ops/6-check-if-out-range/solution.md similarity index 100% rename from 1-js/2-first-steps/12-logical-ops/6-check-if-out-range/solution.md rename to 1-js/2-first-steps/13-logical-ops/6-check-if-out-range/solution.md diff --git a/1-js/2-first-steps/12-logical-ops/6-check-if-out-range/task.md b/1-js/2-first-steps/13-logical-ops/6-check-if-out-range/task.md similarity index 100% rename from 1-js/2-first-steps/12-logical-ops/6-check-if-out-range/task.md rename to 1-js/2-first-steps/13-logical-ops/6-check-if-out-range/task.md diff --git a/1-js/2-first-steps/12-logical-ops/7-if-question/solution.md b/1-js/2-first-steps/13-logical-ops/7-if-question/solution.md similarity index 100% rename from 1-js/2-first-steps/12-logical-ops/7-if-question/solution.md rename to 1-js/2-first-steps/13-logical-ops/7-if-question/solution.md diff --git a/1-js/2-first-steps/12-logical-ops/7-if-question/task.md b/1-js/2-first-steps/13-logical-ops/7-if-question/task.md similarity index 100% rename from 1-js/2-first-steps/12-logical-ops/7-if-question/task.md rename to 1-js/2-first-steps/13-logical-ops/7-if-question/task.md diff --git a/1-js/2-first-steps/12-logical-ops/article.md b/1-js/2-first-steps/13-logical-ops/article.md similarity index 100% rename from 1-js/2-first-steps/12-logical-ops/article.md rename to 1-js/2-first-steps/13-logical-ops/article.md diff --git a/1-js/2-first-steps/13-types-conversion/1-primitive-conversions-questions/solution.md b/1-js/2-first-steps/14-types-conversion/1-primitive-conversions-questions/solution.md similarity index 100% rename from 1-js/2-first-steps/13-types-conversion/1-primitive-conversions-questions/solution.md rename to 1-js/2-first-steps/14-types-conversion/1-primitive-conversions-questions/solution.md diff --git a/1-js/2-first-steps/13-types-conversion/1-primitive-conversions-questions/task.md b/1-js/2-first-steps/14-types-conversion/1-primitive-conversions-questions/task.md similarity index 100% rename from 1-js/2-first-steps/13-types-conversion/1-primitive-conversions-questions/task.md rename to 1-js/2-first-steps/14-types-conversion/1-primitive-conversions-questions/task.md diff --git a/1-js/2-first-steps/13-types-conversion/article.md b/1-js/2-first-steps/14-types-conversion/article.md similarity index 100% rename from 1-js/2-first-steps/13-types-conversion/article.md rename to 1-js/2-first-steps/14-types-conversion/article.md diff --git a/1-js/2-first-steps/14-while-for/1-loop-last-value/solution.md b/1-js/2-first-steps/15-while-for/1-loop-last-value/solution.md similarity index 100% rename from 1-js/2-first-steps/14-while-for/1-loop-last-value/solution.md rename to 1-js/2-first-steps/15-while-for/1-loop-last-value/solution.md diff --git a/1-js/2-first-steps/14-while-for/1-loop-last-value/task.md b/1-js/2-first-steps/15-while-for/1-loop-last-value/task.md similarity index 100% rename from 1-js/2-first-steps/14-while-for/1-loop-last-value/task.md rename to 1-js/2-first-steps/15-while-for/1-loop-last-value/task.md diff --git a/1-js/2-first-steps/14-while-for/2-which-value-while/solution.md b/1-js/2-first-steps/15-while-for/2-which-value-while/solution.md similarity index 100% rename from 1-js/2-first-steps/14-while-for/2-which-value-while/solution.md rename to 1-js/2-first-steps/15-while-for/2-which-value-while/solution.md diff --git a/1-js/2-first-steps/14-while-for/2-which-value-while/task.md b/1-js/2-first-steps/15-while-for/2-which-value-while/task.md similarity index 100% rename from 1-js/2-first-steps/14-while-for/2-which-value-while/task.md rename to 1-js/2-first-steps/15-while-for/2-which-value-while/task.md diff --git a/1-js/2-first-steps/14-while-for/3-which-value-for/solution.md b/1-js/2-first-steps/15-while-for/3-which-value-for/solution.md similarity index 100% rename from 1-js/2-first-steps/14-while-for/3-which-value-for/solution.md rename to 1-js/2-first-steps/15-while-for/3-which-value-for/solution.md diff --git a/1-js/2-first-steps/14-while-for/3-which-value-for/task.md b/1-js/2-first-steps/15-while-for/3-which-value-for/task.md similarity index 100% rename from 1-js/2-first-steps/14-while-for/3-which-value-for/task.md rename to 1-js/2-first-steps/15-while-for/3-which-value-for/task.md diff --git a/1-js/2-first-steps/14-while-for/4-for-even/solution.md b/1-js/2-first-steps/15-while-for/4-for-even/solution.md similarity index 100% rename from 1-js/2-first-steps/14-while-for/4-for-even/solution.md rename to 1-js/2-first-steps/15-while-for/4-for-even/solution.md diff --git a/1-js/2-first-steps/14-while-for/4-for-even/task.md b/1-js/2-first-steps/15-while-for/4-for-even/task.md similarity index 100% rename from 1-js/2-first-steps/14-while-for/4-for-even/task.md rename to 1-js/2-first-steps/15-while-for/4-for-even/task.md diff --git a/1-js/2-first-steps/14-while-for/5-replace-for-while/solution.md b/1-js/2-first-steps/15-while-for/5-replace-for-while/solution.md similarity index 100% rename from 1-js/2-first-steps/14-while-for/5-replace-for-while/solution.md rename to 1-js/2-first-steps/15-while-for/5-replace-for-while/solution.md diff --git a/1-js/2-first-steps/14-while-for/5-replace-for-while/task.md b/1-js/2-first-steps/15-while-for/5-replace-for-while/task.md similarity index 100% rename from 1-js/2-first-steps/14-while-for/5-replace-for-while/task.md rename to 1-js/2-first-steps/15-while-for/5-replace-for-while/task.md diff --git a/1-js/2-first-steps/14-while-for/6-repeat-until-correct/solution.md b/1-js/2-first-steps/15-while-for/6-repeat-until-correct/solution.md similarity index 100% rename from 1-js/2-first-steps/14-while-for/6-repeat-until-correct/solution.md rename to 1-js/2-first-steps/15-while-for/6-repeat-until-correct/solution.md diff --git a/1-js/2-first-steps/14-while-for/6-repeat-until-correct/task.md b/1-js/2-first-steps/15-while-for/6-repeat-until-correct/task.md similarity index 100% rename from 1-js/2-first-steps/14-while-for/6-repeat-until-correct/task.md rename to 1-js/2-first-steps/15-while-for/6-repeat-until-correct/task.md diff --git a/1-js/2-first-steps/14-while-for/7-list-primes/solution.md b/1-js/2-first-steps/15-while-for/7-list-primes/solution.md similarity index 100% rename from 1-js/2-first-steps/14-while-for/7-list-primes/solution.md rename to 1-js/2-first-steps/15-while-for/7-list-primes/solution.md diff --git a/1-js/2-first-steps/14-while-for/7-list-primes/task.md b/1-js/2-first-steps/15-while-for/7-list-primes/task.md similarity index 100% rename from 1-js/2-first-steps/14-while-for/7-list-primes/task.md rename to 1-js/2-first-steps/15-while-for/7-list-primes/task.md diff --git a/1-js/2-first-steps/14-while-for/article.md b/1-js/2-first-steps/15-while-for/article.md similarity index 100% rename from 1-js/2-first-steps/14-while-for/article.md rename to 1-js/2-first-steps/15-while-for/article.md diff --git a/1-js/2-first-steps/15-switch/1-rewrite-switch-if-else/solution.md b/1-js/2-first-steps/16-switch/1-rewrite-switch-if-else/solution.md similarity index 100% rename from 1-js/2-first-steps/15-switch/1-rewrite-switch-if-else/solution.md rename to 1-js/2-first-steps/16-switch/1-rewrite-switch-if-else/solution.md diff --git a/1-js/2-first-steps/15-switch/1-rewrite-switch-if-else/task.md b/1-js/2-first-steps/16-switch/1-rewrite-switch-if-else/task.md similarity index 100% rename from 1-js/2-first-steps/15-switch/1-rewrite-switch-if-else/task.md rename to 1-js/2-first-steps/16-switch/1-rewrite-switch-if-else/task.md diff --git a/1-js/2-first-steps/15-switch/2-rewrite-if-switch/solution.md b/1-js/2-first-steps/16-switch/2-rewrite-if-switch/solution.md similarity index 100% rename from 1-js/2-first-steps/15-switch/2-rewrite-if-switch/solution.md rename to 1-js/2-first-steps/16-switch/2-rewrite-if-switch/solution.md diff --git a/1-js/2-first-steps/15-switch/2-rewrite-if-switch/task.md b/1-js/2-first-steps/16-switch/2-rewrite-if-switch/task.md similarity index 100% rename from 1-js/2-first-steps/15-switch/2-rewrite-if-switch/task.md rename to 1-js/2-first-steps/16-switch/2-rewrite-if-switch/task.md diff --git a/1-js/2-first-steps/15-switch/article.md b/1-js/2-first-steps/16-switch/article.md similarity index 100% rename from 1-js/2-first-steps/15-switch/article.md rename to 1-js/2-first-steps/16-switch/article.md diff --git a/1-js/2-first-steps/16-function-basics/1-if-else-required/solution.md b/1-js/2-first-steps/17-function-basics/1-if-else-required/solution.md similarity index 100% rename from 1-js/2-first-steps/16-function-basics/1-if-else-required/solution.md rename to 1-js/2-first-steps/17-function-basics/1-if-else-required/solution.md diff --git a/1-js/2-first-steps/16-function-basics/1-if-else-required/task.md b/1-js/2-first-steps/17-function-basics/1-if-else-required/task.md similarity index 100% rename from 1-js/2-first-steps/16-function-basics/1-if-else-required/task.md rename to 1-js/2-first-steps/17-function-basics/1-if-else-required/task.md diff --git a/1-js/2-first-steps/16-function-basics/2-rewrite-function-question-or/solution.md b/1-js/2-first-steps/17-function-basics/2-rewrite-function-question-or/solution.md similarity index 100% rename from 1-js/2-first-steps/16-function-basics/2-rewrite-function-question-or/solution.md rename to 1-js/2-first-steps/17-function-basics/2-rewrite-function-question-or/solution.md diff --git a/1-js/2-first-steps/16-function-basics/2-rewrite-function-question-or/task.md b/1-js/2-first-steps/17-function-basics/2-rewrite-function-question-or/task.md similarity index 100% rename from 1-js/2-first-steps/16-function-basics/2-rewrite-function-question-or/task.md rename to 1-js/2-first-steps/17-function-basics/2-rewrite-function-question-or/task.md diff --git a/1-js/2-first-steps/16-function-basics/3-min/solution.md b/1-js/2-first-steps/17-function-basics/3-min/solution.md similarity index 100% rename from 1-js/2-first-steps/16-function-basics/3-min/solution.md rename to 1-js/2-first-steps/17-function-basics/3-min/solution.md diff --git a/1-js/2-first-steps/16-function-basics/3-min/task.md b/1-js/2-first-steps/17-function-basics/3-min/task.md similarity index 100% rename from 1-js/2-first-steps/16-function-basics/3-min/task.md rename to 1-js/2-first-steps/17-function-basics/3-min/task.md diff --git a/1-js/2-first-steps/16-function-basics/4-pow/solution.md b/1-js/2-first-steps/17-function-basics/4-pow/solution.md similarity index 100% rename from 1-js/2-first-steps/16-function-basics/4-pow/solution.md rename to 1-js/2-first-steps/17-function-basics/4-pow/solution.md diff --git a/1-js/2-first-steps/16-function-basics/4-pow/task.md b/1-js/2-first-steps/17-function-basics/4-pow/task.md similarity index 100% rename from 1-js/2-first-steps/16-function-basics/4-pow/task.md rename to 1-js/2-first-steps/17-function-basics/4-pow/task.md diff --git a/1-js/2-first-steps/16-function-basics/article.md b/1-js/2-first-steps/17-function-basics/article.md similarity index 100% rename from 1-js/2-first-steps/16-function-basics/article.md rename to 1-js/2-first-steps/17-function-basics/article.md diff --git a/1-js/2-first-steps/16-function-basics/style.png b/1-js/2-first-steps/17-function-basics/style.png old mode 100755 new mode 100644 similarity index 100% rename from 1-js/2-first-steps/16-function-basics/style.png rename to 1-js/2-first-steps/17-function-basics/style.png diff --git a/1-js/2-first-steps/17-function-declaration-expression/article.md b/1-js/2-first-steps/18-function-declaration-expression/article.md similarity index 100% rename from 1-js/2-first-steps/17-function-declaration-expression/article.md rename to 1-js/2-first-steps/18-function-declaration-expression/article.md diff --git a/1-js/2-first-steps/18-recursion/1-sum-to/solution.md b/1-js/2-first-steps/19-recursion/1-sum-to/solution.md similarity index 100% rename from 1-js/2-first-steps/18-recursion/1-sum-to/solution.md rename to 1-js/2-first-steps/19-recursion/1-sum-to/solution.md diff --git a/1-js/2-first-steps/18-recursion/1-sum-to/task.md b/1-js/2-first-steps/19-recursion/1-sum-to/task.md similarity index 100% rename from 1-js/2-first-steps/18-recursion/1-sum-to/task.md rename to 1-js/2-first-steps/19-recursion/1-sum-to/task.md diff --git a/1-js/2-first-steps/18-recursion/2-factorial/solution.md b/1-js/2-first-steps/19-recursion/2-factorial/solution.md similarity index 100% rename from 1-js/2-first-steps/18-recursion/2-factorial/solution.md rename to 1-js/2-first-steps/19-recursion/2-factorial/solution.md diff --git a/1-js/2-first-steps/18-recursion/2-factorial/task.md b/1-js/2-first-steps/19-recursion/2-factorial/task.md similarity index 100% rename from 1-js/2-first-steps/18-recursion/2-factorial/task.md rename to 1-js/2-first-steps/19-recursion/2-factorial/task.md diff --git a/1-js/2-first-steps/18-recursion/3-fibonacci-numbers/solution.md b/1-js/2-first-steps/19-recursion/3-fibonacci-numbers/solution.md similarity index 100% rename from 1-js/2-first-steps/18-recursion/3-fibonacci-numbers/solution.md rename to 1-js/2-first-steps/19-recursion/3-fibonacci-numbers/solution.md diff --git a/1-js/2-first-steps/18-recursion/3-fibonacci-numbers/task.md b/1-js/2-first-steps/19-recursion/3-fibonacci-numbers/task.md similarity index 100% rename from 1-js/2-first-steps/18-recursion/3-fibonacci-numbers/task.md rename to 1-js/2-first-steps/19-recursion/3-fibonacci-numbers/task.md diff --git a/1-js/2-first-steps/18-recursion/article.md b/1-js/2-first-steps/19-recursion/article.md similarity index 100% rename from 1-js/2-first-steps/18-recursion/article.md rename to 1-js/2-first-steps/19-recursion/article.md diff --git a/1-js/2-first-steps/1-hello-world/2-hello-alert-ext/alert.js b/1-js/2-first-steps/2-external-script/1-hello-alert-ext/alert.js old mode 100755 new mode 100644 similarity index 100% rename from 1-js/2-first-steps/1-hello-world/2-hello-alert-ext/alert.js rename to 1-js/2-first-steps/2-external-script/1-hello-alert-ext/alert.js diff --git a/1-js/2-first-steps/1-hello-world/2-hello-alert-ext/index.html b/1-js/2-first-steps/2-external-script/1-hello-alert-ext/index.html old mode 100755 new mode 100644 similarity index 100% rename from 1-js/2-first-steps/1-hello-world/2-hello-alert-ext/index.html rename to 1-js/2-first-steps/2-external-script/1-hello-alert-ext/index.html diff --git a/1-js/2-first-steps/1-hello-world/2-hello-alert-ext/solution.md b/1-js/2-first-steps/2-external-script/1-hello-alert-ext/solution.md similarity index 100% rename from 1-js/2-first-steps/1-hello-world/2-hello-alert-ext/solution.md rename to 1-js/2-first-steps/2-external-script/1-hello-alert-ext/solution.md diff --git a/1-js/2-first-steps/1-hello-world/2-hello-alert-ext/task.md b/1-js/2-first-steps/2-external-script/1-hello-alert-ext/task.md similarity index 100% rename from 1-js/2-first-steps/1-hello-world/2-hello-alert-ext/task.md rename to 1-js/2-first-steps/2-external-script/1-hello-alert-ext/task.md diff --git a/1-js/2-first-steps/1-hello-world/3-async-defer-first/solution.md b/1-js/2-first-steps/2-external-script/2-async-defer-first/solution.md similarity index 100% rename from 1-js/2-first-steps/1-hello-world/3-async-defer-first/solution.md rename to 1-js/2-first-steps/2-external-script/2-async-defer-first/solution.md diff --git a/1-js/2-first-steps/1-hello-world/3-async-defer-first/task.md b/1-js/2-first-steps/2-external-script/2-async-defer-first/task.md similarity index 100% rename from 1-js/2-first-steps/1-hello-world/3-async-defer-first/task.md rename to 1-js/2-first-steps/2-external-script/2-async-defer-first/task.md diff --git a/1-js/2-first-steps/1-hello-world/4-async-defer-inline-first/solution.md b/1-js/2-first-steps/2-external-script/3-async-defer-inline-first/solution.md similarity index 100% rename from 1-js/2-first-steps/1-hello-world/4-async-defer-inline-first/solution.md rename to 1-js/2-first-steps/2-external-script/3-async-defer-inline-first/solution.md diff --git a/1-js/2-first-steps/1-hello-world/4-async-defer-inline-first/task.md b/1-js/2-first-steps/2-external-script/3-async-defer-inline-first/task.md similarity index 100% rename from 1-js/2-first-steps/1-hello-world/4-async-defer-inline-first/task.md rename to 1-js/2-first-steps/2-external-script/3-async-defer-inline-first/task.md diff --git a/1-js/2-first-steps/2-external-script/article.md b/1-js/2-first-steps/2-external-script/article.md new file mode 100644 index 00000000..9475d8d4 --- /dev/null +++ b/1-js/2-first-steps/2-external-script/article.md @@ -0,0 +1,177 @@ +# Внешние скрипты, порядок исполнения + +Если JavaScript-кода много -- его выносят в отдельный файл, который подключается в HTML: + +```html + +``` + +Здесь `/path/to/script.js` -- это абсолютный путь к файлу, содержащему скрипт (из корня сайта). + +Браузер сам скачает скрипт и выполнит. + +Можно указать и полный URL, например: + +```html + +``` + +Вы также можете использовать путь относительно текущей страницы, например `src="jquery.js"` обозначает файл из текущей директории. + +Чтобы подключить несколько скриптов, используйте несколько тегов: + +```html + + +... +``` + +[smart] +Как правило, в HTML пишут только самые простые скрипты, а сложные выносят в отдельный файл. + +Браузер скачает его только первый раз и в дальнейшем, при правильной настройке сервера, будет брать из своего [кеша](http://ru.wikipedia.org/wiki/%D0%9A%D1%8D%D1%88). + +Благодаря этому один и тот же большой скрипт, содержащий, к примеру, библиотеку функций, может использоваться на разных страницах без полной перезагрузки с сервера. + +[/smart] + + +[warn header="Если указан атрибут `src`, то содержимое тега игнорируется."] + +В одном теге `SCRIPT` нельзя одновременно подключить внешний скрипт и указать код. + +Вот так не cработает: + +```html + +``` + +Нужно выбрать: либо `SCRIPT` идёт с `src`, либо содержит код. Тег выше следует разбить на два: один -- с `src`, другой -- с кодом, вот так: + +```html + + +``` + +[/warn] + +## Асинхронные скрипты: defer/async + +Обычно тег ` +*/!* + +

Кролики посчитаны!

+ + + +``` + +Такое поведение называют "синхронным". Как правило, оно вполне нормально, но бывает беда. + +Внешние скрипты ` + +

...Важная информация!

+``` + +В примере выше важная информация не покажется, пока не загрузится внешний скрипт. Но действительно ли он так важен, что мы хотим заставить посетителя ждать? Если это реклама или счётчик посещаемости, то вряд ли. + +Можно поставить все подобные скрипты в конец страницы -- это уменьшит проблему, но не избавит от неё полностью, поскольку если какой-то один скрипт тормозит или завис, то последующие будут его ждать. + +Чтобы это обойти, можно использовать для скриптов атрибуты `async` или `defer`: +
+
Атрибут `async`
+
Поддерживается всеми браузерами, кроме IE9-. Скрипт выполняется полностью асинхронно. То есть, при обнаружении ` + +``` + +А в таком коде (с `defer`) первым сработает всегда `1.js`, а скрипт `2.js`, даже если загрузился раньше, будет его ждать. + +```html + + +``` + +Атрибут `defer` используют в тех случаях, когда второй скрипт `2.js` зависит от первого `1.js`, к примеру -- использует что-то, описанное первым скриптом. + +
+
+ +[warn header="Либо `async` либо `defer`"] +Одновременно указывать `async` и `defer` не имеет смысла, в этом случае браузер использует только `async`. +[/warn] + +[warn header="Атрибуты `async/defer` -- только для внешних скриптов"] +Атрибуты `async/defer` работают только в том случае, если назначены на внешние скрипты, т.е. имеющие `src`. + +При попытке назначить их на обычные скрипты <script>...</script>, они будут проигнороированы. +[/warn] + +Тот же пример с `async`: + +```html + +

Начало страницы...

+ + + +

...Важная информация!

+``` + +При запуске вы увидите, что вся страница отобразилась тут же, а `alert` из внешнего скрипта появится позже, когда загрузится скрипт. + +**Большинство современных системы рекламы и счётчиков знают про эти атрибуты и используют их.** + +## Итого + + + +Очень важно не только читать учебник, но делать что-то самостоятельно. + +Решите задачки, чтобы удостовериться, что вы все правильно поняли. + + diff --git a/1-js/2-first-steps/19-named-function-expression/1-nfe-check/solution.md b/1-js/2-first-steps/20-named-function-expression/1-nfe-check/solution.md similarity index 100% rename from 1-js/2-first-steps/19-named-function-expression/1-nfe-check/solution.md rename to 1-js/2-first-steps/20-named-function-expression/1-nfe-check/solution.md diff --git a/1-js/2-first-steps/19-named-function-expression/1-nfe-check/task.md b/1-js/2-first-steps/20-named-function-expression/1-nfe-check/task.md similarity index 100% rename from 1-js/2-first-steps/19-named-function-expression/1-nfe-check/task.md rename to 1-js/2-first-steps/20-named-function-expression/1-nfe-check/task.md diff --git a/1-js/2-first-steps/19-named-function-expression/article.md b/1-js/2-first-steps/20-named-function-expression/article.md similarity index 100% rename from 1-js/2-first-steps/19-named-function-expression/article.md rename to 1-js/2-first-steps/20-named-function-expression/article.md diff --git a/1-js/2-first-steps/20-javascript-specials/article.md b/1-js/2-first-steps/21-javascript-specials/article.md similarity index 100% rename from 1-js/2-first-steps/20-javascript-specials/article.md rename to 1-js/2-first-steps/21-javascript-specials/article.md diff --git a/1-js/2-first-steps/2-structure/article.md b/1-js/2-first-steps/3-structure/article.md similarity index 100% rename from 1-js/2-first-steps/2-structure/article.md rename to 1-js/2-first-steps/3-structure/article.md diff --git a/1-js/2-first-steps/3-strict-mode/article.md b/1-js/2-first-steps/4-strict-mode/article.md similarity index 100% rename from 1-js/2-first-steps/3-strict-mode/article.md rename to 1-js/2-first-steps/4-strict-mode/article.md diff --git a/1-js/2-first-steps/4-variables/1-hello-variables/solution.md b/1-js/2-first-steps/5-variables/1-hello-variables/solution.md similarity index 100% rename from 1-js/2-first-steps/4-variables/1-hello-variables/solution.md rename to 1-js/2-first-steps/5-variables/1-hello-variables/solution.md diff --git a/1-js/2-first-steps/4-variables/1-hello-variables/task.md b/1-js/2-first-steps/5-variables/1-hello-variables/task.md similarity index 100% rename from 1-js/2-first-steps/4-variables/1-hello-variables/task.md rename to 1-js/2-first-steps/5-variables/1-hello-variables/task.md diff --git a/1-js/2-first-steps/4-variables/article.md b/1-js/2-first-steps/5-variables/article.md similarity index 100% rename from 1-js/2-first-steps/4-variables/article.md rename to 1-js/2-first-steps/5-variables/article.md diff --git a/1-js/2-first-steps/4-variables/variable-change.svg b/1-js/2-first-steps/5-variables/variable-change.svg similarity index 100% rename from 1-js/2-first-steps/4-variables/variable-change.svg rename to 1-js/2-first-steps/5-variables/variable-change.svg diff --git a/1-js/2-first-steps/4-variables/variable.svg b/1-js/2-first-steps/5-variables/variable.svg similarity index 100% rename from 1-js/2-first-steps/4-variables/variable.svg rename to 1-js/2-first-steps/5-variables/variable.svg diff --git a/1-js/2-first-steps/5-variable-names/1-declare-variables/solution.md b/1-js/2-first-steps/6-variable-names/1-declare-variables/solution.md similarity index 100% rename from 1-js/2-first-steps/5-variable-names/1-declare-variables/solution.md rename to 1-js/2-first-steps/6-variable-names/1-declare-variables/solution.md diff --git a/1-js/2-first-steps/5-variable-names/1-declare-variables/task.md b/1-js/2-first-steps/6-variable-names/1-declare-variables/task.md similarity index 100% rename from 1-js/2-first-steps/5-variable-names/1-declare-variables/task.md rename to 1-js/2-first-steps/6-variable-names/1-declare-variables/task.md diff --git a/1-js/2-first-steps/5-variable-names/article.md b/1-js/2-first-steps/6-variable-names/article.md similarity index 100% rename from 1-js/2-first-steps/5-variable-names/article.md rename to 1-js/2-first-steps/6-variable-names/article.md diff --git a/1-js/2-first-steps/6-types-intro/article.md b/1-js/2-first-steps/7-types-intro/article.md similarity index 100% rename from 1-js/2-first-steps/6-types-intro/article.md rename to 1-js/2-first-steps/7-types-intro/article.md diff --git a/1-js/2-first-steps/7-operators/1-increment-order/solution.md b/1-js/2-first-steps/8-operators/1-increment-order/solution.md similarity index 100% rename from 1-js/2-first-steps/7-operators/1-increment-order/solution.md rename to 1-js/2-first-steps/8-operators/1-increment-order/solution.md diff --git a/1-js/2-first-steps/7-operators/1-increment-order/task.md b/1-js/2-first-steps/8-operators/1-increment-order/task.md similarity index 100% rename from 1-js/2-first-steps/7-operators/1-increment-order/task.md rename to 1-js/2-first-steps/8-operators/1-increment-order/task.md diff --git a/1-js/2-first-steps/7-operators/2-assignment-result/solution.md b/1-js/2-first-steps/8-operators/2-assignment-result/solution.md similarity index 100% rename from 1-js/2-first-steps/7-operators/2-assignment-result/solution.md rename to 1-js/2-first-steps/8-operators/2-assignment-result/solution.md diff --git a/1-js/2-first-steps/7-operators/2-assignment-result/task.md b/1-js/2-first-steps/8-operators/2-assignment-result/task.md similarity index 100% rename from 1-js/2-first-steps/7-operators/2-assignment-result/task.md rename to 1-js/2-first-steps/8-operators/2-assignment-result/task.md diff --git a/1-js/2-first-steps/7-operators/article.md b/1-js/2-first-steps/8-operators/article.md similarity index 100% rename from 1-js/2-first-steps/7-operators/article.md rename to 1-js/2-first-steps/8-operators/article.md diff --git a/1-js/2-first-steps/8-comparison/article.md b/1-js/2-first-steps/9-comparison/article.md similarity index 100% rename from 1-js/2-first-steps/8-comparison/article.md rename to 1-js/2-first-steps/9-comparison/article.md