Javascript高级程序设计学习笔记-检测插件

检测插件

检测浏览器中是否安装了特定的插件是一种常见的检测例程。对于非IE浏览器,可以使用plugins数组来达到这个目的

  /**

     *

     *  在Firefox,Safari、Opera和Chrome中可以通过navigator.plugins来检测

     */

    function hasPlugin(name) {

        name = name.toLowerCase();

        //使用navigator.plugins数组遍历

        for (var i = 0; i < navigator.plugins.length; i++) {

            if (navigator.plugins[i].name.toLowerCase().indexOf(name) > -1) {

                return true;

            }

        }

        return false;

    }

    alert(hasPlugin("Flash"));

    /**

     * 检测IE中的插件比较麻烦,因为IE不支持Netscape式的插件。

     * 在IE中检测插件的唯一方式是使用专门的ActiveXObject类型,并尝试创建一个特定插件的实例

     * IE是以COM对象的方式实现插件的,而COM插件使用唯一标识符来标识。

     * 因此想要检查特定的插件,就必须知道COM标识符。例如Flash的标识符是ShockwaveFlash.ShockwaveFlash

     * @param name

     */

    function hasIEPlugin(name) {

        try {

            //如果创建未知COM对象会导致抛出错误。

            new ActiveXObject(name);

            return true;

 

        } catch (ex) {

            return false;

        }

    }

    //传入Flash插件的唯一标识符

    alert(hasIEPlugin("ShockwaveFlash.ShockwaveFlash"));

 

    /*

     * 由于以上两种方法的差别太大,因此典型的做法是,针对每个插件分别创建检测函数,而不是使用前面介绍的通用检测方法

     */

    //检测flash插件

    function hasFlash() {

        var result = hasPlugin("flash");

        if (!result) {

            result = hasIEPlugin("ShockwaveFlash.ShockwaveFlash");

        }

        return result;

    }

    //检测QuickTime插件

    function hasQuickTime() {

        var result = hasPlugin("QuickTime");

        if (!result) {

            result = hasIEPlugin("QuickTime.QuickTime");

        }

        return result;

    }

    alert(hasFlash());

    alert(hasQuickTime());

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值