Логин:   Пароль:




Новости
Рассылки
Форум
Поиск


Java
- Апплеты
- Вопрос-ответ
- Классы
- Примеры
- Руководства
- Статьи
- IDE
- Словарь терминов
- Скачать

Мобильная Java
- Игры
- Примеры
- Статьи
- WAP, WML и пр.

JavaScript
- Вопрос-ответ
- Примеры
- Статьи

Веб-мастеринг
- HTML
- CSS
- SSI

Разминка для ума
Проекты
Книги
Ссылки
Программы
Юмор :)




Rambler's Top100

JavaScript: ПримерыОпределение версии Flash

Определение версии Flash

Достаточно компактный код для определения версии Flash:


<script language="javascript"><!--

var plugin;
var version = 5;
var flash = false;

if (navigator.plugins) {
    if (navigator.plugins["Shockwave Flash"]) {
        plugin = navigator.plugins["Shockwave Flash"].description;
        flash =
            parseInt(plugin.charAt(plugin.indexOf('.') - 1)) >= version;

    } else {
        if ((navigator.userAgent.indexOf('MSIE') != -1)
            && (navigator.userAgent.indexOf('Win') != -1))
        {
            var vb = '<script language="vbscript">\n'
                   + 'if ScriptEngineMajorVersion >= 2 then\n'
                   + '  on error resume next\n'
                   + '  flash = IsObject(CreateObject('
                   + '     "ShockwaveFlash.ShockwaveFlash.'
                   +        version + '"))\n'
                   + 'end if\n'
                   + '<' + '/script>';
            document.write(vb);
        }
    }
}
//--></script>

Небольшой комментарий к коду. В переменной version задаётся интересующий номер версии Flash. Если указанная версия обнаружена, то переменная flash будет иметь истинное значение.

В раритетных по нынешним временам MSIE 3.0 для Windows и Netscape 2.0 нет свойства navigator.plugins. То же самое относится к MSIE 3.0.1-4.5 для Macintosh.

Свойство navigator.plugins["Shockwave Flash"] может быть в Netscape, начиная с версии 3.0, в Opera для Windows, начиная с 5.0, Opera 6.0 для Linux и в MSIE 5.0 для Macintosh. Возвращаемая строка имеет следующий вид: "Shockwave Flash 5.0 r47". MSIE 4.x и выше для Windows этого свойства не имеют, поэтому для этих браузеров нужно попытаться создать AciveX объект с помощью vbscript.

Вместо plugin[] нужно использовать plugin.charAt(), так как, по крайней мере, Opera не понимает первое выражение.

В скриптах часто используют свойство navigator.mimeTypes["application/x-shockwave-flash"], однако только использование свойства navigator.plugins["Shockwave Flash"].description позволяет определить версию Flash.

vbscript рекомендуется создавать динамически, так как MSIE 4.0 для Macintosh его не воспринимает и выдает предупреждение "This page contains Active Scripting scripts written in VBScript. Do you want to continue ?", несмотря на то, что выполнить он его всё равно не сможет. "" в этом случае нужно записать как "'<' + '/script>'", иначе бразуер воспримет его как конец всего скрипта.

Проверку "ScriptEngineMajorVersion >= 2" можно убрать, так как в MSIE 4.x vbscript версии 2, а MSIE 3.0 в это место не попадёт.

Flash2 не вписывается в эту схему. Во-первых, плагин нужно проверять как navigator.plugins["Shockwave Flash 2.0"]. А во-вторых, ActiveX объекта c именем "ShockwaveFlash.ShockwaveFlash.2" нет, зато есть "ShockwaveFlash.ShockwaveFlash.1". Впрочем, Flash2 сейчас вряд ли кого-то интересует.

Из более или менее распространённых браузеров скрипт не может определить версию Flash в MSIE 3.0.1-4.5 для Macintosh, в Opera для Linux (версия 5.x) и Macintosh и в Konqueror. То же относится и к WebTV, но поскольку в нём может быть установлен только Flash2 или Flash3, то он не представляет практического интереса.

Ниже приводится результат проверки наличия Flash5 в Вашем браузере:

Полная версия скрипта:


<div style="background:#e0efe0;">
<script language=javascript>
<!--
var plugin;
var version = 5;
var flash = false;
if (navigator.plugins)
{
 if(navigator.plugins["Shockwave Flash"])
 {
  plugin = navigator.plugins["Shockwave Flash"].description;
  flash = parseInt(plugin.charAt(plugin.indexOf('.') - 1)) >= version;
  document.writeln('plugin: ' + plugin + '<br>');
  document.writeln('flash: ' + flash + '<br>');
 }
 else
 {
  document.writeln('no plugin<br>');
  plugin = 'no plugin';
  if ((navigator.userAgent.indexOf('MSIE') != -1)&&(navigator.userAgent.indexOf('Win') != -1))
  {
   var vb = '<script language="vbscript">\n'
            + '  on error resume next\n'
            + '  flash = IsObject(CreateObject('
            + '     "ShockwaveFlash.ShockwaveFlash.' + version + '"))\n'
            + '<' + '/script>';
   document.write(vb);
   if (flash)
   {
    document.writeln('ActiveX Flash' + version + ' object found<br>');
    plugin = 'no plugin, ActiveX object';
   } 
   else
   {
    document.writeln('ActiveX Flash' + version + ' object not found<br>');
   }
  }
 }
}
else 
{
document.writeln('no plugins');
plugin = 'no plugins';
}
if (flash)
document.writeln('Flash' + version + ' found');
else document.writeln('Flash' + version + ' not found');
//-->
</script>
<noscript>no javascript - no Flash detection </noscript>
</div>

Ссылки:



Автор (C) Igor Sysoev
http://sysoev.ru/


Дирк Льюис, Петер Мюллер
"Java 2"
Подробнее>>
Заказать>>


Н. А. Вязовик
"Программирование на Java. Курс лекций"
Подробнее>>
Заказать>>

Узнай о чем ты на самом деле сейчас думаешь тут.


[an error occurred while processing this directive]



Apache Struts 2.0.11
Apache MyFaces Trinidad Core 1.2.3.
Sun переводит мобильные устройства с Java ME на Java SE
Хакерская атака!