JavaScript. Подробное руководство, 6-е издание, стр. 346
<b> }</b><b> else</b><b> status("Редактируется последняя версия заметки.");</b><b> if (localStorage.lastModified > localStorage.lastSaved) {</b><b> save();</b><b> }</b><b> editor.disabled = false; // Разрешить доступ к редактору</b><b> editor.focus(); // И поместить в него курсор ввода</b><b> }</b><b> }</b><b> else { // В автономном режиме мы не можем синхронизироваться</b><b> status("Невозможно синхронизироваться в автономном режиме");</b><b> editor.disabled = false; editor.focus();</b><b> }</b><b>}</b>21
Работа с графикой и медиафайлами на стороне клиента
В этой главе рассказывается о том, как манипулировать изображениями, управлять аудио- и видеопотоками и рисовать графику. В разделе 21.1 описываются традиционные приемы реализации визуальных эффектов на языке JavaScript, таких как смена изображений, когда одно статическое изображение сменяется другим при наведении указателя мыши. В разделе 21.2 описываются элементы
<b><audio></b><b><video>,</b>После первых двух разделов, посвященных работе с изображениями, аудио- и видеопотоками, будет рассказано о двух мощных технологиях рисования графических изображений на стороне клиента. Способность воспроизводить на стороне клиента сложные графические изображения имеет важное значение по нескольким причинам:
• Объем программного кода, создающего изображение на стороне клиента, обычно много меньше, чем объем самого изображения, что позволяет сберечь существенную долю полосы пропускания.
• Динамическое создание графических изображений потребляет существенные ресурсы центрального процессора. Переложив эту задачу на клиента, можно существенно снизить нагрузку на сервер и немного сэкономить на стоимости аппаратных средств для него.
• Создание графики на стороне клиента прекрасно согласуется с положениями современной архитектуры веб-приложений, в которой серверы поставляют данные, а клиенты управляют представлением этих данных.
В разделе 21.3 описывается Scalable Vector Graphics, или SVG. SVG - это язык разметки, основанный на языке XML, предназначенный для описания графических изображений. Изображения на языке SVG можно создавать и изменять в сценариях на языке JavaScript с использованием модели DOM. В заключение в разделе 21.4 мы познакомимся с элементом
<b><canvas>,</b>21.1. Работа с готовыми изображениями
Готовые изображения могут включаться в веб-страницы с помощью тега
<b><img>.</b><b><img></b><b>sгс</b>Возможность динамической замены одного изображения другим в HTML-документе открывает доступ к некоторым специальным эффектам. На практике чаще всего прием смены изображений привязывается к наведению указателя мыши на изображение. Когда изображение размещается внутри гиперссылки, смена изображения становится приглашением пользователю щелкнуть на изображении. (Аналогичный эффект можно получить с помощью псевдокласса CSS
<b>:hover</b><b><img src="images/help.gif"</b><b> onmouseover="this.src='images/help_rollover.gif'"</b><b> onmouseout="this.src='images/help.gif'"></b>Обработчики событий в элементе
<b><img></b><b>src</b><b><img></b><b><а></b><b>onclick</b>Чтобы радовать глаз, эффект смены изображений (и родственные ему эффекты) должен иметь минимальное время отклика. Это означает, что необходим некоторый способ, гарантирующий предварительную загрузку всех необходимых изображений в кэш броузера. Для этой цели в клиентском JavaScript имеется специальный прикладной интерфейс: чтобы принудительно поместить изображение в кэш, нужно сначала создать объект
<b>Image</b><b>Image().</b><b>src</b>Приведенный выше фрагмент разметки, воспроизводящий эффект смены изображений, не выполняет предварительную загрузку изображений, поэтому пользователь может заметить задержку при смене изображения, когда первый раз наведет на него указатель мыши. Чтобы исправить ситуацию, необходимо немного изменить разметку:
<b><script>(new Image()).src = "images/help_rollover.gif";</script></b><b><img src="images/help.gif"</b>