Как я могу использовать javascript/jQuery/etc для определения того, установлена ли Flash, а если нет, отобразите div, содержащий информацию, информирующую пользователя о необходимости установки флешки?
Как определить, установлена ли Flash, а если нет, отобразить скрытый div, который информирует пользователя?
Ответ 1
Используйте swfobject. он заменяет div на флэш-память, если она установлена. см. http://code.google.com/p/swfobject/
Ответ 2
Если swfobject
недостаточно, или вам нужно создать что-то еще немного на заказ, попробуйте следующее:
var hasFlash = false;
try {
hasFlash = Boolean(new ActiveXObject('ShockwaveFlash.ShockwaveFlash'));
} catch(exception) {
hasFlash = ('undefined' != typeof navigator.mimeTypes['application/x-shockwave-flash']);
}
Он работает с 7 и 8.
Ответ 3
@Drewid ответ не работал в моем Firefox 25, если флеш-плагин просто отключен, но установлен.
@invertedSpear комментарий в том, что ответ работал в firefox, но не в какой-либо версии IE.
Так объединены оба их кода и получили это. Протестировано в Google Chrome 31, Firefox 25, IE 8-10. Спасибо Drewid и invertedSpear:)
var hasFlash = false;
try {
var fo = new ActiveXObject('ShockwaveFlash.ShockwaveFlash');
if (fo) {
hasFlash = true;
}
} catch (e) {
if (navigator.mimeTypes
&& navigator.mimeTypes['application/x-shockwave-flash'] != undefined
&& navigator.mimeTypes['application/x-shockwave-flash'].enabledPlugin) {
hasFlash = true;
}
}
Ответ 4
Вы можете использовать navigator.mimeTypes.
if (navigator.mimeTypes ["application/x-shockwave-flash"] == undefined)
$("#someDiv").show ();
Ответ 5
jqplugin: http://code.google.com/p/jqplugin/
$.browser.flash == true
Ответ 6
Вы также сможете использовать..
swfobject.getFlashPlayerVersion().major === 0
Ответ 7
Я использовал набор для обнаружения Adobe, первоначально предложенный justpassinby. Их система хороша тем, что обнаруживает номер версии и сравнивает ее для вас с вашей "необходимой версией"
Одно плохое - это предупреждение, показывающее обнаруженную версию вспышки, которая не очень удобна для пользователя. Внезапно появляется окно с некоторыми, казалось бы, случайными числами.
Некоторые изменения, которые вы, возможно, захотите рассмотреть:
- удалить предупреждение
- измените его так, чтобы он возвращал объект (или массив) --- first element is boolean true/false для "была искомая версия, найденная на пользовательской машине" --- второй элемент - это фактический номер версии, найденный на пользовательской машине.
Ответ 8
Очень очень ограниченная версия http://www.featureblend.com/javascript-flash-detection-library.html (только логическое обнаружение вспышки)
var isFlashInstalled = (function(){
var b=new function(){var n=this;n.c=!1;var a="ShockwaveFlash.ShockwaveFlash",r=[{name:a+".7",version:function(n){return e(n)}},{name:a+".6",version:function(n){var a="6,0,21";try{n.AllowScriptAccess="always",a=e(n)}catch(r){}return a}},{name:a,version:function(n){return e(n)}}],e=function(n){var a=-1;try{a=n.GetVariable("$version")}catch(r){}return a},i=function(n){var a=-1;try{a=new ActiveXObject(n)}catch(r){a={activeXError:!0}}return a};n.b=function(){if(navigator.plugins&&navigator.plugins.length>0){var a="application/x-shockwave-flash",e=navigator.mimeTypes;e&&e[a]&&e[a].enabledPlugin&&e[a].enabledPlugin.description&&(n.c=!0)}else if(-1==navigator.appVersion.indexOf("Mac")&&window.execScript)for(var t=-1,c=0;c<r.length&&-1==t;c++){var o=i(r[c].name);o.activeXError||(n.c=!0)}}()};
return b.c;
})();
if(isFlashInstalled){
// Do something with flash
}else{
// Don't use flash
}