JavaScript. Подробное руководство

Эта книга является не только руководством программиста JavaScript, но и полноценным справочником для разработчиков и WEB-дизайнеров.

 

 

 

 

Флэнаган Д. "JavaScript. Подробное руководство", Символ-Плюс, 2012 год,1080 стр, ил., (15,7 мб,.djvu)

JavaScript язык сценариев широко используемый WEB дизайнерами для придания динамичности и интерактивности веб приложениям. Является основой технологии AJAX. JavaScript также может быть использован при создании прикладных программ, мобильных приложений, виджетов, серверных приложений, браузерных операционных системах. Например - WebOS.

Отрывок из книги:

Арифметические выражения деления и вычитания, поэтому они будут рассмотрены первыми. Оператор сложения будет описан в собственном подразделе, потому что он также выполняет операцию конкатенации строк и использует некоторые необычные правила преобразования типов. Унарные и поразрядные операторы также будут рассматриваться в отдельных подразделах. Основными арифметическими операторами являются * (умножение), / (деление), % (деление по модулю: остаток от деления), + (сложение) и - (вычитание). Как уже отмечалось, оператор + будет рассматриваться в отдельном разделе.

Другие основные четыре оператора просто определяют значения своих операндов, преобразуют их значения в числа, если это необходимо, и вычисляют произведение, частное, остаток или разность значений. Нечисловые операнды, которые не могут быть преобразованы в числа, преобразуются в значение NaN. Если какой-либо из операндов имеет (или преобразуется в) значение NaN, результатом операции также будет значение NaN.

Оператор / делит первый операнд на второй. Если вам приходилось работать с языками программирования, в которых целые и вещественные числа относятся к разным типам, вы могли бы ожидать получить целый результат от деления одного целого числа на другое целое число. Однако в языке JavaScript все числа являются вещественными, поэтому все операции деления возвращают вещественный результат: выражение 5/2 вернет 2.5, а не 2. Деление на ноль возвращает положительную или отрицательную бесконечность, тогда как выражение 0/0 возвращает NaN; ни в одном из этих случаев не возбуждается исключение.

Оператор % производит деление по модулю первого операнда на второй. Иными словами, он возвращает остаток от целочисленного деления первого операнда на второй. Знак результата определяется знаком первого операнда. Например, выражение 5 % 2 вернет 1, а выражение -5 % 2 вернет -1. Несмотря на то что оператор по модулю обычно применяется к целым числам, он также может оперировать вещественными значениями. Например, выражение 6.5 % 2.1 вернет 0,2. Двухместный оператор + складывает числовые операнды или выполняет конкатенацию строковых операндов: Когда значениями обоих операндов являются числа или строки, результат действия оператора + очевиден.

Однако в других случаях возникает необходимость преобразования типов, выполняемая операция зависит от результатов преобразований. В соответствии с правилами преобразований оператор + отдает предпочтение операции конкатенации строк: если один изоперандов является строкой или объектом, который может быть преобразован в строку, другой операнд также преобразуется в строку, после чего выполняется операция конкатенации строк.Операция сложения выполняется, только если ни один из операндов не является строкой.Формально оператор + использует следующий алгоритм работы:
4.8.1. Оператор +
1 + 2
"hello" + " " + "there" "Г + "2"
// => 3
// => "hello there" // => "12"

Оглавление
Предисловие 17

1.Введение в JavaScript .21
1.1. Базовый JavaScript 25
1.2.Клиентский JavaScript 29
1.2.1. Пример: калькулятор платежей по ссуде на JavaScript .33
1. Базовый JavaScript 39

2. Лексическая структура .41
2.1. Набор символов .41
2.1.1.Чувствительность к регистру 41
2.1.2. Пробелы, переводы строк и символы управления форматом 42
2.1.3. Экранированные последовательности Юникода. .42
2.1.4. Нормализация .43
2.2. Комментарии .43
2.3. Литералы 43
2.4. Идентификаторы и зарезервированные слова 44
2.4.1. Зарезервированные слова 44
2.5. Необязательные точки с запятой .46

3. Типы данных, значения и переменные .49
3.1. Числа 51
3.1.1. Целые литералы .52
3.1.2. Литералы вещественных чисел .52
3.1.3. Арифметические операции в JavaScript 53
3.1.4. Двоичное представление вещественных чисел и ошибки округления 55
3.1.5. Дата и время .56
3.2. Текст .56
3.2.1. Строковые литералы .56
3.2.2. Управляющие последовательности в строковых литералах 58
3.2.3. Работа со строками .59
3.2.4. Сопоставление с шаблонами .60
3.3. Логические значения 61
3.4. Значения null и undefined 62
3.5. Глобальный объект .63
3.6. Объекты-обертки .64
3.7. Неизменяемые простые значения и ссылки на изменяемые объекты .65
3.8. Преобразование типов .67
3.8.1. Преобразования и равенство .68
3.8.2. Явные преобразования 69
3.8.3. Преобразование объектов в простые значения 71
3.9. Объявление переменных .74
3.9.1 Повторные и опущенные объявления .74
3.10. Область видимости переменной .75
3.10.1. Область видимости функции и подъем .76
3.10.2. Переменные как свойства .77
3.10.3 Цепочки областей видимости 78

4. Выражения и операторы .79
4.1. Первичные выражения .79
4.2. Инициализаторы объектов и массивов .80
4.3. Выражения определений функций .81
4.4. Выражения обращения к свойствам ..82
4.5. Выражения вызова .83
4.6. Выражения создания объектов .84
4.7. Обзор операторов .84
4.7.1. Количество операндов .86
4.7.2. Типы данных операндов и результата .86
4.7.3. Левосторонние выражения 86
4.7.4. Побочные эффекты операторов .87
4.7.5. Приоритет операторов. .87
4.7.6. Ассоциативность операторов .88
4.7.7. Порядок вычисления .88
4.8. Арифметические выражения .88
4.8.1. Оператор + .89
4.8.2. Унарные арифметические операторы .90
4.8.3. Поразрядные операторы .91
4.9. Выражения отношений .93
4.9.1. Операторы равенства и неравенства .93
4.9.2. Операторы сравнения .95
4.9.3. Оператор in ..97
4.9.4. Оператор instanceof. .97
4.10. Логические выражения .98
4.10.1. Логическое И (&&) .98
4.10.2. Логическое ИЛИ (||). 99
4.10.3. Логическое НЕ (!) 100
4.11. Выражения присваивания. .100
4.11.1. Присваивание с операцией .101
4.12. Вычисление выражений .102
4.12.1. eval() .103
4.12.2. Использование eval() в глобальном контексте 103
4.12.3. Использование eval() в строгом режиме. 104
4.13. Прочие операторы .105
4.13.1. Условный оператор (?:). .105
4.13.2. Оператор typeof 105
4.13.3. Оператор delete .107
4.13.4. Оператор void .108
4.13.5. Оператор «запятая» (,). .108

5. Инструкции 109
5.1. Инструкции-выражения. .110
5.2. Составные и пустые инструкции .110
5.3. Инструкции-объявления. .112
5.3.1. Инструкция var .112
5.3.2. Инструкция function 113
5.4. Условные инструкции. .114
5.4.1. Инструкция if .114
5.4.2. Инструкция else if .116
5.4.3. Инструкция switch .117
5.5. Циклы.... 119
5.5.1. Инструкция while .119
5.5.2. Инструкция do/while. .120
5.5.3. Инструкция for. .121
5.5.4. Инструкция for/in. .122
5.6. Переходы.. .124
5.6.1. Метки инструкций. .124
5.6.2. Инструкция break .125
5.6.3. Инструкция continue. .126
5.6.4. Инструкция return ..127
5.6.5. Инструкция throw. 128
5.6.6. Инструкция try/catch/finally .129
5.7. Прочие инструкции. .131
5.7.1. Инструкция with. .131
5.7.2. Инструкция debugger. .132
5.7.3. "use strict". 133
5.8. Итоговая таблица JavaScript-инcтрукций. .135

6. Объекты. .137
6.1. Создание объектов .139
6.1.1. Литералы объектов 139
6.1.2. Создание объектов с помощью оператора new 140
6.1.3. Прототипы. .140
6.1.4. Object.create() ..141
6.2. Получение и изменение свойств 142
6.2.1. Объекты как ассоциативные массивы .143
6.2.2. Наследование 144
6.2.3. Ошибки доступа к свойствам 145
6.3. Удаление свойств .147
6.4. Проверка существования свойств 148
6.5. Перечисление свойств 149
6.6. Методы чтения и записи свойств 152
6.7. Атрибуты свойств 154
6.7.1. Устаревшие приемы работы с методами чтения и записи 157
6.8. Атрибуты объекта 158
6.8.1. Атрибут prototype 158
6.8.2. Атрибут class 159
6.8.3. Атрибут extensible 160
6.9. Сериализация объектов 161
6.10. Методы класса Object 162
6.10.1. Метод toString() .162
6.10.2. Метод toLocaleStringQ 163
6.10.3. Метод toJSON(). 163
6.10.4. Метод valueOf(). .163

7. Массивы. 164
7.1. Создание массивов 165
7.2. Чтение и запись элементов массива 166
7.3. Разреженные массивы 167
7.4. Длина массива 168
7.5. Добавление и удаление элементов массива .169
7.6. Обход элементов массива. 170
7.7. Многомерные массивы .171
7.8. Методы класса Array. 172
7.8.1. Метод joinO. .172
7.8.2. Метод reverse() 172
7.8.3. Метод sort(). 173
7.8.4. Метод concat(). .173
7.8.5. Метод slice(). 174
7.8.6. Метод spliceO. .174
7.8.7. Методы push() и рор(). 175
7.8.8. Методы unshift() и shift(). 175
7.8.9. Методы toStringO и toLocaleStringO. 176
7.9. Методы класса Array, определяемые стандартом ECMAScript 5 ..176
7.9.1. Метод forEach(). 176
7.9.2. Метод шар() 177
7.9.3. Метод filter() .177
7.9.4. Методы every() и some(). 178
7.9.5. Методы reduce() и reduceRight(). 178
7.9.6. Методы indexOf() и lastIndexOf(). 180
7.10. Тип Array. .181
7.11. Объекты, подобные массивам 182
7.12. Строки как массивы 184

8 Функции 185
8.1. Определение функций .185
8.1.1. Вложенные функции. 188
8.2. Вызов функций 189
8.2.1. Вызов функций. 189
8.2.2. Вызов методов .190
8.2.3. Вызов конструкторов .192
8.2.4. Косвенный вызов .193
8.3. Аргументы и параметры функций .193
8.3.1. Необязательные аргументы 193
8.3.2. Списки аргументов переменной длины: объект Arguments 194
8.3.3. Использование свойств объекта в качестве аргументов 196
8.3.4. Типы аргументов 197
8.4. Функции как данные 198
8.4.1. Определение собственных свойств функций. .200
8.5. Функции как пространства имен. 201
8.6. Замыкания .203
8.7. Свойства и методы функций и конструктор Function 209
8.7.1. Свойство length .209
8.7.2. Свойство prototype. .209
8.7.3. Методы call() и арр1у(). .210
8.7.4. Метод bind() .211
8.7.5. Метод toString(). .213
8.7.6. Конструктор Function(). .213
8.7.7. Вызываемые объекты 214
8.8. Функциональное программирование .215
8.8.1. Обработка массивов с помощью функций ..215
8.8.2. Функции высшего порядка. ..217
8.8.3. Частичное применение функций. .218
8.8.4. Мемоизация. .220

9. Классы и модули .221
9.1. Классы и прототипы ..222
9.2. Классы и конструкторы .223
9.2.1. Конструкторы и идентификация класса. .225
9.2.2. Свойство constructor .226
9.3. Классы в стиле Java.. ..227
9.4. Наращивание возможностей классов .231
9.5. Классы и типы. .232
9.5.1. Оператор instanceof. .232
9.5.2. Свойство constructor .233
9.5.3. Имя конструктора. .234
9.5.4. Грубое определение типа. 235
9.6. Приемы объектно-ориентированного программирования в JavaScript .238
9.6.1. Пример: класс множества .238
9.6.2. Пример: типы-перечисления. .239
9.6.3. Стандартные методы преобразований. .242
9.6.4. Методы сравнения. .244
9.6.5. Заимствование методов .247
9.6.6. Частные члены .249
9.6.7. Перегрузка конструкторов и фабричные методы .250
9.7. Подклассы .252
9.7.1. Определение подкласса 252
9.7.2. Вызов конструктора и методов базового класса .254
9.7.3. Композиция в сравнении с наследованием .256
9.7.4. Иерархии классов и абстрактные классы .258
9.8. Классы в ECMAScript 5. 262
9.8.1. Определение неперечислимых свойств .262
9.8.2. Определение неизменяемых классов. .263
9.8.3. Сокрытие данных объекта. .265
9.8.4. Предотвращение расширения класса .266
9.8.5. Подклассы и ECMAScript 5.... 267
9.8.6. Дескрипторы свойств. ..268
9.9. Модули...... .270
9.9.1. Объекты как пространства имен. 271
9.9.2. Область видимости функции как частное пространство имен. 273

10. Шаблоны и регулярные выражения.. ..276
10.1. Определение регулярных выражений.. .276
10.1.1. Символы литералов.. .277
10.1.2. Классы символов. .278
10.1.3. Повторение.. .279
10.1.4. Альтернативы, группировка и ссылки. .281
10.1.5. Указание позиции соответствия .283
10.1.6. Флаги.... .284
10.2. Методы класса String для поиска по шаблону.. .285
10.3. Объект RegExp.. .287
10.3.1. Свойства RegExp.. ..288
10.3.2. Методы RegExp... .288

11. Подмножества и расширения JavaScript. .290
11.1. Подмножества JavaScript.. .291
11.1.1. Подмножество The Good Parts ..291
11.1.2. Безопасные подмножества.. .292
11.2. Константы и контекстные переменные. ..295
11.3. Присваивание с разложением.. .298
11.4. Итерации.. .300
11.4.1. Цикл for/each. .300
11.4.2. Итераторы. .301
11.4.3. Генераторы. .303
11.4.4. Генераторы массивов. .307
11.4.5. Выражения-генераторы.. .308
11.5. Краткая форма записи функций .309
11.6. Множественные блоки catch .309
11.7. Е4Х: ECMAScript for XML. ..310

12. Серверный JavaScript .314
12.1. Управление Java с помощью Rhino .315
12.1.1. Пример использования Rhino .319
12.2. Асинхронный ввод/вывод в интерпретаторе Node 321
12.2.1. Пример использования Node: HTTP-сервер 327
12.2.2. Пример использования Node: модуль утилит клиента HTTP. .329

II. Клиентский JavaScript 331

13. JavaScript в веб-браузерах .333
13.1. Клиентский JavaScript. 333
13.1.1. Сценарии JavaScript в веб-документах .336
13.1.2. Сценарии JavaScript в веб-приложениях 336
13.2. Встраивание JavaScript-код а в разметку HTML. .337
13.2.1. Элемент <script>. .338
13.2.2. Сценарии во внешних файлах. .339
13.2.3. Тип сценария.. .340
13.2.4. Обработчики событий в HTML. .341
13.2.5. JavaScript в URL. .342
13.3. Выполнение JavaScript-nporpaMM. .344
13.3.1. Синхронные, асинхронные и отложенные сценарии. .345
13.3.2. Выполнение, управляемое событиями. .347
13.3.3. Модель потоков выполнения в клиентском JavaScript. 349
13.3.4. Последовательность выполнения клиентских сценариев. 350
13.4. Совместимость на стороне клиента. .352
13.4.1. Библиотеки обеспечения совместимости. .356
13.4.2. Классификация броузеров .356
13.4.3. Проверка особенностей. 357
13.4.4. Режим совместимости и стандартный режим. .358
13.4.5. Проверка типа броузера. .358
13.4.6. Условные комментарии в Internet Explorer. .359
13.5. Доступность. .360
13.6. Безопасность. .361
13.6.1. Чего не может JavaScript .362
13.6.2. Политика общего происхождения .363
13.6.3. Взаимодействие с модулями расширения и элементами управления ActiveX. .365
13.6.4. Межсайтовый скриптинг.. .365
13.6.5. Атаки типа отказа в обслуживании .367
13.7. Клиентские фреймворки. 367

14. Объект Window. .369
14.1. Таймеры .370
14.2. Адрес документа и навигация по нему. 371
14.2.1. Анализ URL. .371
14.2.2. Загрузка нового документа 372
14.3. История посещений .373
14.4. Информация о броузере и об экране .374
14.4.1. Объект Navigator. .374
14.4.2. Объект Screen 377
14.5. Диалоги .377
14.6. Обработка ошибок. .379
14.7. Элементы документа как свойства окна .380
14.8. Работа с несколькими окнами и фреймами 382
14.8.1. Открытие и закрытие окон .383
14.8.2. Отношения между фреймами .385
14.8.3. JavaScript во взаимодействующих окнах ..387

15. Работа с документами 390
15.1. Обзор модели DOM. .390
15.2. Выбор элементов документа. .393
15.2.1. Выбор элементов по значению атрибута id 393
15.2.2. Выбор элементов по значению атрибута name .394
15.2.3. Выбор элементов по типу. .395
15.2.4. Выбор элементов по классу CSS. .397
15.2.5. Выбор элементов с использованием селекторов CSS. .398
15.2.6. document.all[]. .400
15.3. Структура документа и навигация по документу .401
15.3.1. Документы как деревья узлов. .401
15.3.2. Документы как деревья элементов. .402
15.4. Атрибуты ..405
15.4.1. HTML-атрибуты как свойства объектов Element .405
15.4.2. Доступ к нестандартным HTML-атрибутам .406
15.4.3. Атрибуты с данными. .407
15.4.4. Атрибуты как узлы типа Attr. .408
15.5. Содержимое элемента. .409
15.5.1. Содержимое элемента в виде HTML. .409
15.5.2. Содержимое элемента в виде простого текста. .410
15.5.3. Содержимое элемента в виде текстовых узлов ..411
15.6. Создание, вставка и удаление узлов. ..412
15.6.1. Создание узлов. ..413
15.6.2. Вставка узлов ..413
15.6.3. Удаление и замена узлов .415
15.6.4. Использование объектов DocumentFragment .416
15.7. Пример: создание оглавления ..418
15.8. Геометрия документа и элементов и прокрутка. ..421
15.8.1. Координаты документа и видимой области 421
15.8.2. Определение геометрии элемента. .423
15.8.3. Определение элемента в указанной точке .424
15.8.4. Прокрутка.. .425
15.8.5. Подробнее о размерах, позициях и переполнении элементов. ..426
15.9. HTML-формы. 428
15.9.1. Выбор форм и элементов форм. 430
15.9.2. Свойства форм и их элементов .431
15.9.3. Обработчики событий форм и их элементов .432
15.9.4. Кнопки...... .433
15.9.5. Переключатели и флажки. .434
15.9.6. Текстовые поля ввода. .434
15.9.7. Элементы Select и Option.. .435
15.10. Другие особенности документов. .437
15.10.1. Свойства объекта Document. .437
15.10.2. Метод document.writeO. 438
15.10.3. Получение выделенного текста .440
15.10.4. Редактируемое содержимое 441

16. Каскадные таблицы стилей 444
16.1. Обзор CSS. 445
16.1.1. Каскад правил 446
16.1.2. История развития CSS. 447
16.1.3. Сокращенная форма определения свойств 447
16.1.4. Нестандартные свойства .447
16.1.5. Пример CSS-таблицы 448
16.2. Наиболее важные CSS-свойства 450
16.2.1. Позиционирование элементов с помощью CSS 451
16.2.2. Рамки, поля и отступы .454
16.2.3. Блочная модель и детали позиционирования в CSS 455
16.2.4. Отображение и видимость элементов 457
16.2.5. Цвет, прозрачность и полупрозрачность 458
16.2.6. Частичная видимость: свойства overflow и clip 459
16.2.7. Пример: перекрытие полупрозрачных окон 460
16.3. Управление встроенными стилями 463
16.3.1. Создание анимационных эффектов средствами CSS .465
16.4. Вычисленные стили 468
16.5. CSS-классы 470
16.6. Управление таблицами стилей 472
16.6.1. Включение и выключение таблиц стилей .472
16.6.2. Получение, вставка и удаление правил из таблиц стилей .473
16.6.3. Создание новых таблиц стилей .474

17. Обработка событий .476
17.1. Типы событий. 479
17.1.1. Старые типы событий. 479
17.1.2. События модели DOM. .485
17.1.3. События HTML5 .486
17.1.4. События, генерируемые сенсорными экранами и мобильными устройствами. .488
17.2. Регистрация обработчиков событий. .489
17.2.1. Установка свойств обработчиков событий .489
17.2.2. Установка атрибутов обработчиков событий. .490
17.2.3. addEventListener() .491
17.2.4. attachEvent(). .492
17.3. Вызов обработчиков событий. .492
17.3.1. Аргумент обработчика событий. .493
17.3.2. Контекст обработчиков событий. .493
17.3.3. Область видимости обработчика событий 494
17.3.4. Возвращаемые значения обработчиков .495
17.3.5. Порядок вызова .495
17.3.6. Распространение событий .496
17.3.7. Отмена событий. ..497
17.4. События загрузки документа ..498
17.5. События мыши. .500
17.6. События колесика мыши. ..504
17.7. События механизма буксировки (drag-and-drop). .508
17.8. События ввода текста .515
17.9. События клавиатуры. .518

18. Работа с протоколом HTTP. .524
18.1. Использование объекта XMLHttpRequest .527
18.1.1. Выполнение запроса .529
18.1.2. Получение ответа. ..531
18.1.3. Оформление тела запроса. ..535
18.1.4. События, возникающие в ходе выполнения HTTP-запроса ..541
18.1.5. Прерывание запросов и предельное время ожидания. .544
18.1.6. Выполнение междоменных HTTP-запросов. .545
18.2. Выполнение HTTP-запросов с помощью <script>: JSONP. ..548
18.3. Архитектура Comet на основе стандарта «Server-Sent Events». .550

19. Библиотека jQuery ..556
19.1. Основы jQuery.. .557
19.1.1. Функция jQuery(). ..558
19.1.2. Запросы и результаты запросов. .562
19.2. Методы чтения и записи объекта jQuery. .565
19.2.1. Чтение и запись значений HTML-атрибутов .565
19.2.2. Чтение и запись значений CSS-атрибутов ..566
19.2.3. Чтение и запись CSS-классов ..566
19.2.4. Чтение и запись значений элементов HTML-форм ..567
19.2.5. Чтение и запись содержимого элемента ..568
19.2.6. Чтение и запись параметров геометрии элемента ..568
19.2.7. Чтение и запись данных в элементе. .570
19.3. Изменение структуры документа. ..571
19.3.1. Вставка и замена элементов.. ..571
19.3.2. Копирование элементов. .573
19.3.3. Обертывание элементов. .574
19.3.4. Удаление элементов ..574
19.4. Обработка событий с помощью библиотеки jQuery. .575
19.4.1. Простые методы регистрации обработчиков событий .575
19.4.2. Обработчики событий в библиотеке jQuery .577
19.4.3. Объект Event в библиотеке jQuery .577
19.4.4. Дополнительные способы регистрации обработчиков событий .579
19.4.5. Удаление обработчиков событий. .580
19.4.6. Возбуждение событий. .582
19.4.7. Реализация собственных событий .584
19.4.8. Динамические события .584
19.5. Анимационные эффекты .586
19.5.1. Простые эффекты. ..588
19.5.2. Реализация собственных анимационных эффектов .589
19.5.3. Отмена, задержка и постановка эффектов в очередь .593
19.6. Реализация Ajax в библиотеке jQuery. .595
19.6.1. Метод load(). .595
19.6.2. Вспомогательные функции поддержки Ajax .597
19.6.3. Функция jQuery.ajaxO .602
19.6.4. События в архитектуре Ajax .608
19.7. Вспомогательные функции .610
19.8. Селекторы и методы выбора в библиотеке jQuery. .613
19.8.1. Селекторы jQuery. .613
19.8.2. Методы выбора .618
19.9. Расширение библиотеки jQuery с помощью модулей расширений. .622
19.10. Библиотека jQuery UI. .625

20. Сохранение данных на стороне клиента. .627
20.1. Объекты localStorage и sessionStorage .630
20.1.1. Срок хранения и область видимости. .630
20.1.2. Прикладной программный интерфейс объекта Storage. ..632
20.1.3. События объекта Storage .633
20.2. Cookies.. .634
20.2.1. Атрибуты cookie: срок хранения и область видимости. .635
20.2.2. Сохранение cookies .637
20.2.3. Чтение cookies. .638
20.2.4. Ограничения cookies. .639
20.2.5. Реализация хранилища на основе cookies ..639
20.3. Механизм сохранения userData в IE. .641
20.4. Хранилище приложений и автономные веб-приложения. ..643
20.4.1. Объявление кэшируемого приложения .643
20.4.2. Обновление кэша. .645
20.4.3. Автономные веб-приложения. .650

21. Работа с графикой и медиафайлами на стороне клиента .655
21.1. Работа с готовыми изображениями. ..656
21.1.1. Ненавязчивая реализация смены изображений 657
21.2. Работа с аудио- и видеопотоками .658
21.2.1. Выбор типа и загрузка 659
21.2.2. Управление воспроизведением 660
21.2.3. Определение состояния мультимедийных элементов ..661
21.2.4 События мультимедийных элементов. 663
21.3. SVG - масштабируемая векторная графика. .665
21.4. Создание графики с помощью элемента <canvas> .672
21.4.1. Рисование линий и заливка многоугольников ..675
21.4.2. Графические атрибуты. ..678
21.4.3. Размеры и система координат холста. .679
21.4.4. Преобразование системы координат .680
21.4.5. Рисование и заливка кривых ..685
21.4.6. Прямоугольники. ..687
21.4.7. Цвет, прозрачность, градиенты и шаблоны ..687
21.4.8. Атрибуты рисования линий. .691
21.4.9. Текст ..692
21.4.10. Отсечение ..693
21.4.11. Тени. ...695
21.4.12. Изображения ..696
21.4.13. Композиция. ..698
21.4.14. Манипулирование пикселами. .701
21.4.15. Определение попадания. .703
21.4.16. Пример использования элемента <canvas>: внутристрочные диаграммы.. .704

22. Прикладные интерфейсы HTML5.. .706
22.1. Геопозиционирование .707
22.2. Управление историей посещений. ..711
22.3. Взаимодействие документов с разным происхождением ..716
22.4. Фоновые потоки выполнения. .720
22.4.1. Объект Worker. ..721
22.4.2. Область видимости фонового потока .722
22.4.3. Примеры использования фоновых потоков. ..725
22.5. Типизированные массивы и буферы. ..728
22.6. Двоичные объекты. .732
22.6.1. Файлы как двоичные объекты. .734
22.6.2. Загрузка двоичных объектов ..735
22.6.3. Конструирование двоичных объектов ..736
22.6.4. URL-адреса, ссылающиеся на двоичные объекты ..736
22.6.5. Чтение двоичных объектов. ..739
22.7. Прикладной интерфейс к файловой системе .742
22.8. Базы данных на стороне клиента 747
22.9. Веб-сокеты ..755

III. Справочник по базовому JavaScript. ..759
Справочник по базовому JavaScript .761

IV. Справочник по клиентскому JavaScript .881
Справочник по клиентскому JavaScript. .883
Алфавитный указатель. .1040

 


Скачать