Компоненты в IE


Одним из самых сокровенных желаний web-программиста, пишущего скрипты для DHTML, является способность получать информацию о браузере пользователя. Например, Вы узнали, что ваш сайт изумительно смотрится под Internet Explorer'ом, но вот беда, в одной из субверсий браузера содержится ошибка, и ваш сайт отображается не так как надо. Что делать?

Или, создавая код для банера, показывающего flash-ролик, Вы хотели бы узнать установлен ли Flash MX на компьютере пользователя. И, если Flash MX не установлен, то, в зависимости от типа соединения, показать анимированный gif или предложить пользователю установить plug-in для просмотра flash-роликов.

До недавнего времени для реализации таких желаний требовалось изощренное программирование, однако часто и оно не давало надежных результатов. Однако для тех пользователей, у которых стоит Internet Explorer версий 5.х или 6.0 (по данным статистики SpyLog - это 95%-97% всех пользователей Рунета), появилась возможность определить, установлен или нет тот или иной компонент и если компонент установлен, то получить его версию.

Для этого используются методы isComponentInstalled и getComponentVersion поведения по умолчанию clientCaps. Как и для всех поведений по умолчанию, поведение clientCaps должно быть ассоциировано с каким-либо тегом при помощи CSS-атрибута behavior, например, так:

<span id='clCps' style='behavior: url(#default#clientCaps);' class='mark'>
Элемент с поведением clientCaps
</span>

Теперь мы можем обратиться к этому элементу и использовать методы поведения clientCaps. В приведенном ниже примере наша функция возвращает либо версию компонента (причем возвращается полная версия) либо строка «не установлен»:

function version(s_id)
{
 if (clCps.isComponentInstalled(s_id,"ComponentID"))
 return clCps.getComponentVersion(s_id,"ComponentID");
 else
 return = "не установлен";
} 
компонент версия
Address Book ???
Windows Desktop Update NT ???
DirectAnimation ???
DirectAnimation Java Classes ???
DirectShow ???
Dynamic HTML Data Binding ???
Dynamic HTML Data Binding for Java ???
Internet Connection Wizard ???
Internet Explorer 5 Web Browser ???
Internet Explorer Classes for Java ???
Internet Explorer Help ???
Internet Explorer Help Engine ???
Windows Media Player ???
NetMeeting NT ???
Offline Browsing Pack ???
Outlook Express ???
Task Scheduler ???
Microsoft virtual machine ???
Элемент с поведением clientCaps

Документация от Microsoft утверждает, что методы isComponentInstalled и getComponentVersion могут использоваться только с идентификаторами компонентов от Microsoft - это не совсем так. Многие производители компонентов для Internet Explorer'а предоставляют информацию, доступную через эти методы (подробнее смотри Определяемые компоненты).

Теперь web-программист может взять идентификатор компонента Flash - {D27CDB6E-AE6D-11cf-96B8-444553540000} и, передав этот идентификатор методу isComponentInstalled, узнать, установлен ли компонент Flash на компьютере пользователя, а передав этот же идентификатор методу getComponentVersion, получить версию компонента Flash. Версии с главным номером 6 соответствуют Flash MX.

Если Вы пользуетесь браузером Internet Explorer версии 5.х или 6.0, то в приведенной таблице приведены версии стандартных компонент, используемых вашим браузером. Если же вы пользуетесь другим браузером, то естественно версии компонент не определятся.

Навигация

гарантированное прохождение АОН через voip