Достаточно компактный код для определения версии 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 в Вашем браузере:
plugin: Shockwave Flash 10.3 r181 flash: false Flash5 not found 

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


<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>