Вёрстка « Сообщение об отключенном flash
Есть форма загрузки файла. Изначально используется swf, но для людей без него, хотелось бы вывести простой input(type=file). Но не могу найти в интернете материалы по проверке наличия flash из js или же просто через html. Короче говоря - ничего не нашел.
Прошу у вас помощи. Может кто чего знает...
Прошу у вас помощи. Может кто чего знает...
1 ответов
Песочница:
function flashDetect() {
try {
b = new ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version')
} catch (e) {
b = navigator.plugins['Shockwave Flash'];
b = b ? b.description : '';
}
return b.match(/\d+/); // возвращает версию флеша
}
alert(flashDetect());
Всякие огромные проверки совершенно не нужны — там обрабатываются всякие очень специфические ситуации, которые возникнут всего лишь у 0.001% пользователей, а такой мизер можно не учитывать.
function flashDetect() {
try {
b = new ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version')
} catch (e) {
b = navigator.plugins['Shockwave Flash'];
b = b ? b.description : '';
}
return b.match(/\d+/); // возвращает версию флеша
}
alert(flashDetect());
Всякие огромные проверки совершенно не нужны — там обрабатываются всякие очень специфические ситуации, которые возникнут всего лишь у 0.001% пользователей, а такой мизер можно не учитывать.
адаптировал функцию проверки версии плейра из jqeury.flash.js
hasFlash = function() {
var defaultVersion = '6.0.65';
var pv = playerVersion().match(/\d+/g);
var rv = String([arguments[0], arguments[1], arguments[2]]).match(/\d+/g) || defaultVersion.match(/\d+/g);
for(var i = 0; i < 3; i++) {
pv[i] = parseInt(pv[i] || 0);
rv[i] = parseInt(rv[i] || 0);
if(pv[i] < rv[i]) return false;
if(pv[i] > rv[i]) return true;
}
return true;
};
playerVersion = function() {
// ie
try {
try {
// avoid fp6 minor version lookup issues
// see: http://blog.deconcept.com/2006/01/11/getvariable-setvariable-crash-internet-explorer-flash-6/
var axo = new ActiveXObject('ShockwaveFlash.ShockwaveFlash.6');
try { axo.AllowScriptAccess = 'always'; }
catch(e) { return '6,0,0'; }
} catch(e) {}
return new ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version').replace(/\D+/g, ',').match(/^,?(.+),?$/)[1];
// other browsers
} catch(e) {
try {
if(navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin){
return (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]).description.replace(/\D+/g, ",").match(/^,?(.+),?$/)[1];
}
} catch(e) {}
}
return '0,0,0';
};
Пример использования
if(!hasFlash()){
alert('Please install flash player');
}
if(!hasFlash(11,4,402)){
alert('Please install flash player version 11,4,402');
}
http://www.adobe.com/devnet/flashplayer/articles/swfobject.html
http://stackoverflow.com/questions/998245/how-can-i-detect-if-flash-is-installed-and-if-not-display-a-hidden-div-that-inf