如何使用javascript/jQuery等技术检测是否已安装Flash,如果未安装,则显示包含信息的div,告知用户需要安装flash?
如何使用javascript/jQuery等技术检测是否已安装Flash,如果未安装,则显示包含信息的div,告知用户需要安装flash?
swfobject
不适用,或者您需要创建更加定制化的内容,请尝试以下方法:var hasFlash = false;
try {
hasFlash = Boolean(new ActiveXObject('ShockwaveFlash.ShockwaveFlash'));
} catch(exception) {
hasFlash = ('undefined' != typeof navigator.mimeTypes['application/x-shockwave-flash']);
}
它可以与7和8一起使用。
如果Flash插件被禁用但已安装,则@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;
}
}
if (navigator.mimeTypes ["application/x-shockwave-flash"] == undefined)
$("#someDiv").show ();
swfobject
未定义。 - mikemaccanavar 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
}
(typeof navigator.mimeTypes['application/x-shockwave-flash'] !== 'undefined')
。 - zooblin