Предисловие | 12 |
О читателе | 12 |
О рецептах | 13 |
Содержание книги | 14 |
Браузеры | 15 |
Оформление | 16 |
Связь с издателями | 16 |
Благодарности | 17 |
От издательства | 17 |
|
Глава 1. Строки | 18 |
1.0. Вступление | 18 |
1.1. Конкатенация (объединение) строк | 21 |
1.2. Работа с фрагментами строк | 23 |
1.3. Смена регистра | 24 |
1.4. Проверка строк на равенство | 25 |
1.5. Проверка на вхождение подстроки без использования регулярных выражений | 26 |
1.6. Проверка на вхождение подстроки с использованием регулярных выражений | 28 |
1.7. Поиск и замена строк | 29 |
1.8. Использование специальных символов и escape-последовательностей | 31 |
1.9. Чтение и запись строк в файлы cookie | 32 |
1.10. Преобразование символов строки в Unicode и обратно | 36 |
1.11. Кодирование и декодирование URL | 37 |
1.12. Кодирование и декодирование строк в формате Base64 | 38 |
|
Глава 2. Числа и даты | 42 |
2.0. Вступление | 42 |
2.1. Преобразования между числами и строками | 45 |
2.2. Проверка правильности числа | 47 |
2.3. Проверка равенства чисел | 49 |
2.4. Округление чисел | 50 |
2.5. Форматирование чисел для вывода | 51 |
2.6. Преобразование между десятичной и шестнадцатиричной системами счисления | 54 |
2.7. Генерация псевдослучайных чисел | 55 |
2.8. Вычисление тригонометрических функций | 56 |
2.9. Использование объекта Date | 57 |
2.10. Вычисление прошедшей или будущей даты | 58 |
2.11. Определение числа дней межу двумя датами | 60 |
2.12. Проверка правильности даты | 61 |
|
Глава 3. Массивы и объекты | 65 |
3.0. Вступление | 65 |
3.1. Создание простого массива | 68 |
3.2. Формирование многомерного массива | 69 |
3.3. Конвертирование массивов в строки | 71 |
3.4. Работа с элементами массива | 72 |
3.5. Сортировка массива | 74 |
3.6. Объединение массивов | 76 |
3.7. Рассечение массива | 77 |
3.8. Создание пользовательского объекта | 78 |
3.9. Имитация хэш-таблицы | 82 |
3.10. Работа со свойствами объекта | 84 |
3.11. Сортировка массива объектов | 85 |
3.12. Изменение прототипа объекта | 86 |
3.13. Преобразование массивов и объектов в строки | 91 |
|
Глава 4. Переменные, функции и управление последовательностью выполнения | 94 |
4.0. Вступление | 94 |
4.1. Создание переменной | 95 |
4.2. Функции | 98 |
4.3. Вложение функций | 101 |
4.4. Создание безымянной функции | 102 |
4.5. Отложенный вызов функции | 104 |
4.6. Условное ветвление выполнения | 106 |
4.7. Обработка ошибок сценария | 110 |
4.8. Повышение производительности | 112 |
|
Глава 5. Определение возможностей браузера | 116 |
5.0. Вступление | 116 |
5.1. Определение производителя браузера | 122 |
5.2. Определение ранних версий браузеров | 123 |
5.3. Определение версии Internet Explorer | 124 |
5.4. Определение версии Netscape Navigator | 125 |
5.5. Определение ОС клиента | 127 |
5.6. Проверка поддержки объектов | 129 |
5.7. Проверка наличия свойства или метода | 132 |
5.8. Определение основного языка браузера | 134 |
5.9. Проверка доступности cookie | 135 |
5.10. Формирование ссылок, специфичных для браузера | 136 |
5.11. Проверка на разных браузерах | 138 |
|
Глава 6. Управление окнами | 140 |
6.0. Вступление | 140 |
6.1. Управление размером главного окна | 142 |
6.2. Перемещение главного окна | 144 |
6.3. Развёртывание окна | 145 |
6.4. Создание нового окна | 146 |
6.5. Вывод окна на передний план | 150 |
6.6. Обмен информацией с новыми окнами | 151 |
6.7. Обратная связь с главным окном | 154 |
6.8. Модальные и немодальные окна IE | 155 |
6.9. Имитация совместимого модального диалога | 158 |
6.10. Имитация окон с помощью слоёв | 166 |
|
Глава 7. Управление фреймами | 181 |
7.0. Вступление | 181 |
7.1. Формирование пустого фрейма в новом наборе | 187 |
7.2. Изменение содержимого фрейма | 188 |
7.3. Изменение нескольких фреймов за один шаг | 189 |
7.4. Замена набора фреймов страницей | 191 |
7.5. Защита от попадания во фрейм другого сайта | 192 |
7.6. Восстановление структуры фреймов | 193 |
7.7. Определение размеров фрейма | 196 |
7.8. Изменение размера фрейма | 197 |
7.9. Динамическое изменение описания фреймов | 201 |
|
Глава 8. Динамические формы | 203 |
8.0. Вступление | 203 |
8.1. Начальная установка фокуса | 206 |
8.2. Обычные проверки текста | 207 |
8.3. Проверка перед отсылкой | 212 |
8.4. Установка фокуса на неправильное поле | 215 |
8.5. Смена адреса формы | 217 |
8.6. Блокирование отправки при нажатии Enter | 218 |
8.7. Перенос фокуса с помощью Enter | 219 |
8.8. Передача данных по нажатию Enter в любом поле | 220 |
8.9. Блокирование элементов формы | 222 |
8.10. Скрытие элементов формы | 223 |
8.11. Ограничение ввода только цифрами (или буквами) | 226 |
8.12. Автоматический переход между полями фиксированной длины | 228 |
8.13.3амена содержимого элемента sеlect | 229 |
8.14. Перенос данных формы между страницами | 233 |
|
Глава 9. События | 237 |
9.0. Вступление | 237 |
9.1. Выравнивание модели IE и W3C DOM | 242 |
9.2. Инициализация после загрузки страницы | 245 |
9.3. Определение координат мыши | 247 |
9.4. Блокирование событий | 250 |
9.5. Блокирование двойного щелчка | 253 |
9.6. Определение элемента, получившего событие | 255 |
9.7. Определение нажатой кнопки мыши | 257 |
9.8. Считывание нажатого символа | 259 |
9.9. Клавиши, отличные от символьных | 261 |
9.10. Ctrl, Alt и Shift | 263 |
9.11. Определение элемента под курсором | 265 |
9.12. Привязка звуков к событиям | 269 |
|
Глава 10. Навигация по сайту | 271 |
10.0. Вступление | 271 |
10.1. Загрузка страницы или якоря | 274 |
10.2. Удерживание страницы от попадания в историю браузера | 276 |
10.3. Навигация с помощью select | 277 |
10.4. Передача данных через cookie | 279 |
10.5. Передача данных через фреймы | 281 |
10.б. Передача данных через URL | 284 |
10.7. Создание контекстного меню | 286 |
10.8. Раскрывающиеся меню | 294 |
10.9. Меню, отслеживающее перемещения | 307 |
10.10. Вложенные меню | 311 |
10.11. Сворачиваемое меню на основе XML | 322 |
|
Глава 11. Таблицы стилей | 332 |
11.0. Вступление | 332 |
11.1. Глобальные правила CSS | 334 |
11.2. Назначение стиля подгруппе элементов | 335 |
11.3. Задание правила для одного элемента | 337 |
11.4. Внешние таблицы стилей | 338 |
11.5. Использование ОС- и браузер-специфичных таблиц стилей | 339 |
11.6. Изменение импортированных стилей после загрузки | 340 |
11.7. Включение и отключение таблиц стилей | 342 |
11.8. Смена стиля элемента | 343 |
11.9. Подмена правила таблицы стилей | 344 |
11.10. Создание оформленного элемента | 345 |
11.11. Создание выровненных по центру элементов | 346 |
11.12. Определениеэффективныхзначений таблицы стилей | 347 |
11.13. Перевод браузеров версии 6 в режим совместимости со стандартами | 349 |
|
Глава 12. Визуальные эффекты для статичных элементов | 351 |
12.0. Вступление | 351 |
12.1. Предварительная загрузка изображений | 354 |
12.2. Интерактивные изображения | 356 |
12.3. Смена стиля текста | 359 |
12.4. Как выбрать размер шрифта | 362 |
12.5. Создание стилей ссылок | 366 |
12.6. Фоновые цвета и изображения | 367 |
12.7. Управление видимостью элементов | 370 |
12.8. Настройка прозрачности | 371 |
12.9. Создание эффектов перехода | 373 |
|
Глава 13. Позиционирование элементов HTML | 378 |
13.0. Вступление | 378 |
13.1. Позиционирование элемента в документе | 382 |
13.2. Связывание подвижного элемента с телом документа | 383 |
13.3. Библиотека для управления позиционированием | 385 |
13.4. Выбор между div и span | 392 |
13.5. Управление порядком наложения (z-order) | 393 |
13.6. Как расположить один элемент по центру другого | 395 |
13.7. Как разместить элемент по центру окна или фрейма | 397 |
13.8. Определение положения обычного элемента | 400 |
13.9. Прямолинейная анимация | 401 |
13.10. Анимация по кругу | 405 |
13.11. Создание перетаскиваемых элементов | 407 |
13.12. Прокрутка содержимого div | 412 |
13.13. Создание полосы прокрутки | 418 |
|
Глава 14. Динамическое содержимое | 431 |
14.0. Вступление | 431 |
14.1. Формирование содержимого при загрузке страницы | 432 |
14.2. Динамическое формирование нового содержимого | 433 |
14.3. Внедрение внешнего HTML | 435 |
14.4. Внедрение данных XML | 437 |
14.5. Хранение данных в виде объектов JavaScript | 440 |
14.6. Преобразования XML в HTML-таблицы | 443 |
14.7. Преобразование данных JavaScript в HTML-таблицы | 446 |
14.8. Преобразование XML в объекты JavaScript | 448 |
14.9. Создание элементов | 450 |
14.10. Заполнение нового элемента текстом | 451 |
14.11. Смешанные элементы и текстовые узлы | 453 |
14.12. Вставка и заполнение элемента iframe | 455 |
14.13. Как получить ссылку на HTML-элемент | 457 |
14.14. Замена части содержимого | 459 |
14.15. Удаление части страницы | 461 |
14.16. Сортировка динамических таблиц | 463 |
14.17. Обход узлов документа | 466 |
14.18. Считывание содержимого документа | 470 |
|
Глава 15. Приложения DHTML | 472 |
15.0. Вступление | 472 |
15.1. Случайный афоризм на странице | 473 |
15.2. Преобразование выделения в элемент | 475 |
15.3. Программирование поиска и замены в тексте документа | 477 |
15.4. Создание слайд-шоу | 480 |
15.5. Автоматическая прокрутка страницы | 487 |
15.6. Приветствие с учетом времени суток | 489 |
15.7. Отображение времени до Рождества | 490 |
15.8. Таймер | 492 |
15.9. Как указать дату с помощью календаря | 499 |
15.10. Анимированный индикатор выполнения | 506 |
|
Приложение А. Коды клавиш клавиатурных событий | 512 |
|
Приложение Б. Коды клавиш | 514 |
|
Приложение В. Зарезервированные слова ECMAScript | 516 |
|
Алфавитный указатель | 517 |