Персональный | |
Определение версии Flash
28.09.2002 Достаточно компактный код для определения версии 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.indexOf('Flash') + 6) >= 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. В скриптах часто используют свойство 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>" в этом случае нужно записать как "'<' + '/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 в Вашем браузере: Ссылки: (C) Игорь Сысоев |