Как узнать, стоит ли FLASH???

 
0
 
JavaScript
ava
guest | 17.12.2004, 21:14
Подскажите пожалуйста, можно ли скриптом проверить, может ли браузер отображать swf-файлы или стоит ли flash-плейер? К примеру, если браузер не может отобразить swf, то вместо него вставить картинку. Как это можно сделать??? :notify
Kommentare (5)
ava
Sardar | 18.12.2004, 01:47 #
Ну в принципе для мозиллоподобных существует коллекция navigator.mimeTypes, где о флеше можно узнать в navigator.mimeTypes["application/x-shockwave-flash"]
Можешь достать активный плагин, сравнить его версию, если подходит, то создать тег object. Естественно это нужно делать в момент загрузки и писать методом document.write, иначе старые браузеры могут подглючивать.
var flash_enable=false;
if (navigator.mimeTypes && navigator.mimeTypes["application/x-shockwave-flash"]) {
var currentPlugin = navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin;
//parseFloat(version[0]) - full version; parseInt(version[1]) - major version; parseInt(version[2]) - minor version
var version=/([0-9]+)\.([0-9])/.exec(currentPlugin.description);
if(version.length>0 && parseFloat(version[1])>=4) flash_enable=true;
}


Для ИЕ такое не катит, в нём коллекция просто для красоты. Но можно по версии браузера прикинуть есть ли на нём флеш, он ведь идёт всегда в месте с ним. По моему начиная с 95 винды шёл 4 флеш, какой тебе нужнен, не знаю :)

//если это мелкософт, маки посылаем далеко ибо лючные
if (navigator.appName && navigator.appName.indexOf("Microsoft")>=0 && navigator.userAgent.indexOf("Windows")>=0) {
//parseFloat(version[1]) - full version; parseInt(version[2]) - major version; parseInt(version[3]) -
var version=/MSIE (([0-9]+)\.([0-9]))/.exec(navigator.userAgent));
//по моему в ИЕ4 уже был флеш, смысле он мог закачатся если надо...
if(parseInt(version[2])>=4) flash_enable=true;
}


Последняя стадия, создать сам флешевый обьект:
if(flash_enable) document.write('<OBJECT  ID="fleshka" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://active.macromedia.com/flash2/cabs/swflash.cab#version=4,0,0,0" WIDTH="100" HEIGHT="100">\
<PARAM NAME="movie" VALUE="http://tvoj put">\
<PARAM NAME="quality" VALUE="high">\
<EMBED name="fleshka" src="http://tvoj put" quality="high" swLiveConnect=FALSE WIDTH="100" HEIGHT="100" TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/shockwave/download/index.cgiP1_Prod_Version=ShockwaveFlash"></EMBED>\
</OBJECT>');
//а это напсиать можно без условий, нормальные браузеры не покажут
document.write('<NOEMBED><a href=""><IMG SRC="http://tvoj put do kartinki" WIDTH="100" HEIGHT="100" BORDER=0></a></NOEMBED>');


Как видишь теоретичеки проверка не нужна, если обьект не распознан, то должен отрендерится NOEMBED, но старые браузеры не согласны с таким путём. Идея ясна, прояви фантазию smile
ava
guest | 18.12.2004, 08:03 #
Большое спасибо. Только я в web-программировании не спец :( ; если можно, поясните след. строки кода:
[quote]
//parseFloat(version[0]) - full version; parseInt(version[1]) - major version; parseInt(version[2]) - minor version
var version=/([0-9]+)\.([0-9])/.exec(currentPlugin.description);

Заранее спасибо.
ava
Sardar | 18.12.2004, 15:16 #
Это однострочный коментарий, пояснение к коду smile
Мы регами вырезаем версию плагина, получаем массив, под индексом 0 - вся версия, можно отпарсить как вещественное число и сравнить; по индексом 1 лежит главная(major) версия, под 2 лежит вторая(minor) версия.
Пример: ["7.0", "7", "0"]
ava
SeregaLBN | 20.12.2004, 20:38 #
Кстати я встречал и др. вариант.
На стартовой странице сайта размещается малюсенькая флешка (чтобы максимально быстро грузилось), которая при своей загрузке выполняет лишь одно - редирект на версию сайта с поддержкой флеша.
Также в JS коде (вроде бы) или в заголовке стартовой чтранички (вроде бы в META) указывается что надо через некоторое время (больше предполагаемого времени загрузки и выполнения флеша) произвести релоад/навигейт на версию сайта без флеша...
ava
Sardar | 20.12.2004, 20:53 #
Это уже совсем изврат smile
Registrieren Sie sich oder melden Sie sich an, um schreiben zu können.
Unternehmen des Tages
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Mitwirkende
advanced
Absenden