- •Саратовский государственный технический университет
- •Введение
- •Три уровня 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(), то необходимо разместить команду в одной строке. В случае, если часть выражения не помещается, нужно разбить строку вывода на два оператора.
Отдельные операторы отделяются «;»