13 Объекты, Изображения и Аплеты
13.1 Введение
Мультимедиа возможности HTML позволяют
авторам включать в свои страницы
изображения, аплеты (программы, которые
автоматически загружаются и запускаются на
выполнение на машине пользователя),
видеоклипы и другие документы HTML.
Например, чтобы включить в документ
изображение в формате PNG, автор может
записать:
<BODY>
<P>Here's a closeup of the Grand Canyon:
<OBJECT data="canyon.png" type="image/png">
This is a <EM>closeup</EM> of the Grand Canyon.
</OBJECT>
</BODY>
Предыдущие версии HTML позволяли авторам
включать изображения (с помощью IMG) и
аплеты (с помощью APPLET). Эти элементы имели
несколько ограничений:
- они не могли решить более общую проблему
включения новых и будущих типов носителя;
- элемент
APPLET работал только с аплетами Java.
Этот элемент не рекомендуется.
Вместо него нужно использовать
OBJECT;
- они создавали проблемы доступности.
Для адресации этих вопросом HTML 4 ввёл
элемент OBJECT,
предлагающий общий способ включения
объектов. Элемент OBJECT
позволяет авторам HTML специфицировать всё
необходимое для представления объектов в
ПА (пользовательских агентах): код,
начальные значения и данные процесса
выполнения. В этой спецификации термин
"object/объект" используется для описания
предметов, которые человек может поместить
в документы HTML; другие обычные термины для
обозначения этих предметов: аплеты, plug-ins/плагины
и т.д.
Новый элемент OBJECT соединяет некоторые задачи,
выполняемые существующими элементами.
Посмотрите на эту таблицу функциональности:
Таблица показывает, что вставка каждого
объекта имеет специфическое и общее
решение. Общий элемент OBJECT послужит решением для
включения в будущем новых типов носителя.
Чтобы вставить изображение, автор
может использовать элементы OBJECT
или IMG.
Чтобы вставить аплет, автор
должен использовать элемент OBJECT,
так как элемент APPLET не рекомендуется
использовать.
Чтобы включить один документ HTML в
другой, авторы могут использовать
новый элемент IFRAME
или элемент OBJECT.
В обоих случаях, внедрённый документ
остаётся независимым от главного документа.
Визуальные ПА могут представлять
внедрённый документ в отдельном окне
внутри главного документа. См. замечания о внедрённых документах,
чтобы сравнить вставку документов
элементами OBJECT
и IFRAME.
Изображения и другие включённые объекты
могут иметь ассоциированные с ними
гиперссылки, используя стандартные механизмы
ссылок, а также посредством карт
изображений. Карта изображений
определяет активные геометрические
регионы включённого объекта и назначает
гиперссылку каждому такому региону. При
активации эти ссылки могут вызвать запрос
документа, запустить программу на сервере и
т.д.
В следующих разделах мы обсудим различные
доступные авторам механизмы вставки
мультимедиа и создания карт изображений
для таких вставок.
<!-- Чтобы исключить проблемы с только-текстовыми ПА, а также
чтобы сделать содержимое изображения более понятным и доступным
для пользователей с невизуальными ПА, Вы должны предоставить
описание в элементе ALT и исключить использование серверных карт изображений -->
<!ELEMENT IMG - O EMPTY -- Внедрённое изображение -->
<!ATTLIST IMG
%attrs; -- %coreattrs, %i18n, %events --
src %URI; #НЕОБХОДИМ -- URI изображения для вставки --
alt %Text; #НЕОБХОДИМ -- краткое описание --
longdesc %URI; #ПРЕДПОЛАГАЕТСЯ -- ссылка на полное описание (дополняет alt) --
name CDATA #ПРЕДПОЛАГАЕТСЯ -- имя изображения (для скриптов) --
height %Length; #ПРЕДПОЛАГАЕТСЯ -- переопределить высоту --
width %Length; #ПРЕДПОЛАГАЕТСЯ -- переопределить ширину --
usemap %URI; #ПРЕДПОЛАГАЕТСЯ -- использовать клиентские карты изображений --
ismap (ismap) #ПРЕДПОЛАГАЕТСЯ -- использовать серверные карты изображений --
>
Начальный тег: необходим,
Конечный тег: запрещён
Определения атрибутов
- src = uri [CT]
- Специфицирует размещение ресурса
изображения. Наиболее распространённые
форматы изображений: GIF, JPEG и PNG.
- longdesc = uri [CT]
- Определяет ссылку на полное описание
изображения. Это описание должно
дополнять краткое описание,
предоставляемое атрибутом alt.
Если изображение имеет ассоциированную карту
изображений, этот атрибут должен
предоставлять информацию о содержимом
карты изображений. Это особенно важно для
серверных карт.
Поскольку элемент IMG
может находиться внутри содержимого
элемента A,
механизм ПА в пользовательском интерфейсе
для доступа к ресурсу "longdesc" первого должен
отличаться от механизма к доступу ресурса
href второго.
- name = cdata [CI]
- Этот атрибут именует элемент так, что на
него можно будет ссылаться из таблиц
стилей или скриптов. Примечание.
Этот атрибут включён для обеспечения
обратной совместимости. Приложения должны
использовать для идентификации элементов
атрибут id.
Атрибуты, определённые в другом месте
-
id, class (идентификаторы документа)
-
alt (альтернативный текст)
-
lang (язык), dir (направление
текста)
-
title (заголовок элемента)
- style (инлайн-стиль)
- onclick, ondblclick,
onmousedown, onmouseup,
onmouseover, onmousemove,
onmouseout, onkeypress,
onkeydown, onkeyup (внутренние события)
-
ismap, usemap (клиентские
карты изображений)
- align, width,
height, border, hspace, vspace
(визуальное представление
объектов, изображений и аплетов)
Элемент
IMG внедряет изображение в текущий
документ в месте определения элемента.
Элемент IMG не имеет
содержимого; обычно он замещается на ходу
изображением, указанным в атрибуте
src, исключение составляют изображения,
выровненные влево или вправо, которые "обтекаются"
по контуру.
В предыдущем примере мы определили ссылку
на семейное фото. Здесь мы вставим фото
непосредственно в текущий документ:
<BODY>
<P>I just returned from vacation! Here's a photo of my family at the lake:
<IMG src="http://www.somecompany.com/People/Ian/vacation/family.png"
alt="A photo of my family at the lake.">
</BODY>
Это включение может быть выполнено также
элементом OBJECT:
<BODY>
<P>I just returned from vacation! Here's a photo of my family at the lake:
<OBJECT data="http://www.somecompany.com/People/Ian/vacation/family.png"
type="image/png">
A photo of my family at the lake.
</OBJECT>
</BODY>
Атрибут
alt устанавливает альтернативный
текст, который отображается, если
изображение не может быть выведено (см. ниже
как установить альтернативный текст).
ПА должны отображать альтернативный текст,
если они не поддерживают изображения, не
поддерживают изображения определённых
типов или если сконфигурированы так, чтобы
не показывать изображения.
Следующий пример показывает, как атрибут longdesc
можно использовать для ссылки на полное
описание:
<BODY>
<P>
<IMG src="sitemap.gif"
alt="HP Labs Site Map"
longdesc="sitemap.html">
</BODY>
Атрибут
alt предоставляет краткое описание
изображения. Этого должно быть достаточно,
чтобы пользователь мог решить, перейти ли по
ссылке, заданной атрибутом
longdesc
для полного описания, здесь - "sitemap.html".
См. раздел визуальное
представление объектов, изображений и
аплетов для получения информации о
размерах изображения, выравнивании и
рамках.
Начальный тег: необходим,
Конечный тег: необходим
- classid = uri [CT]
- Этот атрибут может использоваться для
определения размещения класса объекта
посредством URI. Может использоваться
вместе с- или как альтернатива атрибуту
data, в зависимости от типа объекта.
- codebase = uri [CT]
- Определяет базовый путь, используемый
для разрешения относительных URI,
специфицированных атрибутами classid, data и archive.
При отсутствии, значением по умолчанию
является базовый URI текущего документа.
- codetype = content-type [CI]
- Этот атрибут специфицирует тип
содержимого данных, ожидаемых при
загрузке объекта, определённого атрибутом
classid. Этот атрибут не
обязателен, но рекомендуется, если classid определён, поскольку он
позволяет ПА избежать загрузки информации
с неподдерживаемыми типами содержимого.
При отсутствии, по умолчанию принимается
значение атрибута type.
- data = uri [CT]
- Может использоваться для спецификации
размещения данных объекта, например,
данных изображения для объекта,
определяющего изображения, или шире,
сериализованных форм объекта, который
может быть использован для его (изображения?)
воссоздания. Если задан как относительный URI,
то должен интерпретироваться
относительно атрибута codebase.
- type = content-type [CI]
- Этот атрибут специфицирует тип
содержимого данных, определённых в
data. Атрибут не обязателен, но
рекомендуется, если data
определён, поскольку он позволяет ПА
избежать загрузки информации с
неподдерживаемыми типами содержимого.
Если значение этого атрибута отличается
от HTTP
Content-Type, возвращённого сервером после
запроса объекта, HTTP
Content-Type имеет приоритет.
- archive = uri-list [CT]
- Этот атрибут может использоваться для
определения разделённого пробелами
списка URI для архивов, содержащих ресурсы,
относящиеся к объекту, который (список)
может включать ресурсы, определённые
атрибутами classid и data.
Предварительная загрузка архивов как
правило уменьшает время загрузки объектов.
Архивы, определённые как относительные URI,
должны интерпретироваться относительно
атрибута codebase.
- declare [CI]
- Если установлен, этот булев атрибут
делает определение текущего OBJECT
только объявлением. Объект должен быть
установлен последующим определением
OBJECT, ссылающимся на это объявление.
- standby = text [CS]
- Определяет сообщение, которое ПА может
показывать при загрузке класса объекта и
данных.
Атрибуты, определённые в другом месте
-
id, class (идентификаторы документа)
-
lang (язык), dir (направление
текста)
-
title (заголовок элемента)
- style (инлайн-стиль)
- onclick, ondblclick,
onmousedown, onmouseup,
onmouseover, onmousemove,
onmouseout, onkeypress,
onkeydown, onkeyup (внутренние события)
- tabindex (навигация табуляцией)
-
usemap (клиентские карты
изображений)
- name (отправка формы)
- align, width,
height, border, hspace, vspace
(визуальное представление
объектов, изображений и аплетов)
Большинство ПА имеют встроенные
механизмы для отображения данных
обычных типов, таких как рисунки GIF, цвета,
шрифты и небольшое количество графических
элементов. Чтобы иметь возможность
отображать данные, изначально не
поддерживаемые, ПА обычно запускают
внешние приложения. Элемент OBJECT
позволяет авторам контролировать, должны
ли данные просматриваться независимо (вне
ПА) или программой определённой автором для
просмотра внутри ПА.
В самом общем случае, автору необходимо
специфицировать три типа информации:
- Реализацию (класс) включённого объекта.
Например, если включаемый объект - это
аплет "часы", автор должен указать,
где находится исполняемый код аплета.
- Данные для отображения, например, если
включаемый объект - это программа,
отображающая данные шрифтов, автор должен
указать, где находятся эти данные.
- Дополнительные значения, необходимые для
объекта на этапе выполнения. Например,
некоторым аплетам требуются начальные
значения параметров.
Элемент
OBJECT позволяет авторам
специфицировать данные всех трёх типов, но
не всегда необходимо определять все три.
Например, некоторым объектам не нужны
данные (аплет, выполняющий небольшую
анимацию). Другие не требуют инициализации
при выполнении. Наконец, третьи могут не
требовать дополнительной информации о
выполнении, т.е. ПА может уже сам "знать",
как отображать данные такого типа (напр.,
рисунки GIF).
Авторы определяют реализацию объекта
и размещение данных, отображаемых
элементом OBJECT.
Чтобы определить значения времени
выполнения, авторы используют элемент PARAM,
который рассматривается в разделе инициализация
объекта.
Элемент
OBJECT может также появляться в содержимом
элемента HEAD.
Поскольку ПА обычно не отображают элементы
в HEAD,
авторы должны удостовериться, что любой
элемент OBJECT в HEAD не
специфицирует содержимое, которое может
отображаться. См. в разделе разделение данных
фрэйма пример включения элемента OBJECT
в элемент HEAD.
См. раздел элементы управления (ЭУ)
формы об элементе OBJECT
в формах.
Этот документ не специфицирует поведение
элементов OBJECT,
использующих как атрибут
classid для идентификации
реализации, так и атрибут data
для определения данных для этой реализации.
Чтобы обеспечить переносимость, авторы
должны использовать элемент PARAM для того, чтобы
сообщить в реализацию, где находятся
дополнительные данные.
ПА должны интерпретировать элемент OBJECT в соответствии с
со следующими правилами приоритета:
- ПА должен сначала попытаться отобразить
объект. Он не должен отображать содержимое
элементов, но обязан проверить элементы на
предмет наличия каких-либо прямых
потомков, которые являются элементами PARAM
(см. инициализация объекта)
или элементами
MAP (см. клиентские
карты изображений).
- Если ПА не может по каким-либо причинам
отобразить объект (не сконфигурирован,
недостаточно ресурсов, неверная
архитектура и т.д.), он обязан попытаться
отобразить его (объекта) содержимое.
Авторы не должны включать содержимое
в элементы OBJECT,
появляющиеся в элементе HEAD.
В следующем примере мы вставляем аплет
аналоговых часов в документ посредством
элемента OBJECT.
Аплет, написанный на языке Python, не требует
дополнительных данных или значений для
этапа выполнения. Атрибут classid определяет
размещение аплета:
<P><OBJECT classid="http://www.miamachina.it/analogclock.py">
</OBJECT>
Обратите внимание, что часы будут отображены
сразу, как только ПА интерпретирует это
объявление
OBJECT. Можно отсрочить отображение
объекта, первоначально объявив его (описано
ниже).
Авторы должны дополнить это объявление
включением альтернативного текста как
содержимого OBJECT на тот случай, если ПА не
сможет отобразить часы.
<P><OBJECT classid="http://www.miamachina.it/analogclock.py">
An animated clock.
</OBJECT>
Важным следствием
дизайна элементов OBJECT
является то, что он предоставляет механизм
альтернативного представления объектов;
каждое объявление внедрённого OBJECT может
специфицировать альтернативные типы
содержимого. Если ПА не может отобразить
наиболее удалённые
OBJECT, он пытается отобразить
содержимое, которое может быть другим
элементом OBJECT
и т.д.
В следующем примере мы внедряем несколько
объявлений OBJECT,
чтобы проиллюстрировать, как работают
альтернативные представления.
ПА будет
пытаться отобразить первый элемент OBJECT,
который он сможет, в следующем порядке:
(1) аплет Earth, написанный на языке Python,
(2) MPEG-анимацию Earth,
(3) GIF-рисунок Earth,
(4) альтернативный текст.
<P> <!-- Сначала пытается выполнить аплет Python -->
<OBJECT title="The Earth as seen from space"
classid="http://www.observer.mars/TheEarth.py">
<!-- В противном случае, MPEG video -->
<OBJECT data="TheEarth.mpeg" type="application/mpeg">
<!-- В противном случае, рисунок GIF -->
<OBJECT data="TheEarth.gif" type="image/gif">
<!-- В противном случае отображает текст -->
The <STRONG>Earth</STRONG> as seen from space.
</OBJECT>
</OBJECT>
</OBJECT>
Самое внешнее объявление специфицирует
аплет, который не требует дополнительных
данных или начальных значений. Второе
объявление специфицирует анимацию MPEG и,
поскольку не определяется размещение
программы обработки MPEG, обращается к ПА для
обработки анимации. Мы также установили
атрибут type, чтобы ПА, "знающий",
что он не может обработать MPEG, не загружал "TheEarth.mpeg"
из сети. Третье объявление специфицирует
размещение файла GIF и определяет
альтернативный текст на тот случай, если
все остальные механизмы не сработают.
Инлайн или внешние данные.
Отображаемые данные могут быть получены
двумя путями: инлайн (т.е. из самого
документа) и из внешнего источника. Хотя
предыдущий метод обычно приводит к более
быстрому отображению, это не всегда бывает
удобно при выводе данных большого объёма.
Вот пример, иллюстрирующий, как инлайн-данные
могут быть поданы в
OBJECT:
<P>
<OBJECT id="clock1"
classid="clsid:663C8FEF-1EF9-11CF-A3DB-080036F12502"
data="data:application/x-oleobject;base64, ...base64 data...">
A clock.
</OBJECT>
Информацию о размере объекта,
выравнивании и рамках см. в визуальном
представлении объектов, изображений и
аплетов.
<!ELEMENT PARAM - O EMPTY -- именованное значение свойства -->
<!ATTLIST PARAM
id ID #ПРЕДПОЛАГАЕТСЯ -- уникальный id документа --
name CDATA #НЕОБХОДИМ -- имя свойства --
value CDATA #ПРЕДПОЛАГАЕТСЯ -- значение свойства --
valuetype (DATA|REF|OBJECT) DATA -- как интерпретировать значение --
type %ContentType; #ПРЕДПОЛАГАЕТСЯ -- тип содержимого
для значения, если valuetype=ref --
>
Начальный тег: необходим,
Конечный тег: запрещён
Определения атрибутов
- name = cdata
- Определяет имя параметра этапа
выполнения, принимаемого вставленным
объектом. Является ли имя свойства
чувствительным к регистру, зависит от
конкретной реализации объекта.
- value = cdata
- Определяет значение параметра этапа
выполнения, специфицированного в
name. Значение свойства не важно для HTML;
эти значения определяются объектом при
запросе.
- valuetype =
data|ref|object [CI]
- Специфицирует тип атрибута value. Возможные значения:
- data: Значение по умолчанию.
Означает, что определённое в value
значение будет вычислено и передано в
реализацию объекта как строка.
- ref: Значением value
является URI, указывающий на ресурс, где
хранятся значения этапа выполнения. Это
позволяет поддерживать утилиты
идентификации URI, заданного в качестве
параметра. URI должен быть передан объекту как
есть, т.е. без обработки.
- object: Значением
value является идентификатор,
ссылающийся на объявление OBJECT
в этом же документе. Идентификатор должен
быть значением атрибута id,
установленного для объявленного элемента OBJECT.
- type = content-type [CI]
- Этот атрибут определяет тип содержимого
ресурса, на который указывает атрибут
value, только в том
случае, когда valuetype
установлен в "ref". Этот атрибут, таким
образом, устанавливает для ПА тип значений,
которые будут найдены по URI, указанному в
value.
Атрибут, определённый в другом месте
Элементы PARAM
определяют набор значений, которые могут
потребоваться объекту на этапе выполнения.
Элементы PARAM могут появляться
в содержимом элементов OBJECT или APPLET
в любом количестве, в любом порядке, но
должны размещаться в начале содержимого
элементов OBJECT или APPLET.
Синтаксис имён и значений должен быть
понятен в данной реализации объекта. Данный
документ не определяет ни то, как ПА должны
запрашивать пары имя/значение, ни то, как
ПА должны интерпретировать имена
параметров, которые появляются дважды.
Мы возвращаемся к примеру с "часами",
чтобы проиллюстрировать использование PARAM:
предположим, что аплет может принять два
параметра этапа выполнения, определяющих
его начальные ширину и высоту. Мы можем
установить начальные размеры 40x40 пикселов с
помощью двух элементов
PARAM.
<P><OBJECT classid="http://www.miamachina.it/analogclock.py">
<PARAM name="height" value="40" valuetype="data">
<PARAM name="width" value="40" valuetype="data">
This user agent cannot render Python applications.
</OBJECT>
В следующем примере, данные этапа
выполнения для параметра "Init_values"
определены как внешний ресурс (файл GIF).
Значение атрибута valuetype,
таким образом, установлено в "ref", а value - это URI, указывающий на
ресурс.
<P><OBJECT classid="http://www.gifstuff.com/gifappli"
standby="Loading Elvis...">
<PARAM name="Init_values"
value="./images/elvis.gif">
valuetype="ref">
</OBJECT>
Обратите внимание, что мы установили
также атрибут standby для того,
чтобы ПА мог отобразить сообщение, пока
загружается механизм представления.
Если элемент OBJECT отображён, ПА должен искать
содержимое только тех элементов PARAM, которые являются прямыми
потомками и "снабдить" ими OBJECT.
Так, в следующем примере, если "obj1"
отображён, "param1" применяется к "obj1" (а не к "obj2").
Если "obj1" не отображён, а "obj2" отображён, "param1"
игнорируется, а "param2" применяется к "obj2". Если
ни один OBJECT
не отображён, ни один PARAM не применяется.
<P>
<OBJECT id="obj1">
<PARAM name="param1">
<OBJECT id="obj2">
<PARAM name="param2">
</OBJECT>
</OBJECT>
Размещение реализации объекта задаётся в URI.
Как мы уже видели во введении
в URI, первый сегмент абсолютного URI
специфицирует схему именования,
используемую для передачи данных,
указанных в URI. Для документов HTML эта схема,
чаще всего, "http". Некоторые аплеты могут
применять другие схемы именования.
Например, при спецификации аплета Java,
авторы могут использовать URI, начинающиеся
с "java", а для аплетов ActiveX - использовать
"clsid".
В следующем примере мы вставляем аплет Java
в документ HTML:
<P><OBJECT classid="java:program.start">
</OBJECT>
При установленном атрибуте codetype, ПА может решить,
запрашивать ли приложение Java, на основе его
(ПА) способности выполнить аплет.
<OBJECT codetype="application/java-archive"
classid="java:program.start">
</OBJECT>
Некоторые схемы отображения требуют
наличия дополнительной информации для
идентификации конкретной реализации, и
поэтому им нужно сообщить, где эту
информацию искать. Авторы могут задать путь
реализации объекта с помощью атрибута
codebase:
<OBJECT codetype="application/java-archive"
classid="java:program.start">
codebase="http://foooo.bar.com/java/myimplementation/"
</OBJECT>
В следующем примере специфицирован (в
атрибуте classid)
объект ActiveX в URI, начинающемся со схемы
именования "clsid". Атрибут data
локализует данные для отображения ("часы").
<P><OBJECT classid="clsid:663C8FEF-1EF9-11CF-A3DB-080036F12502"
data="http://www.acme.com/ole/clock.stm">
Это приложение не поддерживается.
</OBJECT>
Предыдущие примеры иллюстрировали только
изолированные определения объектов. Если
документ содержит более чем одну инстанцию
(сущность, объект) одного и того же объекта,
можно разделить объявление объекта и его
инстанции. Такой подход даёт определённые
преимущества:
- Данные могут быть запрошены ПА из сети только
один раз (при объявлении) и повторно
использоваться для каждой инстанции.
- Можно размещать инстанции из другого
места, например, из гиперссылки.
- Можно определять объекты как данные
этапа выполнения других объектов.
Для объявления объекта так, чтобы он не
исполнялся после считывания ПА, установите
булев атрибут declare элемента OBJECT. Одновременно
авторы должны идентифицировать объявление
установкой уникального значения атрибута id
элемента OBJECT. Последующие инстанции этого
объекта будут ссылаться на этот
идентификатор.
Объявленный OBJECT должен появиться до первой
инстанции этого
OBJECT.
Объект, объявленный с атрибутом declare, размещается
каждый раз, когда элемент, который
ссылается на этот объект, запрашивает его (объект)
для отображения (напр., гиперссылка,
ссылающаяся на него, активирована, объект,
ссылающийся на него, активирован и т.д.).
В следующем примере мы объявляем OBJECT и размещаем
его вызовом из гиперссылки. Таким образом,
объект может быть активирован щелчком на
выделенном тексте, например:
<P><OBJECT declare
id="earth.declaration"
data="TheEarth.mpeg"
type="application/mpeg">
<STRONG>Земля</STRONG> - вид из космоса.
</OBJECT>
...позже в документе...
<P>Вот <A href="#earth.declaration"> анимация Earth!</A>
Следующий пример иллюстрирует, как
специфицировать значения этапа выполнения,
которые являются другими объектами. Здесь
мы посылаем текст (стих) гипотетическому
механизму просмотра стихов. Объект
распознаёт параметр этапа выполнения под
названием "font" (для отображения текста стиха
определённым шрифтом). Значение этого
параметра само по себе является объектом,
которое вставляет (но не отображает) объект
шрифта. Соотношение между объектом font и
объектом просмотра стиха достигается путём
(1) установки id "tribune" в
объявлении объекта font и
(2) ссылкой на него из элемента PARAM объекта
просмотра стиха (с помощью valuetype и value).
<P><OBJECT declare
id="tribune"
type="application/x-webfont"
data="tribune.gif">
</OBJECT>
...здесь просматривается KublaKhan.txt...
<P><OBJECT classid="http://foo.bar.com/poem_viewer"
data="KublaKhan.txt">
<PARAM name="font" valuetype="object" value="#tribune">
<P>You're missing a really cool poem viewer ...
</OBJECT>
ПА, не поддерживающие атрибут declare, должны
отображать содержимое объявления OBJECT.
APPLET Не
рекомендуется (со всеми его атрибутами).
Следует использовать OBJECT.
См. формальное определение в Переходном
ОТД.
Определения атрибутов
- codebase = uri [CT]
- Определяет базовый URI аплета. Если не
установлен, тогда по умолчанию
используется тот же базовый URI, что и для
текущего документа. Значения этого
атрибута могут ссылаться только на
субдиректории той директории, в которой
находится текущий документ.
Примечание.
Поскольку ограничения на субдиректории
являются отходом от принятой практики и
спецификации HTML 3.2, HTML Working Group решила
оставить данные ограничения в этой версии
спецификации из соображений обеспечения
безопасности.
- code = cdata [CS]
- Специфицирует имя файла класса, который
содержит скомпилированный подкласс
аплета, или путь к этому классу, включая и
сам файл класса. Интерпретируется в
соответствии с кодовой базой аплета.
Должен присутствовать code
или object.
- name = cdata [CS]
- Определяет имя инстанции аплета, что
делает возможным для аплетов в пределах
той же страницы находить друг друга (и
взаимодействовать).
- archive = uri-list [CT]
- Определяет список разделённых
запятыми URI для архивов, содержащих
классы и другие ресурсы, которые будут "предзагружены".
Классы загружаются с использованием
объекта AppletClassLoader с установленным codebase. Относительные URI для
архивов интерпретируются в соответствии с
codebase аплета. Предварительная загрузка
ресурсов может значительно ускорить
выполнение аплетов.
- object = cdata [CS]
- Этот атрибут именует ресурс, содержащий
сериализованное представление состояния
аплета. Он интерпретируется относительно
codebase аплета. Сериализованные данные
содержат имя класса аплета, но не реализацию.
Имя класса используется для запроса
реализации из файла класса или архива.
Если
аплет "десериализован", вызывается
метод start(), но не метод init().
Значения атрибутов после сериализации
оригинального объекта не
восстанавливаются. Любые атрибуты,
передаваемые в инстанцию APPLET,
будут доступны аплету. Авторы должны
предельно осторожно пользоваться этой
возможностью. Аплет должен быть
остановлен перед тем, как будет
сериализован.
Атрибуты code или object должны присутствовать.
Если задан и code, и
object, то будет считаться ошибкой, если
они будут задавать разные имена класса.
- width = length [CI]
- Определяет начальную ширину области
отображения аплета (за исключением любых
окон или диалоговых окон, создаваемых
аплетом)).
- height = length [CI]
- Определяет начальную высоту области
отображения аплета (за исключением любых
окон или диалоговых окон, создаваемых
аплетом).
Атрибуты, определённые в другом месте
Этот элемент, поддерживаемый всеми
браузерами с поддержкой Java, позволяет
дизайнерам внедрять аплет Java в документ HTML.
Он не рекомендуется. Вместо
него следует применять элемент OBJECT.
Содержимое APPLET функционирует как
альтернативная информация для ПА, не
поддерживающих этот элемент или
сконфигурированных так, чтобы не
поддерживать аплеты. В противном случае ПА
должны игнорировать содержимое.
НЕ РЕКОМЕНДУЕТСЯ:
В этом примере элемент APPLET вставляет аплет Java
в документ. Поскольку отсутствует codebase,
предполагается, что аплет находится в той
же директории, что и текущий документ.
<APPLET code="Bubbles.class" width="500" height="500">
Java applet that draws animated bubbles.
</APPLET>
Этот пример можно переписать с
использованием OBJECT:
<P><OBJECT codetype="application/java"
classid="java:Bubbles.class"
width="500" height="500">
Java applet that draws animated bubbles.
</OBJECT>
Начальные значения могут быть переданы
аплету элементом PARAM.
НЕ РЕКОМЕНДУЕТСЯ:
Этот участок аплета Java:
<APPLET code="AudioItem" width="15" height="15">
<PARAM name="snd" value="Hello.au|Welcome.au">
Java applet that plays a welcoming sound.
</APPLET>
можно переписать с OBJECT:
<OBJECT codetype="application/java"
classid="AudioItem"
width="15" height="15">
<PARAM name="snd" value="Hello.au|Welcome.au">
Java applet that plays a welcoming sound.
</OBJECT>
Иногда, вместо того, чтобы ссылаться
на документ, автор может захотеть встроить
объект непосредственно в основной документ
HTML. Для этого авторы могут использовать
элементы
IFRAME или OBJECT,
но эти элементы отличаются друг от друга.
Они не только имеют разные модели
содержимого; элемент IFRAME
может быть целевым фрэймом (см. детали в определении информации
целевого фрэйма) и может быть "выбран"
пользовательским агентом как фокус для
печати, просмотра текста-источника HTML и т.д.
ПА могут отображать выбранные фрэймы не так,
как невыбранные (например, прорисовкой
рамки вокруг выбранного фрэйма).Внедрённый документ
полностью независим от документа, в который
он внедрён. Например, относительные URI
внутри внедрённого документа разрешаются
в соответствии с базовым URI внедрённого
документа, а не с базовым URI главного
документа. Внедрённый документ
отображается только внутри другого
документа (напр., в дочернем окне), в то же
время, он остаётся независимым.
К примеру, следующие строки внедряют
содержимое файла
embed_me.html в то место, где появляется
определение OBJECT:
...текст до...
<OBJECT data="embed_me.html">
Warning: embed_me.html could not be embedded.
</OBJECT>
...текст после...
Напоминаем, что содержимое OBJECT должно
отображаться только в том случае, если файл,
определённый в атрибуте data не может быть загружен.
Поведение ПА в тех случаях, когда файл
внедряет сам себя, не определено.
Карты изображений позволяют авторам
специфицировать регионы/области
изображения или объекта и назначать
отдельное действие каждому региону (напр.,
запросить документ, запустить программу и т.п.).
Если регион активируется пользователем,
действие запускается на выполнение.Карта
изображений (image map) создаётся путём
ассоциирования объекта со спецификацией
сенситивного геометрического региона на
объекте.
Существуют карты двух типов:
- Клиентские\на
стороне клиента (Client-side). Если
пользователь активирует мышью регион
клиентской карты, координаты щелчка (в
пикселах) интерпретируются ПА. ПА выбирает
ссылку, определённую для данного региона,
и переходит по ней.
- Серверные\На
стороне сервера (Server-side). Если
пользователь активирует мышью регион
серверной карты, координаты щелчка (в
пикселах) пересылаются на сервер агенту,
определённому атрибутом href элемента A. Агент
на сервере интерпретирует координаты и
выполняет некоторое действие.
Клиентские карты изображений предпочтительнее,
нежели серверные по двум (как минимум)
причинам: они доступны для людей,
просматривающих документ в неграфических
браузерах, и немедленно реагируют при
перемещении указателя над активным
регионом.
Начальный тег: необходим,
Конечный тег: необходим
Начальный тег: необходим,
Конечный тег: запрещён
Определения атрибутов элемента MAP
- name = cdata [CI]
- Назначает имя карте изображений,
определённой элементом MAP.
Определения атрибутов элемента AREA
- shape =
default|rect|circle|poly
[CI]
- Этот атрибут определяет границы региона.
Возможные значения:
- default: весь регион;
- rect: прямоугольный регион;
- circle: круглый регион;
- poly: многоугольный регион.
- coords =
coordinates [CN]
- Определяет позицию на экране и очертания.
Количество и порядок значений зависят от
определяемой фигуры. Возможные сочетания:
- rect: left-x, top-y, right-x, bottom-y.
- circle: center-x, center-y, radius.
Примечание. Если значение radius - в
процентах, ПА должны вычислять
окончательное значение радиуса на базе
ширины и высоты ассоциированного объекта.
Значение радиуса должно быть меньше 2.
- poly: x1, y1, x2, y2, ..., xN, yN. Первая пара
координат x и y и последняя должны бить
одинаковыми, чтобы "закрыть"
многоугольник. Если эти значения не
одинаковы, ПА должен вычислить
дополнительную пару координат, чтобы
закрыть многоугольник.
Координаты относительны к верхнему левому
углу объекта. Все значения являются размерами.
Все значения разделены запятыми.
- nohref [CI]
- Если установлен этот булев атрибут, то он
указывает, что регион не имеет
ассоциированной гиперссылки.
Атрибут для ассоциирования карты с
элементом
- usemap = uri [CT]
- Ассоциирует карту с элементом. Карта
изображений определяется элементом MAP. Значение usemap должно
совпадать со значением атрибута name ассоциированного элемента MAP.
Атрибуты, определённые в другом месте
-
id, class (идентификаторы документа)
-
lang (язык), dir (направление
текста)
-
title (заголовок элемента)
- style (инлайн-стиль)
- name (отправка объектов с формой)
-
alt (альтернативный текст)
-
href (ссылка-якорь)
target (целевой
фрэйм)
- tabindex (навигация табуляцией)
- accesskey (символ быстрого доступа)
-
shape (карты изображений)
- onclick, ondblclick,
onmousedown, onmouseup,
onmouseover, onmousemove,
onmouseout, onkeypress,
onkeydown, onkeyup,
onfocus, onblur (внутренние события)
Элемент
MAP определяет клиентскую карту (или
другой механизм навигации), который может
быть ассоциирован с другими элементами (IMG,
OBJECT или INPUT). Карта
ассоциируется с элементом посредством
атрибута
usemap. Элемент MAP
может использоваться без ассоциированного
изображения для механизмов общей навигации.
Наличие атрибута usemap в элементе OBJECT
подразумевает, что включаемый объект - это
изображение. Кроме того, если элемент OBJECT
имеет ассоциированную клиентскую карту, ПА
могут выполнять взаимодействие с
пользователем через OBJECT, только в понятиях клиентской
карты. Это позволяет ПА (таким как
аудиобраузер или робот) взаимодействовать
с OBJECT
без его выполнения (прогона); ПА может даже избрать
вариант - не запрашивать (или не исполнять)
объект. Если OBJECT
имеет ассоциированную карту изображений,
авторы не могут рассчитывать, что объект
будет запрошен или выполнен любым ПА.
Модель
содержимого элемента
MAP позволяет авторам
комбинировать:
- Один или более элементов AREA. Эти элементы не имеют
содержимого, но определяют геометрические
регионы карты изображений и гиперссылки,
ассоциированные с каждым регионом.
Заметьте, что ПА обычно не отображают
элементы AREA.
Поэтому авторы должны предоставлять альтернативный
текст для каждого AREA
в атрибуте alt
(см. ниже как определить альтернативный текст).
- Содержимое уровня блока. Это содержимое
должно включать элементы A,
которые специфицируют геометрические
регионы карты и ссылки, ассоциированные с
каждым регионом. Обратите внимание, что ПА должен отображать содержимое уровня
блока элемента MAP.
Авторы должны использовать этот метод для
создания более доступных документов.
Если элемент MAP
имеет смешанное содержимое (элементов AREA
и содержимое уровня блока), ПА должны
игнорировать элементы AREA.
Авторы должны специфицировать геометрию
карты изображений полностью элементами AREA,
полностью элементами A или полностью теми и другими,
если содержимое смешанное. Авторы могут
смешивать содержимое так, чтобы старые ПА
обрабатывали очертания карт, определённые
элементами
AREA, а новые ПА использовали
преимущества содержимого уровня блоков.
Если два или более регионов
перекрываются, элемент, определяющий
регион, который появился раньше в документе,
имеет приоритет (напр., ответить на ввод
пользователя).
ПА и авторы должны
предоставлять текстовую альтернативу
графической карте для тех случаев, когда
графика недоступна или пользователь не
может её получить. Например, ПА могут
использовать текст из alt для создания текстовых ссылок
вместо графической карты изображений.
Такие ссылки могут быть активированы
разными способами (с клавиатуры, голосом и т.д.).
Примечание.
MAP не имеет обратной
совместимости с ПА HTML 2.0.
Примеры клиентских карт
В следующем примере мы создаём клиентскую
карту для элемента OBJECT.
Мы не хотим отображать содержимое карты при
отображении элемента OBJECT,
поэтому мы "прячем" элемент MAP
внутри содержимого элемента OBJECT.
Следовательно, содержимое элемента MAP будет отображаться,
только если OBJECT не может быть отображён.
<HTML>
<HEAD>
<TITLE>The cool site!</TITLE>
</HEAD>
<BODY>
<P><OBJECT data="navbar1.gif" type="image/gif" usemap="#map1">
<MAP name="map1">
<P>Navigate the site:
<A href="guide.html" shape="rect" coords="0,0,118,28">Access Guide</a> |
<A href="shortcut.html" shape="rect" coords="118,0,184,28">Go</A> |
<A href="search.html" shape="circle" coords="184,200,60">Search</A> |
<A href="top10.html" shape="poly" coords="276,0,276,28,100,200,50,50,276,0">Top Ten</A>
</MAP>
</OBJECT>
</BODY>
</HTML>
Нам может понадобиться отображать
содержимое карты даже тогда, когда ПА может
отображать OBJECT. Например, нам нужно
ассоциировать карту с элементом
OBJECT и вставить текстовую
навигационную панель внизу страницы. Для
этого мы определяем элемент MAP вне OBJECT:
<HTML>
<HEAD>
<TITLE>The cool site!</TITLE>
</HEAD>
<BODY>
<P><OBJECT data="navbar1.gif" type="image/gif" usemap="#map1">
</OBJECT>
...остальная часть страницы...
<MAP name="map1">
<P>Navigate the site:
<A href="guide.html" shape="rect" coords="0,0,118,28">Access Guide</a> |
<A href="shortcut.html" shape="rect" coords="118,0,184,28">Go</A> |
<A href="search.html" shape="circle" coords="184,200,60">Search</A> |
<A href="top10.html" shape="poly" coords="276,0,276,28,100,200,50,50,276,0">Top Ten</A>
</MAP>
</BODY>
</HTML>
В это примере мы создаём похожую карту,
используя на этот раз элемент AREA.
Обратите внимание на использование текста alt:
<P><OBJECT data="navbar1.gif" type="image/gif" usemap="#map1">
<P>Это панель навигации.
</OBJECT>
<MAP name="map1">
<AREA href="guide.html"
alt="Access Guide"
shape="rect"
coords="0,0,118,28">
<AREA href="search.html"
alt="Search"
shape="rect"
coords="184,0,276,28">
<AREA href="shortcut.html"
alt="Go"
shape="circle"
coords="184,200,60">
<AREA href="top10.html"
alt="Top Ten"
shape="poly"
coords="276,0,276,28,100,200,50,50,276,0">
</MAP>
Сходная версия с использованием элемента IMG вместо OBJECT
(с тем же объявлением MAP):
<P><IMG src="navbar1.gif" usemap="#map1" alt="navigation bar">
Следующий пример иллюстрирует, как карты
изображений могут использоваться
совместно (shared).
Вложенные элементы OBJECT используются, если ПА не
поддерживают определённые форматы.
Например:
<P>
<OBJECT data="navbar.png" type="image/png">
<OBJECT data="navbar.gif" type="image/gif">
...текст, описывающий изображение...
</OBJECT>
</OBJECT>
Если ПА не поддерживает формат PNG, он
пытается отобразить рисунок GIF. Если GIF не
поддерживается (напр., в голосовых ПА),
отображается текстовое описание,
предоставленное как содержимое
внутреннего элемента OBJECT.
Если элементы OBJECT вложены таким образом,
авторы могут разделять изображение между
ними:
<P>
<OBJECT data="navbar.png" type="image/png" usemap="#map1">
<OBJECT data="navbar.gif" type="image/gif" usemap="#map1">
<MAP name="map1">
<P>Navigate the site:
<A href="guide.html" shape="rect" coords="0,0,118,28">Access Guide</a> |
<A href="shortcut.html" shape="rect" coords="118,0,184,28">Go</A> |
<A href="search.html" shape="circle" coords="184,200,60">Search</A> |
<A href="top10.html" shape="poly" coords="276,0,276,28,100,200,50,50,276,0">Top Ten</A>
</MAP>
</OBJECT>
</OBJECT>
Следующий пример показывает. как
определить якоря для создания неактивных
зон внутри карты изображений. Первый якорь
определяет маленький круглый регион без
ассоциированной гиперссылки. Второй якорь
определяет более крупный круглый регион с
тем же центром координат. При их соединении
образовался круг с неактивной средней
частью и активным краем. Важен порядок
определения якорей, поскольку малый круг
должен перекрывать большой.
<MAP name="map1">
<P>
<A shape="circle" coords="100,200,50">I'm inactive.</A>
<A href="outer-ring-link.html" shape="circle" coords="100,200,250">I'm active.</A>
</MAP>
Подобным же образом атрибут nohref элемента AREA
объявляет, что данный геометрический
регион не имеет ассоциированной
гиперссылки.
Серверные карты могут
представлять интерес в тех случаях, когда
карта слишком сложна , чтобы работать как
карта на стороне клиента.
Можно определить серверные карты только
для элементов IMG и INPUT.
IMG
должен находиться внутри элемента A,
а булев атрибут ismap ([CI]) должен быть
установлен.
INPUT должен быть типа "image".
Когда пользователь активирует ссылку
щелчком на изображении, координаты экрана
передаются непосредственно тому серверу,
где находится документ. Значения координат
экрана выражены в пикселах относительно
изображения. Нормативную информацию об
определении пикселов и о том, как их
обсчитывать, см. в [CSS1].
В следующем примере активный регион
определяет ссылку к серверу. Таким образом,
щелчок где-либо на изображении вызывает
отправку координат щелчка на сервер:
<P><A href="http://www.acme.com/cgi-bin/competition">
<IMG src="game.gif" ismap alt="target"></A>
Точка
щелчка предаётся на сервер так: ПА
устанавливает новый URI из URI, определённого
атрибутом href в элементе A,
присоединением `?' с последующими
координатами x и y, разделёнными запятыми.
Теперь переход осуществляется по новому URI.
Например, в предыдущем отрывке, если
пользователь щёлкнул в точке x=10, y=27, тогда
новый URI будет "http://www.acme.com/cgi-bin/competition?10,27".
ПА, не предоставляющие пользователю
возможность выбора определённых координат
(неграфические ПА, которые имеют только
клавиатурный ввод, речевые ПА и т.д.), должны
при активации гиперссылки отсылать серверу
координаты "0,0".
Все атрибуты элементов IMG
и OBJECT, касающиеся визуального
выравнивания и представления, не
рекомендуются. Вместо этого
рекомендуется использовать таблицы стилей.
Если установлены, атрибуты width
и height
сообщают ПА , что нужно переопределить
натуральные размеры изображения или
объекта новыми значениями.
Если объектом является изображение, оно
может быть обсчитано. ПА должны обсчитывать
объект или изображение для установки
ширины и высоты, специфицированных автором.
Напоминаем, что размеры, выраженные в
процентах, базируются на доступном
вертикальном или горизонтальном
пространстве, а не на натуральных размерах
изображения, объекта или аплета.
Атрибуты height и width сообщают ПА
основную идею о размерах изображения или
объекта, чтобы ПА мог зарезервировать под
них пространство и продолжить показ
документа, пока продолжается получение
данных изображения.
Изображение или объект могут быть
окружены рамкой (напр., если рамка
определена пользователем или если
изображение является содержимым элемента A).
Вот значения для align, касающиеся
позиции объекта по отношению к окружающему
тексту:
- bottom: означает, что низ объекта
должен быть выровнен вертикально по
текущей базовой линии. Это значение по
умолчанию.
- middle: означает, что центр объекта
должен быть выровнен вертикально по
текущей базовой линии.
- top: означает, что верх объекта
должен быть выровнен вертикально по
верхней границе текущей строки.
Два других значения, left и right,
заставляют изображение "отплывать" к
левому или правому краю. Они
рассматриваются разделе всплывающие
объекты.
Различия в интерпретации
выравнивания. ПА отличаются в
интерпретации атрибута align. Некоторые
только принимают во внимание то, что
появляется в строке перед элементом, другие
учитывают текст по обе стороны от элемента.
Определение атрибута
- alt = text [CS]
- Для ПА, которые не могут выводить
изображения, формы или аплеты, этот
атрибут определяет альтернативный текст.
Язык альтернативного текста определяется
атрибутом lang.
Некоторые нетекстовые элементы (IMG, AREA,
APPLET и INPUT) позволяют авторам
вводить альтернативный текст, служащий
содержимым в тех случаях, когда элемент не
может быть отображён нормально.
Установка альтернативного текста помогает
пользователям без графических дисплеев,
пользователям, чьи браузеры не
поддерживают формы, пользователям с
дефектами зрения, тем, кто использует
голосовые синтезаторы, тем, кто настроил свои
графические ПА так, чтобы не показывать
изображения и т.д.
Атрибут alt
должен быть определён для элементов IMG и AREA.
Он не обязателен для элементов INPUT
и APPLET.
Поскольку альтернативный текст может
оказать существенную помощь, он должен быть
определён очень тщательно. Авторы должны
руководствоваться следующим:
- Не определяйте не относящийся к делу
альтернативный текст при включении
изображений, предназначенных для форматирования
страницы, например, alt="red ball" не
подойдёт для изображения, которое добавляет
красные мячи для декорирования заголовка
или параграфа. В этом случае
альтернативный текст должен быть пустой
строкой (""). В любом случае авторам не стоит
использовать изображения для
форматирования страниц. Вместо этого
нужно использовать таблицы стилей.
- Не указывайте бессмысленный
альтернативный текст (напр., "пустой
текст"). Это не только дезориентирует
пользователей, но и замедляет работу ПА,
которые должны конвертировать текст для
речевого или брайль-вывода.
Разработчики должны просмотреть раздел о доступности для
получения информации о том, как
обрабатывать ситуации с отсутствием
альтернативного текста.
|