本书适用于Web开发人员的专业JavaScript 提供了以下代码,用于检测是否安装了插件:
<script type="text/javascript">
//check plugins in non-IE browser
function hasPlugin(name) {
name = name.toLowerCase();
for (var i = 0; i < navigator.plugins.length; i++) {
if (navigator.plugins[i].name.toLowerCase().indexOf(name) > -1) {
return true;
}
}
return false;
}
//check plugins in IE
function hasIePlugin(name) {
try {
new ActiveXObject(name);
return true;
} catch (ex) {
return false;
}
}
//check if the flash plugin exists in a browser
function hasFlash() {
var result = hasPlugin("Flash");
if (!result) {
result = hasIePlugin("ShockwaveFlash.ShockwaveFlash");
}
return result;
}
</script>
hasPlugin 函数将在IE中返回false, navigator.plugins.length 用于for循环,所以我想知道 navigator.plugins 在IE中评估。我在IE8中运行了以下代码:
alert(navigator.plugins); //return [object]
alert(navigator.plugins.length); //return 0
alert(navigator.plugins === null); //return false
alert(navigator.plugins === undefined); //return false
//check if it is an empty object
var i = 0;
for (var key in navigator.plugins) {
++i;
}
alert(i); //return 1
navigator.plugins 未评估为null,未定义且它有一个元素,但其长度为0.那么 navigator.plugins 在IE中的评估是什么?