Предисловие | 1 |
|
Аудитория | 3 |
Краткое содержание книги | 4 |
Условные обозначения | 7 |
Права на использование кода | 8 |
Обратная связь | 8 |
Safari® Enabled | 9 |
Благодарности | 9 |
|
Глава 1. Подготовка к добавлению Ajax | 10 |
|
Технологии, составляющие Ajax | 12 |
Естественное движение вперед | 13 |
Технологии: обзор книги | 14 |
С чистого листа | 17 |
Валидаторы XHTML- и HTML-кода | 18 |
Валидаторы CSS-кода | 20 |
Проверка доступности | 21 |
Преобразование таблиц в формат CSS | 22 |
Продолжаем преобразования — элемент за элементом | 27 |
Индивидуальные особенности браузеров | 59 |
Управляем страницей и добавляем Ajax | 29 |
Устанавливаем контроль | 30 |
Понимание нужд клиентов | 32 |
Узнайте своих пользователей | 32 |
Политика открытых дверей | 33 |
План | 35 |
Разработка структуры сайта | 36 |
Познакомьтесь со своим читателем | 37 |
Безопасность и надёжность | 38 |
Сильная и слабая связь | 38 |
Постепенное улучшение или полная реконструкция? | 39 |
|
Глава 2. Кусочки Ajax | 42 |
|
Веб-приложение | 42 |
Структура объекта XMLHttpRequest | 50 |
Подготовка объекта к использованию | 52 |
Подготовка и отправка запроса | 54 |
GET, POST и REST | 54 |
Параметры | 56 |
Отправка запроса | 57 |
Обработка Ajax-ответа | 61 |
Простой и быстрый ответ: HTML-фрагмент и innerHTML | 63 |
Работа с более традиционным XML | 67 |
Упрощение обработки с помощью JSON | 72 |
(Х)НТМL-фрагмент | 77 |
Конечные точки, песочница JavaScript и виджеты | 82 |
Конечные точки JSON и создание динамического сценария | 83 |
Динамические сценарии с XML | 86 |
Меры безопасности | 87 |
Первый взгляд на производительность | 88 |
Последнее слово о синхронном и асинхронном | 90 |
|
Глава 3. Терминология и инструменты Ajax | 92 |
|
Prototype | 93 |
Свойство prototype языка JavaScript | 99 |
Ассоциативные массивы и риск Prototype | 100 |
Внешние библиотеки: риск и преимущества | 101 |
script.aculo.us | 102 |
Эффекты script.aculo.us | 104 |
Rico | 106 |
Оперативная прокрутка Ajax | 106 |
Виджеты Rico | 107 |
Песочница JavaScript и прокси | 108 |
Dojo | 109 |
Цепочка обработчиков событий | 111 |
Декларативный HTML | 112 |
Как с помощью JavaScript обойти нестандартные атрибуты | 114 |
Другие библиотеки | 117 |
jQuery | 117 |
MochiKit | 118 |
Пользовательский интерфейс Yahoo! UI | 119 |
mooTools и moo.fx | 119 |
Библиотека Sarissa | 120 |
WZ_JsGrapliics и qForms | 120 |
Итак далее | 121 |
|
Глава 4. Интерактивные эффекты | 122 |
|
Обработка событий в Ajax | 123 |
Сопровождаемый обработчик событий | 123 |
Смешанный обработчик событий | 124 |
Система обработки событий Dojo Event System и целевой объект | 127 |
Оперативная (ЛТ) информация | 132 |
Форма для справки | 133 |
Всплывающая подсказка | 142 |
Предварительный просмотр | 147 |
Оперативный просмотр | 147 |
Ajax-просмотр | 150 |
Выделение цветом выполненных и невыполненных операций | 153 |
Таймеры и анимация | 153 |
Ajax-таймеры | 155 |
Подсветка | 157 |
|
Глава 5. Пространство. Последняя граница | 164 |
|
Горизонтальный интервал. Accordion | 165 |
Создание эффекта | 166 |
Переходный accordion | 172 |
Определение ширины и высоты элемента | 172 |
Окончательная отделка перехода | 174 |
Использование готового эффекта accordion | 176 |
Упаковка кода эффекта | 181 |
Смешивание эффекта accordion и Ajax-запросов | 188 |
Страницы с вкладками | 196 |
Взгляд на содержимое, разбитое на вкладки | 196 |
Возвращаясь к упаковке: создание универсальных вкладок | 204 |
Использование YUI TabView | 205 |
Вкладки и доступность | 209 |
Слои | 209 |
|
Глава 6. Динамические данные | 217 |
|
Редактирование по месту | 218 |
Добавление изменяемого поля | 218 |
Сторона клиента | 220 |
Сторона сервера | 229 |
Редактирование по месту: производительность, безопасность и доступность | 232 |
Предотвращение SQL-инъекций | 232 |
Производительность и доступность | 233 |
Улучшения | 234 |
Подсвечивание изменений | 236 |
Сигнализация удаления | 236 |
Запрос и подсвечивание обновлений | 242 |
Повторный взгляд на доступность внутристраничных обновлений | 250 |
Повторный взгляд на внутристраничное удаление | 251 |
Повторный взгляд на внутристраничные добавления | 252 |
Оперативная проверка достоверности | 253 |
Производительность и двухфазное подтверждение | 257 |
Ajax, который ни с кем не конфликтует | 258 |
Ajax, кэширование, транзакции базы данных | 259 |
Эффекты для данных внешних библиотек | 261 |
Разработка и обслуживание форм | 261 |
Сортировка drag-and-drop библиотеки script.aculo.us | 261 |
Проверка достоверности Adobe Spry | 263 |
Другие библиотеки, обрабатывающие данные | 264 |
|
Глава 7. История, навигация, место и одностраничные приложения | 266 |
|
Многостраничный контент бросает вызов | 267 |
Создание каркаса слайд-шоу | 269 |
Создание слайд-шоу фотографий | 277 |
Разбивка текста | 282 |
Пролистывание данных | 286 |
Запомним место | 292 |
Запоминание места и фрагменты страницы | 292 |
Запоминание места своевременно | 296 |
Разница между умным и сообразительным | 300 |
Старое и новое, плечом к плечу | 301 |
Новый взгляд на страницу | 312 |
Post-Mortem | 316 |
|
Глава 8. Добавление сложных визуальных эффектов | 317 |
|
Сложные трюки CSS | 318 |
Закругленные углы | 319 |
Слайдеры и полосы прокрутки | 320 |
Веб-меню | 327 |
Перемещаемый контейнер | 328 |
Масштабируемая векторная графика SVG | 332 |
Включение SVG | 332 |
Добавляем script | 335 |
Встроенные SVG-элементы | 337 |
Быстрый взгляд на SVG | 338 |
Основные фигуры и атрибуты | 338 |
Градиенты, фильтры, эффекты и defs | 341 |
Смешиваем SVG и Ajax | 342 |
HTML5 Canvas | 347 |
Будущее графики | 351 |
|
Глава 9. Сайт-мэшап | 353 |
|
Карты Google | 354 |
Карты Google: быстро и просто | 354 |
Из пункта А в пункт Б | 357 |
Второй сервис — Flickr | 362 |
Создаём мэшап | 363 |
Создание объектов фотографий и повторное сравнение локальных функций |
с Prototype | 369 |
Переделываем Flickr/Google в страницу с вкладками | 373 |
Добавляем Technorati к нашему мэшапу | 378 |
Реконструирование мэшапа | 388 |
Доступные вкладки | 389 |
Карты Google и IE, или Я отпускаю тебя | 394 |
Абстрагирование веб-сервиса | 395 |
Реконструированные клиенты | 400 |
Приложение без сценариев | 401 |
Новый Ajax-клиент | 404 |
Подытоживая мэшап | 414 |
|
Глава 10. Масштабирование, инфраструктура и основы основ | 415 |
|
Каркасы: сильная связь vs слабая связь | 416 |
Веб-сервис: ресурсы и безопасность | 418 |
Ajax-библиотеки: свои или чужие | 419 |
Основы Ajax-проектирования | 421 |
Упаковка функциональности в модули | 421 |
Сопровождение и тестирование | 422 |
Утечка памяти, локальное хранение и надёжность | 423 |
Приведение каждого эффекта к простейшему виду | 424 |
Важные области сайта | 425 |
Не переборщите с мэшапами | 425 |
Множество устройств | 426 |
Поменьше «крутых» эффектов | 426 |
«Круто» не всегда плохо | 427 |
Каркасы дня | 428 |
ASP.NET и AJAX | 428 |
Java и GWT | 430 |
PHP-каркасы | 431 |
Python, GWT и Django | 432 |
Эй! Это ж Perl! | 432 |
Ruby on Rails, Ajax и сильная связь | 433 |
Идите и добавляйте Ajax | 433 |
|
Предметный указатель | 434 |