- •Саратовский государственный технический университет
 - •Введение
 - •Три уровня web-документа
 - •Навигация
 - •Глава 1. Основы Java Script
 - •Рекомендации по использованию JavaScript
 - •Добавление JavaScript кода в html документы
 - •Сокрытие сценариев от устаревших браузеров
 - •Определение языка сценариев
 - •Атрибут language
 - •Атрибут defer
 - •1.2. Ввод и вывод данных
 - •Alert(сообщение);
 - •Confirm(сообщение);
 - •Вывод в тело документа
 - •Практические задания
 - •1.3. Типы данных и значения
 - •Целые литералы
 - •Шестнадцатеричные и восьмеричные литералы
 - •Литералы вещественных чисел
 - •Работа с числами
 - •Специальные числовые значения
 - •Строковые литералы
 - •Управляющие последовательности в строковых литералах
 - •Преобразование чисел в строки
 - •Логические значения
 - •Преобразование логических значений
 - •Функции
 - •Функциональные литералы
 - •Объекты
 - •Объектные литералы
 - •Значение null
 - •Значение undefined
 - •Объекты Error
 - •Преобразование типов
 - •Имена переменных
 - •Создание переменных
 - •Var имя_переменной;
 - •Типизация переменных
 - •Область видимости переменной
 - •Var X; // Объявляем неинициализированную переменную. Значением ее является undefined
 - •Элементарные и ссылочные типы
 - •Комментарии
 - •Арифметические операторы
 - •Операторы сравнения
 - •Операторы сравнения
 - •Оператор in
 - •Оператор instanceof
 - •Строковые операторы
 - •Логические операторы
 - •Присваивание с операцией
 - •Условный оператор (?:)
 - •Оператор typeof
 - •Оператор создания объекта (new)
 - •Оператор delete
 - •Глава 2. Инструкции Java Script
 - •Инструкция if - оператор условного перехода
 - •If (условие)
 - •If (условие1) {
 - •If (!х) {// Если переменная username равна null, undefined, 0, "" или NaN, она
 - •If (!X) alert('Bы ничего не ввели")
 - •Инструкция else if
 - •Инструкция switch
 - •Практические задания
 - •Операторы цикла
 - •Инструкция while
 - •Цикл do/while
 - •Инструкция for
 - •I f (условие2){
 - •Инструкция for/in
 - •Инструкция break
 - •Инструкция continue
 - •Практические задания
 - •Инструкция var
 - •Инструкция function
 - •Инструкция return
 - •Инструкция throw
 - •Инструкция try/catch/finally
 - •Инструкция with
 - •Пустая инструкция
 - •Глава 3 Объекты
 - •Создание объектов
 - •Свойства объектов
 - •Объекты как ассоциативные массивы
 - •Свойства и методы универсального класса Object
 - •Объект String (Строка)
 - •Методы String обработки строк
 - •X.Split(" ") /* значение - массив из элементов: "Привет", "всем" */
 - •Методы String форматирования строк
 - •Функции вставки и замены подстрок
 - •Insstr ("Привет, друзья", " мои", 7) // "Привет, мои друзья"
 - •Insstr("Привет, друзья", " мои", 100) // "Привет, друзья мои"
 - •Практическое задание
 - •Массивы
 - •Чтение и запись элементов массива
 - •Добавление новых элементов в массив
 - •Длина массива
 - •Многомерные массивы
 - •Методы массивов
 - •Функции обработки числовых массивов
 - •Практическое задание
 - •Практические задания
 - •Объект Date
 - •Аргументы
 - •Статические методы
 - •Практические задания
 - •Объект Math (Математика)
 - •Свойства Math
 - •Методы Math
 - •Таймеры
 - •If (confirm("Прервать процесс ?"))
 - •Глава 4 Основы создания сценариев
 
Атрибут defer
Во время выполнения сценария может вызываться метод document.write() для динамического добавления содержимого в документ. Поэтому когда HTML - анализатор встречает сценарий, он должен прекратить разбор документа и ожидать, пока сценарий не завершит свою работу. Стандарт HTML 4 определяет атрибут defer для тега <script>, который имеет отношение к этой проблеме.
С помощью атрибута defer тега <script> можно сообщить браузеру, чтобы он спокойно продолжал обработку HTML-документа и отложил исполнение сценария до тех пор, пока не будет найден сценарий, выполнение которого отложено быть не может.
Задержка исполнения сценария полезна, когда сценарий загружается из внешнего файла; если исполнение сценария не задержать, браузер вынужден будет ждать окончания загрузки и только потом сможет продолжить разбор содержимого документа. Задержка исполнения может привести к повышению производительности браузеров, способных использовать преимущества атрибута defer. В HTML у атрибута defer не может быть значения; он просто должен присутствовать в теге:
<script defer>
// Любой JavaScript - код, не вызывающий document.write()
</script>
Однако в XHTML значение этого атрибута должно быть указано:
<script defer="defer"></script>
К настоящему моменту Internet Explorer был единственным браузером, использующим атрибут defer. При этом задержка выполняется, только когда тег <script> содержит атрибут src. Однако реализация задержки выполнена не совсем корректно, поскольку исполнение сценария с атрибутом defer всегда откладывается до окончания разбора документа, а не до того момента, когда встретится первый сценарий, исполнение которого нельзя отложить. Это означает, что отложенные сценарии в IE могут исполняться не в том порядке, в котором они располагаются в теле документа. В результате некоторые функции или переменные, востребованные в сценариях, исполнение которых не откладывалось, могут быть не определены.
Тег <noscript>
Язык разметки HTML определяет элемент <noscript>, предназначенный для хранения отображаемого содержимого на случай, когда в браузере включен режим, запрещающий исполнение JavaScript - кода.
В идеале веб - страницы должны создаваться так, чтобы JavaScript - код лишь расширял их функциональные возможности, а в случае его отключения страницы сохраняли свою работоспособность. Однако если это невозможно, с помощью тега <noscript> можно известить пользователя о том, что требуется включить поддержку JavaScript и, возможно, предоставить ссылку на альтернативную страницу.
Тег </script>
В какой_то момент вам может потребоваться с помощью метода document.write() или свойства innerHTML вывести некоторый другой сценарий (обычно в другое окно или фрейм). Тогда для завершения генерируемого сценария потребуется вывести тег </script>. Здесь необходима осторожность – HTML - анализатор не пытается понять JavaScript - код, и встретив строку "/script" даже внутри кавычек, он предположит, что это закрывающий тег выполняемого в данный момент сценария. Чтобы обойти это препятствие, разбейте тег на части и запишите его, например, в виде выражения "</" + "script>", как показано в следующем фрагменте:
<script>
f1.document.write("<script>");
f1.document.write("document.write('<h2>Это сценарий в кавычках</h2>')");
f1.document.write("</" + "script>");
</script>
В качестве альтернативы можно экранировать символ слэша / в теге </script> с помощью символа обратного слэша:
f1.document.write("<\/script>");
В XHTML сценарии заключаются в секцию CDATA и потому проблема с закрывающим тегом </script> никак не проявляется.
Нестандартные атрибуты тега <script>
В корпорации Microsoft были определены два нестандартных атрибута тега <script>, которые работают только в Internet Explorer. Атрибуты event и for позволяют задавать обработчики событий с помощью тега <script>. Атрибут event определяет имя обрабатываемого события, а атрибут for – имя, или идентификатор (ID), элемента, для которого этот обработчик предназначается. Сценарий исполняется, когда в заданном элементе возникает заданное событие.
Эти атрибуты работают только в IE, а достигаемый ими эффект легко может быть реализован другими способами. Эти атрибуты никогда не следует использовать – они упомянуты здесь лишь для того, чтобы вы знали об их существовании, если вдруг придется столкнуться с ними в существующих веб - страницах.
При написании скрипта следует учитывать следующие особенности языка.
В языке Java Script важен регистр! Например, переменные x и X – это разные переменные.
Нельзя свободно переносить на другие строки элементы выражений. Скажем, если при выводе на печать используется метод document.write(), то необходимо разместить команду в одной строке. В случае, если часть выражения не помещается, нужно разбить строку вывода на два оператора.
Отдельные операторы отделяются «;»
