Javascript中获取浏览器类型和操作系统版本等客户端信息常用代码


Posted in Javascript onJune 28, 2016
/**
* @author hechen
*/
var gs = {
  /**获得屏幕宽度**/
  ScreenWidth: function () {
    return window.screen.width;
  },
  /***获得屏幕高度**/
  ScreenHeight: function () {
    return window.screen.height;
  },
  /**获得浏览器***/
  Browse: function () {
    var browser = {};
    var userAgent = navigator.userAgent.toLowerCase();
    var s;
    (s = userAgent.match(/msie ([\d.]+)/)) ? browser.ie = s[1] : (s = userAgent.match(/firefox\/([\d.]+)/)) ? browser.firefox = s[1] : (s = userAgent.match(/chrome\/([\d.]+)/)) ? browser.chrome = s[1] : (s = userAgent.match(/opera.([\d.]+)/)) ? browser.opera = s[1] : (s = userAgent.match(/version\/([\d.]+).*safari/)) ? browser.safari = s[1] : 0;
    var version = "";
    if (browser.ie) {
      version = 'IE ' + browser.ie;
    }
    else {
      if (browser.firefox) {
        version = 'firefox ' + browser.firefox;
      }
      else {
        if (browser.chrome) {
          version = 'chrome ' + browser.chrome;
        }
        else {
          if (browser.opera) {
            version = 'opera ' + browser.opera;
          }
          else {
            if (browser.safari) {
              version = 'safari ' + browser.safari;
            }
            else {
              version = '未知浏览器';
            }
          }
        }
      }
    }
    return version;
  },
  /**获得操作系统***/
  ClientOs: function () {
    var sUserAgent = navigator.userAgent;
    var isWin = (navigator.platform == "Win32") || (navigator.platform == "Windows");
    var isMac = (navigator.platform == "Mac68K") || (navigator.platform == "MacPPC") || (navigator.platform == "Macintosh") || (navigator.platform == "MacIntel");
    if (isMac)
      return "Mac";
    var isUnix = (navigator.platform == "X11") && !isWin && !isMac;
    if (isUnix)
      return "Unix";
    var isLinux = (String(navigator.platform).indexOf("Linux") > -1);
    if (isLinux)
      return "Linux";
    if (isWin) {
      var isWin2K = sUserAgent.indexOf("Windows NT 5.0") > -1 || sUserAgent.indexOf("Windows 2000") > -1;
      if (isWin2K)
        return "Win2000";
      var isWinXP = sUserAgent.indexOf("Windows NT 5.1") > -1 || sUserAgent.indexOf("Windows XP") > -1;
      if (isWinXP)
        return "WinXP";
      var isWin2003 = sUserAgent.indexOf("Windows NT 5.2") > -1 || sUserAgent.indexOf("Windows 2003") > -1;
      if (isWin2003)
        return "Win2003";
      var isWinVista = sUserAgent.indexOf("Windows NT 6.0") > -1 || sUserAgent.indexOf("Windows Vista") > -1;
      if (isWinVista)
        return "WinVista";
      var isWin7 = sUserAgent.indexOf("Windows NT 6.1") > -1 || sUserAgent.indexOf("Windows 7") > -1;
      if (isWin7)
        return "Win7";
    }
    return "other";
  },
  /****获得客户端ID****/
  ClientID: function (name) {
    var cookies = document.cookie.split(";");
    var value = "";
    for (var i = 0; i < cookies.length; i++) {
      var temp = cookies[i].split("=");
      var tempValue = temp[0].replace(/(^\s*)|(\s*$)/g, "");
      if (tempValue == name) {
        value = unescape(temp[1]);
        break;
      }
    }
    return value;
  },
  /****获得商品ID****/
  SearchGid: function () {
    var url = window.location.href;
    var value = "";
    if (url != undefined && url != "") {
      url.replace(/-\d+-/, function (a, b, c) {
        if (a != undefined && a != "" && a.length > 2) {
          value = a.substring(1, a.length - 1);
        }
      });
    }
    return value;
  },
  /****获得站内搜索关键字****/
  SearchKey: function () {
    var url = window.location.href;
    var value = "";
    if (url != undefined && url != "") {
      url.replace(/[=].*/, function (a, b, c) {
        if (a != undefined && a != "" && a.length > 1) {
          value = a.substring(1);
        }
      });
    }
    return value;
  },
  /**获得商品分类搜索编号**/
  SearchCategory: function () {
    var url = window.location.href;
    var value = "";
    if (url != undefined && url != "") {
      url.replace(/-\d+/, function (a, b, c) {
        if (a != undefined && a != "" && a.length > 1) {
          value = a.substring(1);
        }
      });
    }
    return value;
  },
  /****站外搜索 Google 百度*****/
  SearchSite: function (type) {
    var referrer = document.referrer;
    if (referrer != undefined && referrer != "") {
      if ("google" == type) {
        url.replace(new RegExp("(?:^|/?|&)q=([^&]*)(?:&|$)"), function (a, b, c) {
          if (this._ch != undefined && a != undefined && a.length > 0) {
            a = a.substring(a.indexOf("=") + 1, a.length - 1);
            return a;
          }
        });
      } else if ("baidu" == type) {
        url.replace(new RegExp("(?:^|/?|&)wd=([^&]*)(?:&|$)"), function (a, b, c) {
          if (this._ch != undefined && a != undefined && a.length > 0) {
            a = a.substring(a.indexOf("=") + 1, a.length - 1);
            return a;
          }
        });
      } else if ("sogou" == type) {
        url.replace(new RegExp("(?:^|/?|&)query=([^&]*)(?:&|$)"), function (a, b, c) {
          if (this._ch != undefined && a != undefined && a.length > 0) {
            a = a.substring(a.indexOf("=") + 1, a.length - 1);
            return a;
          }
        });
      } else if ("bing" == type) {
        url.replace(new RegExp("(?:^|/?|&)q=([^&]*)(?:&|$)"), function (a, b, c) {
          if (this._ch != undefined && a != undefined && a.length > 0) {
            a = a.substring(a.indexOf("=") + 1, a.length - 1);
            return a;
          }
        });
      }
    }
    return "";
  },
  /******将值插入到数组中*********/
  PushValue: function (key, value) {
    if (this._ch != undefined) {
      this._ch[key] = value;
    }
  },
  /***自定义参数**/
  Param: function (value) {
    if (this._ch != undefined) {
      this._ch["_ps"] = value;
    }
  },
  /******提交数据到后台**********/
  PostData: function () {
    $.ajax({
      url: "http://localhost:28482/Ajax/StatActions.aspx?t=" + Math.random(),
      type: "post",
      data: this._ch,
      success: function (data) { }
    });
  },
  /***初始化**/
  Init: function () {
    if (this._ch != undefined) {
      this._ch = undefined;
    }
    this._ch = {};
    if (this._Reg != undefined) {
      this._Reg = undefined;
    }
    //初始化正则表达式 匹配URL

    this._Reg = new Array();
    this._Reg[0] = "http://www.google.com.hk(.*)";
    this._Reg[1] = "http://www.baidu.com(.*)";
    this._Reg[2] = "http://www.sogou.com(.*)";
    this._Reg[3] = "http://cn.bing.com(.*)";

    //分析URL参数
    var hostURL = window.location.href;
    if (hostURL != undefined && hostURL != "") {
      if ((new RegExp(this._Reg[4])).test(hostURL)) {
        this._ch["_gid"] = this.SearchGid();
      } else if ((new RegExp(this._Reg[7])).test(hostURL)) {

      } else if ((new RegExp(this._Reg[5])).test(hostURL)) {
        this._ch["_cid"] = this.SearchCategory();
      } else if ((new RegExp(this._Reg[6])).test(hostURL)) {
        this._ch["_key"] = this.SearchKey();
      }
      this._ch["_tu"] = hostURL;
    }
    var referrer = document.referrer;
    if (referrer != undefined && referrer != "") {
      if ((new RegExp(this._Reg[0])).test(referrer)) {
        this._ch["_key"] = this.SearchSite("google");
      } else if ((new RegExp(this._Reg[1])).test(referrer)) {
        this._ch["_key"] = this.SearchSite("baidu");
      } else if ((new RegExp(this._Reg[2])).test(referrer)) {
        this._ch["_key"] = this.SearchSite("sogou");
      } else if ((new RegExp(this._Reg[3])).test(referrer)) {
        this._ch["_key"] = this.SearchSite("bing");
      }
      this._ch["_su"] = referrer;
    }

    //获取客户端相关信息
    this._ch["_sw"] = this.ScreenWidth();
    this._ch["_sh"] = this.ScreenHeight();
    this._ch["_bw"] = this.Browse();
    this._ch["_cs"] = this.ClientOs();
    this._ch["_mid"] = this.ClientID("from_channelid");
    this._ch["_ctid"] = this.ClientID("ClientKey");

  },
  _ch: undefined,
  _Reg: undefined

以上就是本文的全部内容,了解更多JavaScript的语法,大家可以查看:《JavaScript 参考教程》、《JavaScript代码风格指南》,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js创建对象的几种常用方式小结(推荐)
Oct 24 Javascript
JSON序列化与解析原生JS方法且IE6和chrome测试通过
Sep 05 Javascript
js实现带搜索功能的下拉框实时搜索实时匹配
Nov 05 Javascript
javascript笛卡尔积算法实现方法
Apr 08 Javascript
Javascript中replace()小结
Sep 30 Javascript
Vue自定义指令拖拽功能示例
Feb 17 Javascript
Vue2.0组件间数据传递示例
Mar 07 Javascript
深入理解Vue2.x的虚拟DOM diff原理
Sep 27 Javascript
Vue中$refs的用法详解
Jun 24 Javascript
js调用设备摄像头的方法
Jul 19 Javascript
React Native开发封装Toast与加载Loading组件示例
Sep 08 Javascript
解决Layui中layer报错的问题
Sep 03 Javascript
获取input标签的所有属性的方法
Jun 28 #Javascript
JavaScript ES6的新特性使用新方法定义Class
Jun 28 #Javascript
javascript 常用验证函数总结
Jun 28 #Javascript
JS传递对象数组为参数给后端,后端获取的实例代码
Jun 28 #Javascript
JavaScript ES5标准中新增的Array方法
Jun 28 #Javascript
jQuery 中ajax异步调用的四种方式
Jun 28 #Javascript
jQuery 调用WebService 实例讲解
Jun 28 #Javascript
You might like
计数器详细设计
2006/10/09 PHP
thinkphp学习笔记之多表查询
2014/07/28 PHP
Netbeans 8.2与PHP相关的新特性介绍
2016/10/08 PHP
PHP实现求解最长公共子串问题的方法
2017/11/17 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
2019/11/19 PHP
让JavaScript 轻松支持函数重载 (Part 1 - 设计)
2009/08/04 Javascript
js tab效果的实现代码
2009/12/26 Javascript
JavaScript匿名函数与委托使用示例
2014/07/22 Javascript
js中hash和ico的关联分析
2015/02/05 Javascript
本地Bootstrap文件字体图标引入却无法显示问题的解决方法
2020/04/18 Javascript
基于JS实现9种不同的面包屑和分布式多步骤导航效果
2017/02/21 Javascript
JavaScript使用readAsDataURL读取图像文件
2017/05/10 Javascript
vue利用v-for嵌套输出多层对象,分别输出到个表的方法
2018/09/07 Javascript
微信小程序批量监听输入框对按钮样式进行控制的实现代码
2019/10/12 Javascript
jQuery实现消息弹出框效果
2019/12/10 jQuery
Vue父组件向子组件传值以及data和props的区别详解
2020/03/02 Javascript
JS 设计模式之:单例模式定义与实现方法浅析
2020/05/06 Javascript
Vue proxyTable配置多个接口地址,解决跨域的问题
2020/09/11 Javascript
[03:27]《辉夜杯》线下训练营 导师CU和海涛指点迷津
2015/10/23 DOTA
[47:35]VP vs Pain 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/20 DOTA
[33:09]完美世界DOTA2联赛循环赛 Forest vs DM BO2第二场 10.29
2020/10/29 DOTA
windows及linux环境下永久修改pip镜像源的方法
2016/11/28 Python
python线程池threadpool实现篇
2018/04/27 Python
Django 连接sql server数据库的方法
2018/06/30 Python
Tornado Web Server框架编写简易Python服务器
2018/07/28 Python
Python3使用Matplotlib 绘制精美的数学函数图形
2019/04/11 Python
python中tkinter的应用:修改字体的实例讲解
2019/07/17 Python
python实现输出一个序列的所有子序列示例
2019/11/18 Python
Python函数的迭代器与生成器的示例代码
2020/06/18 Python
opencv 阈值分割的具体使用
2020/07/08 Python
通过css3动画和opacity透明度实现呼吸灯效果
2019/08/09 HTML / CSS
一款纯css3实现的非常实用的鼠标悬停特效演示
2014/11/05 HTML / CSS
什么是用户模式(User Mode)与内核模式(Kernel Mode) ?
2014/07/21 面试题
标准单位租车协议书
2014/09/23 职场文书
何时使用Map来代替普通的JS对象
2021/04/29 Javascript
常用的文件对应的MIME类型汇总
2022/04/26 HTML / CSS