有时候会需要在客户端检测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对象,哪一个创建成功了就是什么版本了。