JavaScript判断浏览器类型

不同的浏览器有不同的属性,你知道怎么来判断浏览器的类型吗?

使用浏览器的userAgent来判断
        var explorer = window.navigator.userAgent ;
         //判断是否为IE浏览器
        if (explorer.indexOf("MSIE") >= 0) {
            return 'ie';
        }
        //判断是否为Firefox浏览器
        else if (explorer.indexOf("Firefox") >= 0) {
            return 'Firefox';
        }
        //判断是否为Chrome浏览器
        else if(explorer.indexOf("Chrome") >= 0){
            return 'Chrome';
        }
        //判断是否为Opera浏览器
        else if(explorer.indexOf("Opera") >= 0){
            return 'Opera';
        }
        //判断是否为Safari浏览器
        else if(explorer.indexOf("Safari") >= 0){
            return 'Safari';
        }

实际上,通过检测 userAgent 的值来判断浏览器类型是不可靠的,也是不推荐的,因为用户可以修改userAgent 的值。比如:

  • Firefox 中,你可以通过在 about:config 页面添加并修改
    general.useragent.override选项的值来覆盖默认的用户代理字符串。一些Firefox扩展也可以用其他方式修改这个值,但它们通常只会修改发送到服务器的User-Agent请求头的值,而不会影响 JavaScript 代码中获取的 window.navigator.userAgent 属性的值。

  • Opera 6+ 中允许用户通过菜单选择不同的用户代理字符串。

  • Microsoft Internet Explorer 使用注册表来配置自己的用户代理字符串。

  • Safari 和 iCab 也允许用户修改其用户代理字符串,来将自己伪装成 Internet Explorer 或 Netscape。

通过各个浏览器的特征来判断
  • IE
    只有IE支持创建ActiveX控件,它有一个其他浏览器没有的东西,就是ActiveXObject函数。只要判断window对象存在ActiveXObject函数,就可以明确判断出当前浏览器是IE

  • Safari
    Safari浏览器中有一个其他浏览器没有的openDatabase函数,可做为判断Safari的标志

  • Chrome
    Chrome有一个MessageEvent函数,但Firefox也有。不过,好在Chrome并没有Firefox的getBoxObjectFor函数,根据这个条件还是可以准确判断出Chrome浏览器的

  • Firefox
    Firefox中的DOM元素都有一个getBoxObjectFor函数,用来获取该DOM元素的位置和大小(IE对应的中是getBoundingClientRect函数)。这是Firefox独有的,判断它即可知道是当前浏览器是Firefox

  • Opera
    Opera提供了专门的浏览器标志,就是window.opera属性
    if (window.ActiveXObject)
    return "IE";
    else if (document.getBoxObjectFor)
    return "Firefox";
    else if (window.MessageEvent && !document.getBoxObjectFor)
    return "Chrome";
    else if (window.opera)
    return "Opera";
    else if (window.openDatabase)
    return "Safari";

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 现如今的浏览器众多,版本繁杂, 为了适应版本需要确定浏览器的类型,尤其是360浏览器又分为安全浏览器和急速浏览器,...
    wwmin_阅读 2,382评论 1 50
  • 天空看起来很有营养 像浪费掉的牛奶还没有来的及施舍 像在空中开了一朵朵莲花被泼了一盆脏水 像家人煲的一碗鸡汤已过期...
    无名之徒阅读 197评论 0 0
  • 她从包里掏出零钱,结了帐,一手接过心心念念的关东煮。蒸汽从杯壁上蔓延开来,透着一股昆布的盐味。她迫不及待地深深吸了...
    喵二LIN阅读 306评论 0 0
  • 燕子与爱米相约出门逛街,午餐时俩人聊起来情感话题。很想有个家得燕子至今仍是一人在异乡奋斗打拼,目前在一家银行工作,...
    君不识君阅读 556评论 2 6
  • 你想让你的生活被什么东西填充
    欣昉阅读 119评论 0 0

友情链接更多精彩内容