- •4.2.1. Повторные и опущенные объявления
- •Типы данных
- •3.1.3. Литералы вещественных чисел
- •3.1.6. Специальные числовые значения
- •3.2.2. Управляющие последовательности в строковых литералах
- •3.3. Логические значения
- •3.4.1. Функциональные литералы
- •3.6. Массивы
- •7.6.1. Добавление новых элементов в массив
- •7.7.9. Методы toString() и toLocaleString()
- •7.7.10. Дополнительные методы массивов
- •11.1.2. Классы символов
- •11.1.3. Повторение
- •11.1.4. Альтернативы, группировка и ссылки
- •11.1.6. Флаги
- •1 Здесь функция alert() используется просто для отображения информации: она
- •13.2.2. Сценарии во внешних файлах
- •13.3. Обработчики событий в html
- •13.5.5. Объект Window как контекст исполнения
- •15.2. Свойства объекта Document
- •1 Модель dom может также использоваться для представления xmLдокументов,
- •15.4.2. Узлы
- •15.4.2.1. Типы узлов
- •1 Стандарт dom определяет интерфейсы, а не классы. Те, кто не знаком с термином
- •15.4.2.2. Атрибуты
- •15.5. Обход документа
- •1 Во многих сложных dhtmLэффектах используются также приемы обработки
- •16.1. Обзор css
- •1 Эрик Мейер «css – каскадные таблицы стилей. Подробное руководство», 3е из
- •16.1.1. Применение правил стиля к элементам документа
- •16.2.1. Ключ к dhtml: абсолютное позиционирование
- •16.2.3. Определение положения и размеров элемента
- •16.3.2. Работа со свойствами стилей
- •300 Пикселов:
- •17.1.1.1. Аппаратнозависимые и аппаратнонезависимые события
- •17.1.2. Обработчики событий как атрибуты
- •1 Подробное описание htmLформ, включая пример проверки правильности за
- •17.2.6.3. Интерфейс MouseEvent
- •17.5. События клавиатуры
- •17.5.1. Типы событий клавиатуры
- •17.5. События клавиатуры 441
1 Здесь функция alert() используется просто для отображения информации: она
преобразует свой аргумент в строку и выводит ее в диалоговом окне. Подробнее
метод alert() описывается в разделе 14.5. В примере 15.9 приводится альтернати
ва функции alert(), не создающая всплывающих диалоговых окон, для закрытия
которых требуется выполнить щелчок.13.2. Встраивание JavaScript*кода в HTML*документы 259
<script>alert(square(2));</script>
В примере 13.1 показан HTMLфайл, включающий простую JavaScriptпрограм
му. Обратите внимание на различие между этим примером и многими фрагмен
тами кода, показанными в этой книге ранее: пример интегрирован в HTMLфайл
и имеется понятный контекст, в котором он работает. Обратите также внимание
на атрибут language в теге <script>. Его описание приводится в разделе 13.2.3.
Пример 13.1. Простая JavaScript'программа в HTML'файле
<html>
<head>
<title>Сегодняшняя дата</title>
<script language="JavaScript">
// Определяем функцию для дальнейшего использования
function print_todays_date() {
var d = new Date(); // Получаем текущие дату и время
document.write(d.toLocaleString()); // Вставляем это в документ
}
</script>
</head>
<body>
Дата и время:<br>
<script language="JavaScript">
// Теперь вызываем определенную ранее функцию
print_todays_date();
</script>
</body>
</html>
Пример 13.1 помимо всего прочего демонстрирует использование функции docu
ment.write(). В клиентском JavaScript эта функция может применяться для вы
вода HTMLтекста в той точке документа, в которой располагается сценарий (бо
лее подробно об этом методе рассказывается в главе 15). Обратите внимание: спо
собность сценариев генерировать текст для вставки в HTMLдокумент означает,
что синтаксический анализатор HTMLкода должен интерпретировать Java
Scriptсценарии как часть общего процесса синтаксического разбора документа.
Невозможно просто взять и объединить все сценарии в документе и запустить по
лучившийся результат как один большой сценарий уже после окончания разбора
документа, потому что любой сценарий, находящийся в документе, может изме
нить этот документ (обсуждение атрибута defer приводится в разделе 13.2.4).
13.2.2. Сценарии во внешних файлах
Тег <script> поддерживает атрибут src. Значение этого атрибута задает URLад
рес файла, содержащего JavaScriptкод. Используется он следующим образом:
<script src="../../javascript/util.js"></script>
Файл JavaScriptкода обычно имеет расширение .js и содержит JavaScriptкод
в «чистом виде» без тегов <script> или любого другого HTMLкода.
Тег <script> с атрибутом src ведет себя точно так же, как если бы содержимое ука
занного файла JavaScriptкода находилось непосредственно между тегами <script>
и </script>. Любой код, указанный между этими тегами, игнорируется броузера260 Глава 13. JavaScript в веб*броузерах
ми. Обратите внимание, что закрывающий тег </script> обязателен даже в том
случае, когда указан атрибут src и между тегами отсутствует JavaScriptкод.
Использование тега с атрибутом src дает ряд преимуществ:
• HTMLфайлы становятся проще, т. к. из них можно убрать большие блоки
JavaScriptкода, что помогает отделить содержимое от поведения. Атрибут src
является краеугольным камнем применения парадигмы ненавязчивого Java
Scriptкода (подробнее об этой парадигме рассказывалось в разделе 13.1.5).
• JavaScriptфункцию или другой JavaScriptкод, используемый несколькими
HTMLфайлами, можно держать в одном файле и считывать при необходимо
сти. Это уменьшает объем занимаемой дисковой памяти и намного облегчает
поддержку программного кода.
• Когда JavaScriptфункции требуются нескольким страницам, размещение
кода в виде отдельного файла позволяет броузеру кэшировать его и тем са
мым ускорять загрузку. Когда JavaScriptкод совместно используется не
сколькими страницами, экономия времени, достигаемая за счет кэширова
ния, явно перевешивает небольшую задержку, требуемую броузеру для от
крытия отдельного сетевого соединения и загрузки файла JavaScriptкода
при первом запросе на его исполнение.
• Атрибут src принимает в качестве значения произвольный URLадрес, поэто
му JavaScriptпрограмма или вебстраница с одного вебсервера может вос
пользоваться кодом (например, из библиотеки подпрограмм), предоставляе
мым другими вебсерверами.
У последнего пункта есть важное следствие, имеющее отношение к обеспечению
безопасности. Политика общего происхождения, описываемая в разделе 13.8.2,
предотвращает возможность взаимодействия документов из одного домена с со
держимым из другого домена. Однако следует отметить, что источник получения
самого сценария не имеет значения, значение имеет источник получения доку
мента, в который встраивается сценарий. Таким образом, политика общего про
исхождения в данном случае неприменима: JavaScriptкод может взаимодейство
вать с документами, в которые он встраивается, даже если этот код получен из
другого источника, нежели сам документ. Включая сценарий в свою вебстраницу
с помощью атрибута src, вы предоставляете автору сценария (или вебмастеру до
мена, откуда загружается сценарий) полный контроль над своей вебстраницей.