如何检测Flash是否已安装,如果没有,则显示隐藏的div以通知用户?

时间:2009-06-15 20:38:13

标签: javascript jquery asp.net-mvc flash detection

如何使用javascript / jQuery / etc来检测Flash是否已安装,如果不是,则显示包含告知用户需要安装Flash的信息的div?

8 个答案:

答案 0 :(得分:160)

答案 1 :(得分:104)

如果Flash插件刚刚被禁用但已安装,那么@ Drewid的答案在我的Firefox 25中无效。

@vertedSpear在该答案中的评论在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;
  }
}

答案 2 :(得分:26)

使用swfobject。如果安装了flash,它会用flash替换div。 见:http://code.google.com/p/swfobject/

答案 3 :(得分:18)

您可以使用navigator.mimeTypes。

if (navigator.mimeTypes ["application/x-shockwave-flash"] == undefined)
    $("#someDiv").show ();

答案 4 :(得分:10)

jqplugin:http://code.google.com/p/jqplugin/

$.browser.flash == true

答案 5 :(得分:4)

您还应该能够使用..

swfobject.getFlashPlayerVersion().major === 0

使用swfobject-Plugin

答案 6 :(得分:2)

我使用的是最初由justpassinby建议的Adobe检测套件。他们的系统很好,因为它可以检测版本号并将它与您的“所需版本”进行比较

一个坏处是它会显示检测到的闪存版本的警报,这对用户不太友好。突然间,一个框出现了一些看似随机的数字。

您可能需要考虑的一些修改:

  • 删除提醒
  • 更改它以便返回一个对象(或数组) ---第一个元素是布尔值true / false,表示“是在用户机器上找到的所需版本” ---第二个元素是在用户机器上找到的实际版本号

答案 7 :(得分:1)

非常非常缩小版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  
        }