Компоненты в 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, то в приведенной таблице приведены версии стандартных компонент, используемых вашим браузером. Если же вы пользуетесь другим браузером, то естественно версии компонент не определятся.
