本文介绍使用JavaScript判断浏览器是否安装Flash插件的两种方法。针对Chrome、Edge及IE等不同浏览器,分别采用navigator.plugins或window.ActiveXObject进行检测。文章还详细解析了IE中ActiveXObject创建对象报错的原因,并提供安装MSXML补丁或调整安全级别等解决方案,最后附带获取Flash版本号的代码示例。
检测Flash插件安装状态
1. 检测Flash插件是否存在
var myFlash = (function(){
if(typeof window.ActiveXObject != "undefined"){
return new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
}else{
return navigator.plugins['Shockwave Flash'];
}
})();
Chrome浏览器:

Edge浏览器移除了window.ActiveXObject,改用navigator.plugins

在IE及其他版本中调用window.ActiveXObject时,可能触发报错:
Automation 服务器不能创建对象
该问题源于页面脚本无法正确实例化对象
解决方案:安装“MSXML 4.0 Service Pack 2 (Microsoft XML Core Services)”补丁,可从微软官网下载(安装包:msxmlchs.msi),安装后修复。
注:脚本调试错误也可能与IE安全级别相关,可通过降低IE安全级别解决,或需“scrrun.dll”支持,操作方式为:开始->运行->执行命令“regsvr32 scrrun.dll”。
获取Flash版本号
2. 获取Flash版本号
<script>
(function(){
var getFlashVersion = function() {
try {
if(typeof window.ActiveXObject != 'undefined') {
return parseInt((new ActiveXObject('ShockwaveFlash.ShockwaveFlash')).GetVariable("$version").split(" ")[1].split(",")[0], 10);
}else{
return parseInt(navigator.plugins["Shockwave Flash"].description.split(' ')[2], 10);
}
} catch(e){
return 0;
}
};
console.log(getFlashVersion());
})();
</script>
以上JS判断浏览器是否安装Flash插件的简易方法即为小编分享的全部內容,期望对读者有参考价值,也欢迎大家继续支持本站。