JavaScript浏览器对象模型(BOM)——navigator对象

navigator对象

navigator对象,已成为识别客户端浏览器的事实标准。下表列出了存在于所有浏览器中的属性和方法,已经支持它们的浏览器版本。

image.png
image.png

这些navigator对象的属性通常用于检测显示网页的浏览器类型。

1.检测插件

检测浏览器中是否安装了特定的插件是一种最常见的检测例程。对于非IE浏览器,可以使用plugins数组来达到这个目的。该数组中每一项都包含下列属性。

  • name:插件的名字
  • description:插件的描述
  • filename:插件的文件名
  • length:插件所处理的MIME类型数量

一般来说,name属性中会包含检测插件必需的所有信息,但有时候也不完全如此。在检测插件时,像下面这样循环迭代每个插件并将插件的anme与给定的名字进行比较。

        //检测插件(在IE中无效)
        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;
        }
        //检测Flash
        alert(hasPlugin("Flash"));
        //检测QuickTime
        alert(hasPlugin("QuickTime"));
        //检测IE中的插件
        function hasIEPlugin(name) {
            try{
                new ActiveXObject(name);
                return true;
            }catch(ex){
                return false;
            }
        }

        //检测Flash
        alert(hasIEPlugin("ShockwaveFlash.ShockwaveFlash"));
        //检测QuickTime
        alert(hasIEPlugin("QuickTime.QuickTime"));

典型做法是针对每个插件分别创建检测函数。

        //检测所有浏览器中的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;
        }

        //检测Flash
        alert(hasFlash());
        //检测QuickTime
        alert(hasQuickTime());

推荐阅读更多精彩内容