javascript基础从小白到高手系列八百九十四:hasPlugin()方法

// 在旧版本 IE 中检测插件
function hasIEPlugin(name) { 11
   for (let plugin of window.navigator.plugins){
    if (plugin.name.toLowerCase().indexOf(name) > -1){
      return true;
    }
}
  return false;
}
// 检测Flash alert(hasPlugin("Flash"));
// 检测QuickTime alert(hasPlugin("QuickTime"));

这个 hasPlugin()方法接收一个参数,即待检测插件的名称。第一步是把插件名称转换为小写形 式,以便于比较。然后,遍历 plugins 数组,通过 indexOf()方法检测每个 name 属性,看传入的名 称是不是存在于某个数组中。比较的字符串全部小写,可以避免大小写问题。传入的参数应该尽可能独 一无二,以避免混淆。像"Flash"、"QuickTime"这样的字符串就可以避免混淆。这个方法可以在 Firefox、Safari、Opera 和 Chrome 中检测插件。

注意 plugins数组中的每个插件对象还有一个MimeType对象,可以通过中括号访问。 每个 MimeType 对象有 4 个属性:description 描述 MIME 类型,enabledPlugin 是 指向插件对象的指针,suffixes 是该 MIME 类型对应扩展名的逗号分隔的字符串,type 是完整的 MIME 类型字符串。
IE11 的 window.navigator 对象开始支持 plugins 和 mimeTypes 属性。这意味着前面定义的函 数可以适用于所有较新版本的浏览器。而且,IE11 中的 ActiveXObject 也从 DOM 中隐身了,意味着 不能再用它来作为检测特性的手段。
旧版本 IE 中的插件检测
IE10 及更低版本中检测插件的问题比较多,因为这些浏览器不支持 Netscape 式的插件。在这些 IE 中检测插件要使用专有的 ActiveXObject,并尝试实例化特定的插件。IE 中的插件是实现为 COM 对象 的,由唯一的字符串标识。因此,要检测某个插件就必须知道其 COM 标识符。例如,Flash 的标识符是 “ShockwaveFlash.ShockwaveFlash”。知道了这个信息后,就可以像这样检测 IE 中是否安装了 Flash:

   try {
    new ActiveXObject(name);
    return true;
  } catch (ex) {
    return false;
} }
// 检测Flash alert(hasIEPlugin("ShockwaveFlash.ShockwaveFlash"));
// 检测QuickTime alert(hasIEPlugin("QuickTime.QuickTime"));
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值