javascript检测flash版本原理

有时候会需要在客户端检测flash版本。在js中navigator对象,用于显示浏览器的各种个参数。比较重要的是navigator.userAgent,它提供浏览器的UA信息。navigator.plugins显示所以浏览器的插件信息。但对ie来说,你就别指望了。但还是有其它方法来判断一个ActiveXObject对象是否存在的。

p = navigator.plugins;
        if (p && p.length) {
            for (var i = 0; i < p.length; i++) {
                if (p[i].name.indexOf('Shockwave Flash') > -1) {
                    alert(p[i].description.split('Shockwave ')[1]);
                    break;
                }
            }
        } else if (window.ActiveXObject) {
            for (var j=9;j>=6;j–) {
                   try {  
                    var fl=eval("new ActiveXObject('ShockwaveFlash.ShockwaveFlash."+j+"');");
                    if (fl) {
                        f=j + '.0';
                        break;
                    }
                   }
                   catch(e) {}
              }
            alert(f);
        }

原理:

首先,判断navigator.plugins是否为空,如果是空的话就当IE处理啦。接着处理非IE类的,就是编历navigator.plugins数组,查找名字包含Shockwave Flash的项,然后把前面的Shockwave 截取掉;IE部分的原理是创建ActiveXObject来判断是哪一个版本的flash。使用eval动态的创建不同的版本的ShockwaveFlash.ShockwaveFlash对象,哪一个创建成功了就是什么版本了。

分享到: 更多