檢測瀏覽器是否安裝了flash及其版本
下面是幾個需要注意的點。
1、獲取所有元素
IE:
document.all
FireFox:
document.getElementsByTagName(*)
2、檢測插件是否安裝(flash)
- IE:
var swf=new ActiveXObject('ShockwaveFlash.ShockwaveFlash')
- Firefox:
//navigator的首字母必須是小寫,大寫是不正確的var swf=navigator.plugins["Shockwave Flash"]
完整代碼如下:
/**
* 檢測瀏覽器是否安裝了flash; 返回json,f:是否安裝;v:若安裝,則返回版本號
* @returns {{f: number, v: number}}
*/
function checkFlash() {
var hasFlash = 0;
var flashVersion = 0;
var swf = null;
//document.all為IE下,document.getElementsByTagName("*")為非IE
if (document.all || document.getElementsByTagName("*")) {
try {
swf = new ActiveXObject('ShockwaveFlash.ShockwaveFlash');
if (swf) {
hasFlash = 1;
VSwf = swf.GetVariable("$version");
flashVersion = parseInt(VSwf.split(" ")[0].split(",")[0]);
}
}
catch (e) {
//catch不能做處理,而且必須要捕捉;
//否則在firefox,下,ActiveXObject會出錯,下面的代碼不會再去執行
}
if (!swf){
//navigator首字母必須是小寫,大寫是錯誤的
if (navigator.plugins && navigator.plugins.length > 0) {
var swf = navigator.plugins["Shockwave Flash"];
if (swf) {
hasFlash = 1;
var words = swf.description.split(" ");
for (var i = 0; i < words.length; i++) {
if (isNaN(parseInt(words[i]))) {
continue;
}
flashVersion = parseInt(words[i]);
}
}
}
}
}
return {f: hasFlash, v: flashVersion}
}
