二话不说,直接上代码:
function hasPlayerVersion()
{
//利用swfobject第三方API获取FlashPlayer版本
var version = swfobject.getFlashPlayerVersion();
if (document.getElementById && version["major"] > 0)
{
//主版本最低支持11
if(version['major']<11)
{
return false;
}
}
else
{
return false;
}
return true;
}
这个代码经测试,在IE8,IE9,IE11以及Chrome上都可以正常执行无问题。
需要引入swfobject.js,这个玩意可以在http://code.google.com/p/swfobject/ 下载到zip包,里面包含了例子
另外再提供一个方法,这个方法只能在IE上使用,只有IE认识
var flash = new ActiveXObject("ShockwaveFlash.ShockwaveFlash")
使用的时候注意下(这个不需要swfobject的支持)
/**
* 判断flash版本的级别
* @return
*/
function checkFlashVersion()
{
var hasFlash = 0; //是否安装了flash
var flashVersion = 0; //flash版本
try
{
var flash = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
if(flash)
{
hasFlash = 1;
var version = flash.getVariable("$version");
if(version)
{
version = version.split(" ")[1].split(",");
flashVersion = [parseInt(version[0], 10), parseInt(version[1], 10), parseInt(version[2], 10)];
}
}
}
catch (e)
{
}
return {
f: hasFlash,
v: flashVersion
};
}
/**
* 判断是否安装了高于某个版本的flashplayer
*/
function hasPlayerVersion(rv)
{
var fls = checkFlashVersion();
if(fls.f)
{
var pv = fls.v,v = rv.split(".");
v[0] = parseInt(v[0], 10);
v[1] = parseInt(v[1], 10) || 0; // supports short notation, e.g. "9" instead of "9.0.0"
v[2] = parseInt(v[2], 10) || 0;
return (pv[0] > v[0] || (pv[0] == v[0] && pv[1] > v[1]) || (pv[0] == v[0] && pv[1] == v[1] && pv[2] >= v[2])) ? true : false;
}
else
{
return false;
}
}