Если абстрагироваться от современности, на которую справедливо указал
Дима Турков, и сосредоточиться только на определении наличия
Flash-плагина, то принцип весьма прост.
Теоретически у нас есть запись в коллекции плагинов объекта
navigator, которую можно просто найти по имени
MIME Media Type, а именно
application/x-shockwave-flash. В старых ослах (вплоть до 10 версии) такая коллекция есть, но всегда пустая — там рулит
ActiveX.
function getFlash () {
if (navigator.plugins && navigator.plugins.length) {
var object = navigator.mimeTypes['application/x-shockwave-flash'];
if (object) {
return object.enabledPlugin.description;
}
} else {
try {
var object = new ActiveXObject('ShockwaveFlash.ShockwaveFlash');
if (object) {
return object.GetVariable('$version');
}
} catch (z) {}
}
}
Если получаем строку — всё пучком, и при желании разбираем её, узнавая подробности. Ну а на нет — и суда нет.