JavaScript. Подробное руководство, 6-е издание, стр. 175
URL-адреса
<b>javascript:</b>Программы на языке JavaScript выполняются в два этапа. На первом этапе производится загрузка содержимого документа и запускается программный код в элементах
<b><script></b>После загрузки документа и выполнения всех сценариев начинается второй этап выполнения JavaScript-программы, асинхронный и управляемый событиями. На протяжении этого этапа, управляемого событиями, веб-броузер вызывает функции обработчиков (которые определены в HTML-атрибутах обработчиков событий, установлены сценариями, выполненными на первом этапе, или обработчиками событий, вызывавшимися ранее) в ответ на события, возникающие асинхронно. Обычно обработчики событий вызываются в ответ на действия пользователя (щелчок мышью, нажатие клавиши и т. д.), но могут также вызываться в ответ на сетевые взаимодействия, по истечении установленного промежутка времени или при возникновении ошибочных ситуаций в JavaScript-коде. Подробнее о событиях и обработчиках событий рассказывается в главе 17. Некоторая дополнительная информация о них будет также приводиться в разделе 13.3.2. Обратите внимание, что URL-адреса
<b>javascript:</b>Одно из первых событий, возникающих на управляемом событиями этапе выполнения, является событие
<b>load</b><b>onload</b><b>load</b><b>onload</b>Обе разновидности языка, базовый JavaScript и клиентский JavaScript, поддерживают однопоточную модель выполнения. Сценарии и обработчики событий выполняются последовательно, не конкурируя друг с другом. Такая модель выполнения обеспечивает простоту программирования на языке JavaScript и обсуждается в разделе 13.3.3.
13.3.1. Синхронные, асинхронные и отложенные сценарии
Когда поддержка JavaScript впервые появилась в веб-броузерах, не существовало никаких инструментов обхода и управления структурой содержимого документа. Единственный способ, каким JavaScript-код мог влиять на содержимое документа, - это генерировать содержимое в процессе загрузки документа. Делалось это с помощью метода
<b>document.write().</b>Пример 13.3. Генерация содержимого документа во время загрузки
<b><h1>Таблица факториалов</h1></b><b><script></b><b> function factorial(n) { // Функция вычисления факториалов</b><b> if (п <= 1) return п;</b><b> else return n*factorial(n-1);</b><b> }</b><b> document.write("<table>"); // Начало HTML-таблицы</b><b> document.write("<tr><th>n</thxth>n!</th></tr>"); // Вывести заголовок таблицы </b><b> for(var і = 1; і <= 10; і++) { // Вывести 10 строк</b><b> document. write("<trxtd>" + і + "</tdxtd>" + factorial(i) + "</td></tr>");</b><b> }</b><b> document.write("</table>”); // Конец таблицы</b><b> document.write("Generated at " + new Date()); // Вывести время </b><b></script></b>Когда сценарий передает текст методу
<b>document.write(),</b><b><script></b><b>document.write()</b><b><script>,</b><b>src</b>Такой синхронный, или блокирующий, порядок выполнения действует только по умолчанию. Тег
<b><script></b><b>defer</b><b>async</b><b><script>.</b><b>src</b><b>defer</b>