如何检查Flash Player是否安装使用没有任何嵌入式库的Javascript?

时间:2013-04-22 11:57:00

标签: javascript jquery

我知道通过使用SWFObject库,我们可以找到或不安装Flash播放器。但是没有任何外部库,它可能安装Flash播放器或不使用jquery.It应该在主流浏览器(Chrome,Firefox,IE)中工作

2 个答案:

答案 0 :(得分:0)

简短回答:并非没有严重的问题。

长答案:SWFObject也可以处理所有小浏览器怪癖;手动映射它们会花费你的时间而不仅仅是使用它,你的版本很可能不会那么优化。

快速补丁:

var hasFlash = false;
try {
  var fo = new ActiveXObject('ShockwaveFlash.ShockwaveFlash');
  if(fo) hasFlash = true;
} catch(e) {
   if(navigator.mimeTypes ["application/x-shockwave-flash"] != undefined) hasFlash = true;
}

这将尝试调用IE ActiveX版本(IE6-7-8),如果失败,将查看浏览器的已知mimetimes以获取SWF的mimetype。如果它在那里,你可能有闪光灯。

答案 1 :(得分:0)

在SWF对象库中,他们编写了用于检查插件和Activex对象的编码 以下if条件用于检查插件

 if (typeof navigator.plugins != "undefined" && typeof navigator.plugins["Shockwave Flash"] == "object") {
               var ab = navigator.plugins["Shockwave Flash"].description;
                if (ab && !(typeof navigator.mimeTypes != "undefined" && navigator.mimeTypes[q] && !navigator.mimeTypes[q].enabledPlugin)) {

                }
            } 

以下if条件用于检查ActiveX

if (typeof window.ActiveXObject != "undefined") {
                    try {
                        var ad = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
                        if (ad) {
                            ab = ad.GetVariable("$version");
                            if (ab) {

                            }
                        }
                    } catch (Z) {}
                }

以上代码用SWF对象库编写。现在我有一个疑问,插件条件适用于所有浏览器,但Activex只能在IE中工作。SWF Object library will work in all the browsers?