zoukankan      html  css  js  c++  java
  • Js

    Navigator 对象包含有关浏览器的信息:

    • appCodeName -- 浏览器代码名的字符串表示
    • appName -- 官方浏览器名的字符串表示
    • appVersion -- 浏览器版本信息的字符串表示
    • cookieEnabled -- 如果启用cookie返回true,否则返回false
    • javaEnabled -- 如果启用java返回true,否则返回false
    • platform -- 浏览器所在计算机平台的字符串表示
    • plugins -- 安装在浏览器中的插件数组
    • taintEnabled -- 如果启用了数据污点返回true,否则返回false
    • userAgent -- 用户代理头的字符串表示

    navigator中最重要的是userAgent属性,返回包含浏览器版本等信息的字符串;

    cookieEnabled也很重要,使用它可以判断用户浏览器是否开启cookie。

    javaScript判断浏览器类型一般有两种办法,一种是根据各种浏览器独有的属性来分辨,另一种是通过分析浏览器的userAgent属性来判断(版本只能通过分析userAgent获得);

    只有在浏览器类型 和 浏览器版本都判断出后,才能处理兼容性问题。

    1、通过userAgent中的特征来判断浏览器类型及版本(常用、保险做法)

    function getBrowserInfo() {
      var Sys = {};
      var ua = navigator.userAgent.toLowerCase();
      var s; (s = ua.match(/msie ([d.]+)/)) ? Sys.ie = s[1] :
      (s = ua.match(/firefox/([d.]+)/)) ? Sys.firefox = s[1] :
      (s = ua.match(/chrome/([d.]+)/)) ? Sys.chrome = s[1] :
      (s = ua.match(/opera.([d.]+)/)) ? Sys.opera = s[1] :
      (s = ua.match(/version/([d.]+).*safari/)) ? Sys.safari = s[1] : 0;

      if(Sys.ie) {
        return 'IE: ' + Sys.ie;
      }
      if(Sys.firefox) {
        return 'Firefox: ' + Sys.firefox;
      }
      if(Sys.chrome) {
        return 'Chrome: ' + Sys.chrome;
      }
      if(Sys.opera) {
        return 'Opera: ' + Sys.opera;
      }
      if(Sys.safari) {
        return 'Safari: ' + Sys.safari;
      }
    }
    var browser = getBrowserInfo() ;
    var verinfo = (browser+"").replace(/[^0-9.]/ig, "");      // 版本号


    注意:一些浏览器的userAgent属性值中Chrome、Safari皆有,是因为Chrome的userAgent还包含了Safari的特征,因此这可能是Chrome可运行Safari浏览器应用的基础的原因

    2、通过各浏览器独有特性来分辨浏览器(需注意:这些特征可能会随浏览器版本而变化,或是其他浏览器也就可能跟着加入该特性,从而导致判断失败)

    IE:只有IE支持创建ActiveX控件,所以ActiveXObject函数是其他浏览器没有的。只需判断window对象存在 ActiveXObject函数,就明确判断出当前浏览器是IE。

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

    Opera:Opera提供了专门的浏览器标志-- window.opera属性。

    Safari:openDatabase函数是其他浏览器没有的,可做为判断Safari的标志。

    Chrome:和FF一样都一个MessageEvent函数,但Chrome并没有FF的getBoxObjectFor 函数,根据这两个条件可判断Chrome浏览器。

    var Sys = {};
    var ua = navigator.userAgent.toLowerCase();
    if(window.ActiveXObject) {
      Sys.ie = ua.match(/msie ([d.]+)/)[1]
    }else if(document.getBoxObjectFor) {
      Sys.firefox = ua.match(/firefox/([d.]+)/)[1]
    }else if(window.MessageEvent && !document.getBoxObjectFor) {
      Sys.chrome = ua.match(/chrome/([d.]+)/)[1]
    }else if(window.opera) {
      Sys.opera = ua.match(/opera.([d.]+)/)[1]
    }else if(window.openDatabase) {
      Sys.safari = ua.match(/version/([d.]+)/)[1];
    }

     水平有限,文中错误不妥在所难免,欢迎批评指正建议评论。文章将不定期修改完善斧正。谢谢!

  • 相关阅读:
    又玩起了“数独”
    WebService应用:音乐站图片上传
    大家都来DIY自己的Blog啦
    CSS导圆角,不过这个代码没有怎么看懂,与一般的HTML是不同
    网站PR值
    CommunityServer2.0何去何从?
    网络最经典命令行
    炎热八月,小心"落雪"
    Topology activation failed. Each partition must have at least one index component from the previous topology in the new topology, in the same host.
    SharePoint 2013服务器场设计的一些链接
  • 原文地址:https://www.cnblogs.com/libinblog/p/4239222.html
Copyright © 2011-2022 走看看