ISBN_13: 978_5_93286_103_5
ISBN 0_596_10199_6 (англ)
© Издательство Символ_Плюс, 2008
Authorized translation of the English edition © 2006 O’Reilly Media, Inc. This trans_ lation is published and sold by permission of O’Reilly Media, Inc., the owner of all rights to publish and sell the same.
Все права на данное издание защищены Законодательством РФ, включая право на полное или час_ тичное воспроизведение в любой форме. Все товарные знаки или зарегистрированные товарные зна_ ки, упоминаемые в настоящем издании, являются собственностью соответствующих фирм.
Издательство «Символ_Плюс». 199034, Санкт_Петербург, 16 линия, 7, тел. (812) 324_5353, www.symbol.ru. Лицензия ЛП N 000054 от 25.12.98. Налоговая льгота – общероссийский классификатор продукции
ОК 005_93, том 2; 953000 – книги и брошюры.
Подписано в печать 14.02.2008. Формат 70× 1001 /16 . Печать офсетная. Объем 62 печ. л. Тираж 2000 экз. Заказ N
Отпечатано с готовых диапозитивов в ГУП «Типография «Наука» 199034, Санкт_Петербург, 9 линия, 12.
Эта книга посвящается всем, кто учит жить мирно и противостоит насилию.
Оглавление
Предисловие . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13
1. Введение в JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20
1.1. Что такое JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 1.2. Версии JavaScript. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 1.3. Клиентский JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 1.4. Другие области использования JavaScript. . . . . . . . . . . . . . . . . . . . . . . . . . 28 1.5. Изучение JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Часть I. Основы JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .31
2. Лексическая структура . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .33
2.1. Набор символов. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 2.2. Чувствительность к регистру . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 2.3. Символы_разделители и переводы строк . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 2.4. Необязательные точки с запятой. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 2.5. Комментарии. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 2.6. Литералы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 2.7. Идентификаторы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 2.8. Зарезервированные слова . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3. Типы данных и значения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .39
3.1. Числа . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 3.2. Строки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 3.3. Логические значения. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 3.4. Функции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 3.5. Объекты . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 3.6. Массивы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 3.7. Значение null. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 3.8. Значение undefined . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 3.9. Объект Date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 3.10. Регулярные выражения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 3.11. Объекты Error. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 3.12. Преобразование типов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 3.13. Объекты_обертки для элементарных типов данных. . . . . . . . . . . . . . . . . 58
8 Оглавление
3.14. Преобразование объектов в значения элементарных типов . . . . . . . . . . 60 3.15. По значению или по ссылке . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
4. Переменные . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .67
4.1. Типизация переменных. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 4.2. Объявление переменных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 4.3. Область видимости переменной . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 4.4. Элементарные и ссылочные типы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 4.5. Сборка мусора . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 4.6. Переменные как свойства . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 4.7. Еще об области видимости переменных . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5. Выражения и операторы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .77
5.1. Выражения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 5.2. Обзор операторов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 5.3. Арифметические операторы. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 5.4. Операторы равенства . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 5.5. Операторы отношения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 5.6. Строковые операторы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 5.7. Логические операторы. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 5.8. Поразрядные операторы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 5.9. Операторы присваивания . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 5.10. Прочие операторы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
6. Инструкции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .99
6.1. Инструкции_выражения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 6.2. Составные инструкции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 6.3. Инструкция if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 6.4. Инструкция else if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 6.5. Инструкция switch. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 6.6. Инструкция while. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 6.7. Цикл do/while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 6.8. Инструкция for. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 6.9. Инструкция for/in . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 6.10. Метки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 6.11. Инструкция break . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 6.12. Инструкция continue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 6.13. Инструкция var . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 6.14. Инструкция function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 6.15. Инструкция return. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 6.16. Инструкция throw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 6.17. Инструкция try/catch/finally . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 6.18. Инструкция with . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 6.19. Пустая инструкция . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
6.20. Итоговая таблица JavaScript_инструкций. . . . . . . . . . . . . . . . . . . . . . . . 119
7. Объекты и массивы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .122
7.1. Создание объектов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 7.2. Свойства объектов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 7.3. Объекты как ассоциативные массивы . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 7.4. Свойства и методы универсального класса Object . . . . . . . . . . . . . . . . . . 127 7.5. Массивы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 7.6. Чтение и запись элементов массива . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 7.7. Методы массивов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 7.8. Объекты, подобные массивам. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
8. Функции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .139
8.1. Определение и вызов функций. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 8.2. Аргументы функций . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 8.3. Функции как данные . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 8.4. Функции как методы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 8.5. Функция_конструктор. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 8.6. Свойства и методы функций. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 8.7. Практические примеры функций . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 8.8. Область видимости функций и замыкания . . . . . . . . . . . . . . . . . . . . . . . . 156 8.9. Конструктор Function() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
9. Классы, конструкторы и прототипы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .165
9.1. Конструкторы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 9.2. Прототипы и наследование. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 9.3. Объектно_ориентированный язык JavaScript . . . . . . . . . . . . . . . . . . . . . . 172 9.4. Общие методы класса Object. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 9.5. Надклассы и подклассы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 9.6. Расширение без наследования . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 9.7. Определение типа объекта . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 9.8. Пример: вспомогательный метод defineClass() . . . . . . . . . . . . . . . . . . . . . 194
10. Модули и пространства имен . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .198
10.1. Создание модулей и пространств имен . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 10.2. Импорт символов из пространств имен . . . . . . . . . . . . . . . . . . . . . . . . . . 204 10.3. Модуль со вспомогательными функциями . . . . . . . . . . . . . . . . . . . . . . . 208
11. Шаблоны и регулярные выражения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .214
11.1. Определение регулярных выражений . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 11.2. Методы класса String для поиска по шаблону . . . . . . . . . . . . . . . . . . . . 223 11.3. Объект RegExp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
10 Оглавление
12. Разработка сценариев для Java_приложений . . . . . . . . . . . . . . . . . . . . .229
12.1. Встраивание JavaScript. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229 12.2. Взаимодействие с Java_кодом . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
Часть II. Клиентский JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .249
13. JavaScript в веб_броузерах . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .251
13.1. Среда веб_броузера . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 13.2. Встраивание JavaScript_кода в HTML_документы . . . . . . . . . . . . . . . . . 258 13.3. Обработчики событий в HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264 13.4. JavaScript в URL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266 13.5. Исполнение JavaScript_программ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268 13.6. Совместимость на стороне клиента . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273 13.7. Доступность. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279 13.8. Безопасность в JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280 13.9. Другие реализации JavaScript во Всемирной паутине . . . . . . . . . . . . . 285
14. Работа с окнами броузера . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .287
14.1. Таймеры. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288 14.2. Объекты Location и History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289 14.3. Объекты Window, Screen и Navigator. . . . . . . . . . . . . . . . . . . . . . . . . . . . 291 14.4. Методы управления окнами . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297 14.5. Простые диалоговые окна. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302 14.6. Строка состояния . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303 14.7. Обработка ошибок . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304 14.8. Работа с несколькими окнами и фреймами . . . . . . . . . . . . . . . . . . . . . . . 306 14.9. Пример: панель навигации во фрейме . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
15. Работа с документами . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .314
15.1. Динамическое содержимое документа . . . . . . . . . . . . . . . . . . . . . . . . . . . 315 15.2. Свойства объекта Document . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
15.3. Ранняя упрощенная модель DOM: коллекции
объектов документа . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319 15.4. Обзор объектной модели W3C DOM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323 15.5. Обход документа. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334 15.6. Поиск элементов в документе . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335 15.7. Модификация документа . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339 15.8. Добавление содержимого в документ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343 15.9. Пример: динамическое создание оглавления . . . . . . . . . . . . . . . . . . . . . 351 15.10. Получение выделенного текста . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356 15.11. IE 4 DOM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357
16. CSS и DHTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .360
16.1. Обзор CSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361 16.2. CSS для DHTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370 16.3. Использование стилей в сценариях . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386 16.4. Вычисляемые стили. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395 16.5. CSS_классы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396 16.6. Таблицы стилей . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
17. События и обработка событий . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .403
17.1. Базовая обработка событий . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404 17.2. Развитые средства обработки событий в модели DOM Level 2 . . . . . . . 414 17.3. Модель обработки событий Internet Explorer . . . . . . . . . . . . . . . . . . . . . 425 17.4. События мыши . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435 17.5. События клавиатуры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440 17.6. Событие onload . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449 17.7. Искусственные события . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450
18. Формы и элементы форм . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .453
18.1. Объект Form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454 18.2. Определение элементов формы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455 18.3. Сценарии и элементы формы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459 18.4. Пример верификации формы. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467
19. Cookies и механизм сохранения данных на стороне клиента . . . . . . .472
19.1. Обзор cookies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472 19.2. Сохранение cookie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475 19.3. Чтение cookies. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476 19.4. Пример работы с cookie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477 19.5. Альтернативы cookies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481 19.6. Хранимые данные и безопасность . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493
20. Работа с протоколом HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .494
20.1. Использование объекта XMLHttpRequest . . . . . . . . . . . . . . . . . . . . . . . . 495 20.2. Примеры и утилиты с объектом XMLHttpRequest. . . . . . . . . . . . . . . . . 502 20.3. Ajax и динамические сценарии . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509 20.4. Взаимодействие с протоколом HTTP с помощью тега <script> . . . . . . 516
21. JavaScript и XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .518
21.1. Получение XML_документов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518 21.2. Манипулирование XML_данными cредствами DOM API . . . . . . . . . . . 524 21.3. Преобразование XML_документа с помощью XSLT . . . . . . . . . . . . . . . . 528
21.4. Выполнение запросов к XML_документу с помощью
XPath_выражений . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531
12 Оглавление
21.5. Сериализация XML_документа . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536 21.6. Разворачивание HTML_шаблонов с использованием XML_данных. . . 537 21.7. XML и веб_службы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 540 21.8. E4X: EcmaScript для XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543
22. Работа с графикой на стороне клиента . . . . . . . . . . . . . . . . . . . . . . . . . . . .546
22.1. Работа с готовыми изображениями. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547 22.2. Графика и CSS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555 22.3. SVG – масштабируемая векторная графика . . . . . . . . . . . . . . . . . . . . . . 562 22.4. VML – векторный язык разметки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569 22.5. Создание графики с помощью тега <canvas> . . . . . . . . . . . . . . . . . . . . . 572 22.6. Создание графики средствами Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576 22.7. Создание графики с помощью Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581
23. Сценарии с Java_апплетами и Flash_роликами . . . . . . . . . . . . . . . . . . . .588
23.1. Работа с апплетами . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 590 23.2. Работа с подключаемым Java_модулем . . . . . . . . . . . . . . . . . . . . . . . . . . 592 23.3. Взаимодействие с JavaScript_сценариями из Java . . . . . . . . . . . . . . . . . 593 23.4. Взаимодействие с Flash_роликами . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 597 23.5. Сценарии во Flash 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605
Часть III. Справочник по базовому JavaScript . . . . . . . . . . . . . . . . . . . . .607
Часть IV. Справочник по клиентскому JavaScript . . . . . . . . . . . . . . . . . .721
Алфавитный указатель . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .946