1. 程式人生 > >利用swfobject獲取瀏覽器FlashPlayer版本

利用swfobject獲取瀏覽器FlashPlayer版本

二話不說,直接上程式碼:

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;
	}
}