Добавляем...


Распознавание модулей расширений
В Netscape 3+, Opera 4+ и браузерах на базе Mozilla каждый модуль расширения, установленный в браузере, имеет соответствующий элемент в массиве plugins [ ] объекта Navigator.

Каждый элемент этого массива представляет собой объект Plugin, содержащий информацию о произвбдителе и версии установленного компонента. Описания некоторых свойств объекта Plugin приводятся в таблице.

Свойство Описание
description Строка с описанием модуля расширения. С этим свойством следует обращаться осторожно, поскольку данная строка может оказаться достаточно длинной
name Строка, указывающая имя модуля расширения
length Значение, указывающее число MIME-типов, которые модуль расширения поддерживает в настоящий момент

Каждый объект Plugin — это массив объектов MimeType, поддерживаемых соответствующим модулем расширения (их число равно значению свойства length).

Можно представлять себе plugins [ ] и mimeTypes [ ] в виде связанных массивов.

Каждый элемент массива plugins [ ] содержит ссылки на один или несколько элементов из mimeTypes [ ], и каждый элемент mimeTypes [ ] является объектом, на который ссылается в точности один элемент из plugins [ ], а именно объектом, на который указывает ссылка в pluginEnabled соответствующего объекта MimeType.

Ссылаться на конкретные объекты MimeType в элементе Plugin можно с помощью двойной индексации следующего вида: navigator.plugins [0] [2]

Здесь выполняется ссылка на третий объект MimeType, поддерживаемый первым модулем расширения. Более удобно индексировать модули расширения по именам.

Например, чтобы выписать все MIME-типы, поддерживаемые модулем расширения Flash (если таковые вообще существуют!), можно использовать такой программный код:


if (navigator.plugins["Shockwave Flash"])
{
for (var i=0; Knavigator.plugins["Shockwave Flash"].length; i++)
document.write("Flash MimeType: " +
navigator.plugins["Shockwave Flash"][i].type + "<br />");
}

Как всегда, при работе с любым подключаемым модулем расширения, необходимо внимательно ознакомиться с документацией, предлагаемой производителем, чтобы знать точное имя модуля расширения, с которым вы собираетесь работать.

Чтобы сделать структуру объекта Plugin более наглядной, рассмотрите следующий программный код, печатающий содержимое всего массива plugins [ ]:


for (var i=0; i<navigator.plugins.length; i++)
{
document.write("Имя: " + navigator.plugins[i].name + "<br />");
document.write("Описание: " + navigator.plugins[i].description + "<br />");
document.write("Поддерживает: ");
for (var j=0; j<navigator.plugins[i].length; j++)
document.write("   " + navigator.plugins[i][j].type);
// добавленный здесь пробел упрощает чтение выводимых данных
document.write ("<br /xbr />");
}

Работа с Internet Explorer

Особенностью Internet Explorer, которую следует подчеркнуть, является то, что этот браузер определяет фиктивный массив plugins [ ] как свойство объекта Navigator.

Это делается для того, чтобы упрощенные сценарии для Netscape не генерировали ошибок при зондировании модулей расширения.

В Internet Explorer можно ссылаться на связанные с модулем расширения данные с помощью коллекции document.embeds [ ].

Однако зондирование MIME-типов и другие функции не поддерживаются, поскольку в Internet Explorer функциональность модулей расширений реализуется с помощью элементов управления ActiveX, подключаемых через дескриптор <embed>.

Более подробная информация о взаимодействии JavaScript с ActiveX представленав разделе "ActiveX".

А пока просто считайте, что применение только информации из navigator.plugins [ ] без дополнительного уточнения типа и возможностей браузера может иметь те или иные нежелательные последствия.


добавить комментарий
(без перезагрузки и регистрации)


10 случайных разделов

Что ищем на сайте ?


Примеры кода на сайте







@ 2008-2011 Amber
При использовании материалов ссылка на сайт обязательна
Яндекс.Метрика