Категория: Руководства
Статья даст вам краткий обзор того, как строятся интерфейсы с помощью React JS.
Вы можете параллельно писать код с помощью starter kit. или просто продолжать читать.
React имеет небольшой API, он прост в изучении использовании. Однако, сперва давайте взглянем на несколько концепций.
Элементы — это объекты JavaScript, которые представляют HTML-элементы. Их не существуют в браузере. они описывают DOM-элементы, такие как h1, div, или section.
Компоненты — это элементы React, написаные разработчиком. Обычно это части пользовательского интерфейса, которые содержат свою структуру и функциональность. Например, такие как NavBar, LikeButton, или ImageUploader.
JSX — это техника создания элементов и компонентов React. Например, это React-элемент, написаный на JSX:
Такой же элемент может быть написан на JavaScript:
С JSX требуется гораздо меньше усилий, он трансформируется в JavaScript перед запуском в браузере.
Virtual DOM — это дерево React элементов на JavaScript. React отрисовывает Virtual DOM в браузере, чтоб сделать интерфейс видимым. React следит за изменениями в Virtual DOM и автоматически изменяет DOM в браузере так, чтоб он соответствовал виртуальному.
С пониманием этих концепций мы можем продолжать использовать React. Мы напишем ряд пользовательских интерфейсов, каждый из которых будет добавлять слой функциональности к предыдущему. В качестве примера, мы напишем фото-ленту на подобии Instagram.
РендерингПервым делом происходит рендер виртуального элемента (элемента, или компонента React). Помните, пока виртуальный элемент содержится только в памяти JavaScript. мы должны явно сообщить React отрисовать его в браузере.
Функция render принимает два аргумента: виртуальный элемент и реальный узел DOM. React берёт виртуальный элемент и добавляет его в указанный узел. Теперь изображение можно увидеть в браузере.
КомпонентыКомпоненты — это душа и сердце React. Это пользовательские элементы. Обычно, они имеют свою уникальную структуру и функциональность.
Функция createClass принимает объект, который реализует функцию render .
Компонент Photo создан и отрисован в теле документа.
Этот компонент делает не больше, чем строчка в предыдущем примере, но теперь его можно дополнять функциональностью.
СвойстваПод свойствами можно понимать опции компонента. Они предоставляются в качестве аргументов компонента и выглядят так же, как атрибуты HTML.
В функции render компоненту Photo переданы 2 свойства: imageURL и caption .
Внутри пользовательской функции render. свойство imageURL используется в качестве src для изображения. Свойство caption используется как текст элемента span.
Стоит отметить, что свойства компонента неизменяемы. Если у компонента есть изменяемые свойства, используйте состояние.
СостояниеСостояние — это специальный объект внутри компонента. Он хранит данные, которые могут изменятся с течением времени
Наличия состояния у объекта вносит небольшую сложность.
У компонента появляется новая фунцкия getInitialState. React вызывает её после инициализации компонента. В ней устанавливается начальное состояние (что подразумевает название функции).
Также у компонента появляется функция toggleLiked. Она с помощью функции setState. переключает состояние liked .
Внутри функции render. переменной buttonClass присваивается значение «active», либо пустая строка, в зависимости от состояния liked .
buttonClass используется, как класс кнопки элемента. У кнопки также имеется обработчик события onClick, который вызывает функцию toggleLiked .
Вот, что происходит после отрисовки компонента:
— После нажатия кнопки вызывается toggleLiked
— Изменяется состояние liked
— React перерисовывает компонент в Virtual DOM
— Новый Virtual DOM сравнивается с предыдущим
— React изолирует изменения и обновляет их в DOM браузера
В данном случае, React изменит имя класса кнопки.
КомпозицияКомпозиция означает комбинирование меньших компонентов при формировании большего. Например, компонент Photo может быть использован внутри компонента PhotoGallery. Примерно таким образом:
Компонент Photo остался точно таким же, как и был.
Появился новый компонент PhotoGallery. который генерирует компоненты Photo. В примере используются поддельные данные сервера, которые возвращают массив из 3 объектов с url и заголовком.
В цикле создаются 3 компонента Photo, которые затем подставляются в возвращаемое значение функции render .
ЗаключениеЭтого вполне достаточно для того, чтоб начать строить пользовательские интерфейсы с использованием React. Более подробное описание есть в документации и она крайне рекомендуется к прочтению.
В руководстве также не было деталей по настройке локального окружения. Вы можете узнать это из документации, либо использовать мой boilerplate .
Страница 1 из 12
Краткое руководство по JavaScript для новичков.
Вложения и включения Давайте сначала рассмотрим простой пример:• Скачать примеры - 7.04 Кб Оглавление Введение Предпосылки Основные понятия Простой класс на JavaScript Определение класса Создание свойств класса Создание методов класса Инкапсуляция Открытые, защищенные и закрытые члены Инкапсуляция на практике Вывод по инкапсуляции.
• Скачать исходники - 19.01 KB Введение В данной статье на основе Exsead создается парсер JScript DOM и GUI просмотра XML. Краткая информация о Exsead Etc. Основные принципы устройства Exsead изложены здесь. Чтобы данная статья принесла максимум пользы, следует прочитать статью об использов.
ВведениеМожно использовать свойство prototype (прототип) некоторых встроенных объектов JavaScript для расширения их функциональности. Новые экземпляры конкретного класса объектов наследуют поведение, заданное классу. Если вы знаете C++, рассматривайте расширенные объекты как производные классы с.
Рисунок 1. Пример с конкретными цветами, обработанными при помощи VML в Internet Explorer. Рисунок 2. Пример с конкретными цветами, обработанными при помощи холста (canvas) в Firefox. Рисунок 3. Пример, демонстрирующий свернутые и выбранные узлы, обработанные посредством VML в Internet Exp.
Как узнать ширину и высоту клиентской (рабочей) области окна браузера? <script type="text/javascript">//IE5+, Mozilla 1.0+, Opera 7+function getClientWidth()< return document.compatMode=='CSS1Compat' && !window.opera?document.documentElement.clientWidth:document.
Название: javascript для чайников. Краткое руководство
Автор: Рихард Вагнер
Страниц: 74
Формат: PDF
Размер: 36Мб
Качество: Отличное
Язык: Болгарский
Жанр: Программирование
Год издания: 2011
Может быть, вы профессиональный веб-дизайнер или даже не хотите быть, но, конечно, вы хотите, чтобы работа, которая будет сделано, и результат выглядит хорошо? Эта книга для вас. Создание веб-страниц не сложно. Эта книга покажет вам, как использовать javascript, разъяснения на простом языке.
Откройте книгу и найти:
Как работать скрипты
Как программировать на javascript
Как использовать библиотеки и среды javascript
Объектной модели документа
Как добавить обработчики событий
Советы для написания скриптов
Ajax
С этой книгой бесплатно скачивают:
dvdrip 2,36 gb - Андрей жариков
смешанный 12 мб - Флэнаган Дэвид
djvu 15,74 мб - Flanagan D / Дэвид Флэнаган
pdf 5,6 mb - Дэвид Флэнаган
pdf, djvu 532 мб - Разные
Электронная библиотека Kodges.ru — интересный ресурс для тех, кто не любит тратить много времени на поиск необходимого издания. В каталогах представлено огромное количество книг различной тематики, которые можно скачать совершенно бесплатно в нужном формате. В разделе «Компьютерная литература» можно скачать как книги для профессионалов, так и книги с ответами на популярные вопросы, например, «JavaScript для чайников. Краткое руководство». Благодаря удобной навигации библиотеки, каждый читатель моментально найдет необходимое издание.
Поделитесь ссылкой на книгу со своими друзьями:
Ссылка для форумов:
Просмотров: 716 | Комментарии (0)
Навигация по сайту
© 2006 - 2016 KodGes.RU
Новый интересный курс на замечательном ресурсе .
В связи с тем, что в последнее время стал часто сталкиваться с необходимостью напиcания фрагментов кода на javascript, данный метериал представляет определенный интерес.
Цитата.
" Технология AJAX является не новым языком программирования, а просто новым способом использования существующих стандартов.
С помощью AJAX можно создавать Web-приложения, которые будут лучше, быстрее и удобнее для пользователей, чем существующие.
AJAX основывается на JavaScript и запросах HTTP.
AJAX = Асинхронный JavaScript и XML
AJAX является сокращением от "Asynchronous JavaScript And XML" (Асинхронный JavaScript и XML).
AJAX является не новым языком программирования, а просто новым способом создания Web-приложений, которые будут лучше, быстрее, и более интерактивными.
AJAX использует JavaScript для отправки и получения данных при взаимодействии Web-браузера и Web-сервера.
Технология AJAX делает Web-страницы более гибкими и быстро реагирующими, осуществляя обмен данными с Web-сервером в фоновом режиме, а не перезагружая всю Web-страницу всякий раз, когда пользователь делает изменение. "
Описание книги Введение в ECMAScript 6.
Данная книга содержит пошаговые инструкции по использований новых возможностей ECMAScript 6 вместо устаревших трюков и приемов программирования на JavaScript.Книга начинается с знакомства со всеми встроенными объектами ES6 и описания создания итераторов ES6.
Скачать книгу 28 марта 2016 09:19 | Просмотров: 3734
Описание книги Node.js. Путеводитель по технологии.
За последние несколько лет платформа Node.js стремительно повысила свой статус от экспериментальной технологии до основы для серьезных промышленных проектов. Тысячи программистов оценили возможность построения достаточно сложных, высоко нагруженных приложений на простом, элегантном и, самое главное, легковесном механизме.
Скачать книгу 27 марта 2016 17:49 | Просмотров: 2576
Описание книги HTML, JavaScript, PHP и MySQL. Джентльменский набор Web-мастера.
Рассмотрены вопросы создания интерактивных Web-сайтов с помощью НТML, javascript, PHP и MySQL, форматирования Web-страниц при помощи CSS. Даны основы РНР и примеры написания типичных сценариев. Описаны приемы работы и администрирования баз данных MySQL при помощи РНР и npoграммы phpMyAdmin. Особое внимание уделено созданию программной среды на компьютере разработчика и настройке Web-сервера Apache. Приведено описание текстового редактора Notepad++, шаблонизатора Smarty и прочих программ (Аptana Studio, NetBeans и HeidiSQL), необходимых Web-разработчику.
Скачать книгу 5 октября 2015 16:49 | Просмотров: 22544
Описание книги JavaScript: The Web Warrior Series.
Now in its sixth edition, javascript guides beginning programmers through web application development using the javascript programming language.
Скачать книгу 6 августа 2015 18:37 | Просмотров: 2386
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