кому уже сейчас не терпится
Те, кому уже сейчас не терпится посмотреть на настоящие живые компоненты ActiveX, могут, вооружившись броузером Internet Explorer, познакомиться с небольшой , отобранных фирмой Microsoft (если вы почему-либо не хотите расставаться с броузером Netscape, вам придется сначала установить для него специальный модуль, о котором речь пойдет ниже). Если же вам интереснее разобраться сначала в том, как использовать это новое средство в ваших собственных страницах, - читайте дальше.
Органы управления ActiveX подключаются к HTML-документам с помощью тега <OBJECT>, который предложен в одном из и поддерживается пока только броузером Internet Explorer. Назначение этого тега (как и схожего с ним тега <EMBED>, применяемого в Netscape Navigator для вызова подключаемых модулей) - интеграция в HTML инородного материала, обрабатываемого независимыми программами. Вот полный синтаксис этого элемента HTML:
<OBJECT ALIGN=BASELINE|CENTER|LEFT|MIDDLE|RIGHT|TEXTBOTTOM|TEXTMIDDLE|TEXTTOP BORDER=число
CLASSID=URL
CODEBASE=URL
CODETYPE=MIME-тип
DATA=URL
DECLARE HEIGHT=число
HSPACE=число
ID=идентификатор
NAME=идентификатор
SHAPES STANDBY=текст
TYPE=MIME-тип
USEMAP=URL
VSPACE=число
WIDTH=число
> </OBJECT>
Некоторые из перечисленных атрибутов аналогичны одноименным атрибутам известного тега <IMG>, поэтому здесь мы их рассматривать не будем. Вот полное описание атрибутов, специфических для тега <OBJECT>:
CLASSID=URL
С помощью этого атрибута указывается идентификатор класса вызываемого органа управления. Каждый OCX-модуль и, следовательно, каждый орган управления ActiveX обязан иметь свой уникальный идентификатор класса. Программисты, знакомые с технологией OLE, уже встречались с этим идентификатором, который обычно обозначается сокращением CLSID и представляет собой довольно длинную цепочку шестнадцатеричных цифр - что-нибудь вроде "017C99A0-8637-11CF-A3A9-00A0C9034920".
Но почему же в синтаксисе этого атрибута стоит "URL"? Дело в том, что тег <OBJECT> может использоваться для подключения не только органов управления ActiveX, но и почти любых программных или информационных объектов - в том числе и таких, которые распознаются не по "идентификаторам классов", а как-нибудь иначе.
Чтобы дать понять броузеру, как воспринимать строку - значение атрибута CLASSID, строка эта строится по тем же правилам, что и URL-адреса. (Это позволяет, в частности, записать в этот атрибут обычный URL какого-нибудь файла в WWW.) Значение CLASSID для органов управления ActiveX состоит из двух частей, соединенных двоеточием: левая часть содержит слово "clsid", а правая - собственно идентификатор класса. Пример: CLASSID="clsid:017C99A0-8637-11CF-A3A9-00A0C9034920"
Как и в большинстве подобных случаев, кавычки вокруг значения атрибута можно опустить (хотя делать это не рекомендуется). Для органов управления ActiveX этот атрибут обязателен.
CODEBASE=URL
В этом атрибуте указывается URL-адрес (на сей раз уже вполне настоящий, с "http:" или "ftp:") файла, содержащего вызываемый орган управления и доступного для получения с одного из серверов Интернета. К этому серверу броузер обратится в том случае, если не сможет найти копию данного органа управления на компьютере пользователя. URL-адресов в этом атрибуте можно перечислить несколько - на тот случай, если какой-то из серверов будет почему-либо недоступен.
Этот же атрибут позволяет указывать для органов управления ActiveX требуемый номер версии. Например, если написать CODEBASE="http://activex.microsoft.com/controls/ iexplorer/iegrad.ocx#Version=4,70,0,1161"
то попытка получить данный модуль ActiveX из Интернета предпринимается не только в том случае, когда на компьютере пользователя его нет, но и тогда, когда орган управления установлен, но имеет более старый номер версии, чем тот, что указан в атрибуте CODEBASE (в нашем примере требуется версия не старее 4.70.0.1161).
CODETYPE=MIME-тип
TYPE=MIME-тип
Эти два необязательных атрибута позволяют указать типы (в терминах стандарта MIME) тех файлов, на которые ссылаются атрибуты CLASSID (атрибут CODETYPE) и DATA (атрибут TYPE). Для органов управления ActiveX атрибут CODETYPE, если он присутствует, должен иметь значение "application/x-oleobject".
DATA=URL
С помощью этого атрибута указывается местонахождение файла данных, который может понадобиться для работы данному органу управления. Для некоторых органов управления ActiveX этот атрибут является обязательным. Кроме того, с помощью атрибута DATA можно включать прямо в HTML-файл в закодированном виде сам файл, содержащий орган управления (этим можно пользоваться только для очень небольших по объему файлов).
DECLARE
Добавление этого пустого атрибута заставит тег <OBJECT> произвести только объявление, но не создание объекта. При этом в память броузера записывается весь набор атрибутов и параметров объекта, но никакой перекачки файлов или запуска программ не происходит. Действительное создание этого объекта откладывается до того момента, пока кому-нибудь (другому объекту или сценарию) не потребуется обменяться данными с работающей копией объекта. Уловив эту потребность, броузер тут же попытается материализовать затребованный объект в соответствии с хранящимися в его памяти спецификациями.
ID=идентификатор
Атрибут ID позволяет приписать создаваемому объекту имя в виде какого-то идентификатора. Обращение к этому объекту со стороны других объектов или сценариев возможно только через указание этого имени. Кроме того, указанный здесь идентификатор может использоваться как привязка для гипертекстовых ссылок на объект (т.е. может стоять после символа "#" в URL-адресе).
Важно понимать, что если CLASSID указывает на тип объекта (в терминах объектно-ориентированного программирования - на класс, экземпляром которого является объект), то ID представляет собой уникальное имя конкретного экземпляра объекта. Иными словами, можно создать сколько угодно тегов <OBJECT> с одним и тем же значением CLASSID, но значения ID у них обязательно должны различаться.
NAME=идентификатор
С помощью этого необязательного атрибута создаваемый объект может внести свой вклад в данные, которые броузер отошлет на сервер после заполнения пользователем HTML-бланка (для этого тег <OBJECT> должен находиться внутри пары тегов <FORM> ... </FORM>).
Отправляемые данные будут содержать информацию, полученную броузером от объекта (понятно, что далеко не каждый объект годится для такой операции) в паре с идентификатором, указанным в атрибуте NAME.
SHAPES
Этот пустой атрибут приказывает броузеру наложить на прямоугольник, занимаемый объектом, карту (map), так чтобы отдельные регионы этого прямоугольника служили рабочими частями гипертекстовых ссылок. Координаты этих регионов и URL-адреса ссылок для них указываются с помощью тегов <A> со специальными дополнительными атрибутами, которые должны располагаться между <OBJECT> и соответствующим ему </OBJECT>. Это дает возможность, не теряя совместимости со старыми броузерами, с помощью тега <OBJECT> избавиться от необходимости снабжать все изображения-карты текстовыми эквивалентами.
STANDBY=текст
В этом атрибуте можно указать текстовую надпись, которая будет видна в прямоугольнике, отведенном объекту, пока сам объект будет загружаться и запускаться.
Помимо информации, передаваемой в атрибутах тега <OBJECT>, органам управления для работы требуется, как правило, набор каких-то дополнительных параметров. Эти параметры передаются с помощью тегов <PARAM>, которые вставляются между <OBJECT> и соответствующим ему </OBJECT>. Каждый тег <PARAM> имеет пару атрибутов NAME и VALUE, с помощью которых задается одна пара "имя-значение", т.е. присваивается значение одному именованному параметру. Разумеется, список возможных параметров и набор допустимых значений - свои у каждого органа управления и указываются в документации к нему.
Как подсказывает само название тега <OBJECT>, каждый случай употребления этого тега в HTML-файле инициирует создание экземпляра объекта - в том смысле, какой это слово имеет в объектно-ориентированных языках программирования. Подобно любому другому, созданный таким образом объект имеет определенные свойства (properties), методы (methods) и события (events), набор которых свой у каждого органа управления.
Единое информационное пространство Web-страницы позволяет напрямую обращаться к этим свойствам и методам как другим объектам - органам управления ActiveX, так и встроенным в HTML-документ сценариям на любом из поддерживаемых языков (как известно, Internet Explorer сейчас поддерживает два языка для написания сценариев - VBScript и JavaScript).
Переменные - свойства объекта всегда совпадают (и по значению, и по обозначению) с теми параметрами, которые передаются ему с помощью тегов <PARAM>. Методы объекта - это функции, вызов которых позволяет выполнить какие-то действия, специфические для данного класса объектов. Так, почти все органы управления ActiveX содержат метод AboutBox, выводящий на экран окно с информацией о фирме-разработчике, версии и дате выпуска данного модуля, и метод Repaint, заставляющий модуль обновить изображение в отведенной ему области (к примеру, после изменения каких-то параметров). Доступ к свойствам и методам объекта в языке JavaScript осуществляется через идентификатор, присвоенный объекту атрибутом ID. Чтобы ыполучить значение какого-то свойства объекта, достаточно написать имя-объекта.имя-свойства
а чтобы вызвать принадлежащий объекту метод - имя-объекта.имя-метода (параметры метода)
Несколько сложнее обстоит дело с доступом к событиям объекта. Вы, вероятно, знаете, что если с объектом связано некое событие, то при его наступлении (например, при щелчке мышью над объектом или по истечении какого-то периода времени) управление получает специальный фрагмент кода - обработчик события (event handler). Обработчики для тех событий, которые вас интересуют, вы должны самостоятельно написать, а затем связать их с нужными событиями тех или иных объектов. До сих пор привязка обработчиков к событиям в программах на JavaScript была возможна единственным способом - с помощью специальных атрибутов в элементах HTML, определяющих объект, к которому относится событие. Например, чтобы предусмотреть какую-то реакцию на нажатие кнопки, нужно добавить к тегу <INPUT>, с помощью которого эта кнопка создается, следующий атрибут: onClick="фрагмент сценария"
К сожалению, с тегом <OBJECT> такой метод не работает - даже если создаваемый с его помощью орган управления способен реагировать на щелчок мыши, добавление к тегу атрибута onClick нужного эффекта не даст. Чтобы решить эту задачу, нужно записать обработчик события в отдельной паре тегов <SCRIPT> ... </SCRIPT>, добавив к открывающему тегу следующую пару атрибутов:
FOR="имя объекта"
EVENT="имя события"
Имя объекта - это тот идентификатор, который был ему приписан с помощью атрибута ID (см. выше). Как правило, имена событий (набор которых свой у каждого органа управления) не содержат префикса "on" - так, событие щелчка мыши всегда обозначается идентификатором Click, а не onClick.