1. /**
  2. * @author hechen
  3. */
  4. var gs = {
  5. /**获得屏幕宽度**/
  6. ScreenWidth: function () {
  7. return window.screen.width;
  8. },
  9. /***获得屏幕高度**/
  10. ScreenHeight: function () {
  11. return window.screen.height;
  12. },
  13. /**获得浏览器***/
  14. Browse: function () {
  15. var browser = {};
  16. var userAgent = navigator.userAgent.toLowerCase();
  17. var s;
  18. (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;
  19. var version = "";
  20. if (browser.ie) {
  21. version = 'IE ' + browser.ie;
  22. }
  23. else {
  24. if (browser.firefox) {
  25. version = 'firefox ' + browser.firefox;
  26. }
  27. else {
  28. if (browser.chrome) {
  29. version = 'chrome ' + browser.chrome;
  30. }
  31. else {
  32. if (browser.opera) {
  33. version = 'opera ' + browser.opera;
  34. }
  35. else {
  36. if (browser.safari) {
  37. version = 'safari ' + browser.safari;
  38. }
  39. else {
  40. version = '未知浏览器';
  41. }
  42. }
  43. }
  44. }
  45. }
  46. return version;
  47. },
  48. /**获得操作系统***/
  49. ClientOs: function () {
  50. var sUserAgent = navigator.userAgent;
  51. var isWin = (navigator.platform == "Win32") || (navigator.platform == "Windows");
  52. var isMac = (navigator.platform == "Mac68K") || (navigator.platform == "MacPPC") || (navigator.platform == "Macintosh") || (navigator.platform == "MacIntel");
  53. if (isMac)
  54. return "Mac";
  55. var isUnix = (navigator.platform == "X11") && !isWin && !isMac;
  56. if (isUnix)
  57. return "Unix";
  58. var isLinux = (String(navigator.platform).indexOf("Linux") > -1);
  59. if (isLinux)
  60. return "Linux";
  61. if (isWin) {
  62. var isWin2K = sUserAgent.indexOf("Windows NT 5.0") > -1 || sUserAgent.indexOf("Windows 2000") > -1;
  63. if (isWin2K)
  64. return "Win2000";
  65. var isWinXP = sUserAgent.indexOf("Windows NT 5.1") > -1 || sUserAgent.indexOf("Windows XP") > -1;
  66. if (isWinXP)
  67. return "WinXP";
  68. var isWin2003 = sUserAgent.indexOf("Windows NT 5.2") > -1 || sUserAgent.indexOf("Windows 2003") > -1;
  69. if (isWin2003)
  70. return "Win2003";
  71. var isWinVista = sUserAgent.indexOf("Windows NT 6.0") > -1 || sUserAgent.indexOf("Windows Vista") > -1;
  72. if (isWinVista)
  73. return "WinVista";
  74. var isWin7 = sUserAgent.indexOf("Windows NT 6.1") > -1 || sUserAgent.indexOf("Windows 7") > -1;
  75. if (isWin7)
  76. return "Win7";
  77. }
  78. return "other";
  79. },
  80. /****获得客户端ID****/
  81. ClientID: function (name) {
  82. var cookies = document.cookie.split(";");
  83. var value = "";
  84. for (var i = 0; i < cookies.length; i++) {
  85. var temp = cookies[i].split("=");
  86. var tempValue = temp[0].replace(/(^\s*)|(\s*$)/g, "");
  87. if (tempValue == name) {
  88. value = unescape(temp[1]);
  89. break;
  90. }
  91. }
  92. return value;
  93. },
  94. /****获得商品ID****/
  95. SearchGid: function () {
  96. var url = window.location.href;
  97. var value = "";
  98. if (url != undefined && url != "") {
  99. url.replace(/-\d+-/, function (a, b, c) {
  100. if (a != undefined && a != "" && a.length > 2) {
  101. value = a.substring(1, a.length - 1);
  102. }
  103. });
  104. }
  105. return value;
  106. },
  107. /****获得站内搜索关键字****/
  108. SearchKey: function () {
  109. var url = window.location.href;
  110. var value = "";
  111. if (url != undefined && url != "") {
  112. url.replace(/[=].*/, function (a, b, c) {
  113. if (a != undefined && a != "" && a.length > 1) {
  114. value = a.substring(1);
  115. }
  116. });
  117. }
  118. return value;
  119. },
  120. /**获得商品分类搜索编号**/
  121. SearchCategory: function () {
  122. var url = window.location.href;
  123. var value = "";
  124. if (url != undefined && url != "") {
  125. url.replace(/-\d+/, function (a, b, c) {
  126. if (a != undefined && a != "" && a.length > 1) {
  127. value = a.substring(1);
  128. }
  129. });
  130. }
  131. return value;
  132. },
  133. /****站外搜索 Google 百度*****/
  134. SearchSite: function (type) {
  135. var referrer = document.referrer;
  136. if (referrer != undefined && referrer != "") {
  137. if ("google" == type) {
  138. url.replace(new RegExp("(?:^|/?|&)q=([^&]*)(?:&|$)"), function (a, b, c) {
  139. if (this._ch != undefined && a != undefined && a.length > 0) {
  140. a = a.substring(a.indexOf("=") + 1, a.length - 1);
  141. return a;
  142. }
  143. });
  144. } else if ("baidu" == type) {
  145. url.replace(new RegExp("(?:^|/?|&)wd=([^&]*)(?:&|$)"), function (a, b, c) {
  146. if (this._ch != undefined && a != undefined && a.length > 0) {
  147. a = a.substring(a.indexOf("=") + 1, a.length - 1);
  148. return a;
  149. }
  150. });
  151. } else if ("sogou" == type) {
  152. url.replace(new RegExp("(?:^|/?|&)query=([^&]*)(?:&|$)"), function (a, b, c) {
  153. if (this._ch != undefined && a != undefined && a.length > 0) {
  154. a = a.substring(a.indexOf("=") + 1, a.length - 1);
  155. return a;
  156. }
  157. });
  158. } else if ("bing" == type) {
  159. url.replace(new RegExp("(?:^|/?|&)q=([^&]*)(?:&|$)"), function (a, b, c) {
  160. if (this._ch != undefined && a != undefined && a.length > 0) {
  161. a = a.substring(a.indexOf("=") + 1, a.length - 1);
  162. return a;
  163. }
  164. });
  165. }
  166. }
  167. return "";
  168. },
  169. /******将值插入到数组中*********/
  170. PushValue: function (key, value) {
  171. if (this._ch != undefined) {
  172. this._ch[key] = value;
  173. }
  174. },
  175. /***自定义参数**/
  176. Param: function (value) {
  177. if (this._ch != undefined) {
  178. this._ch["_ps"] = value;
  179. }
  180. },
  181. /******提交数据到后台**********/
  182. PostData: function () {
  183. $.ajax({
  184. url: "http://localhost:28482/Ajax/StatActions.aspx?t=" + Math.random(),
  185. type: "post",
  186. data: this._ch,
  187. success: function (data) { }
  188. });
  189. },
  190. /***初始化**/
  191. Init: function () {
  192. if (this._ch != undefined) {
  193. this._ch = undefined;
  194. }
  195. this._ch = {};
  196. if (this._Reg != undefined) {
  197. this._Reg = undefined;
  198. }
  199. //初始化正则表达式 匹配URL
  200.  
  201. this._Reg = new Array();
  202. this._Reg[0] = "http://www.google.com.hk(.*)";
  203. this._Reg[1] = "http://www.baidu.com(.*)";
  204. this._Reg[2] = "http://www.sogou.com(.*)";
  205. this._Reg[3] = "http://cn.bing.com(.*)";
  206.  
  207. //分析URL参数
  208. var hostURL = window.location.href;
  209. if (hostURL != undefined && hostURL != "") {
  210. if ((new RegExp(this._Reg[4])).test(hostURL)) {
  211. this._ch["_gid"] = this.SearchGid();
  212. } else if ((new RegExp(this._Reg[7])).test(hostURL)) {
  213.  
  214. } else if ((new RegExp(this._Reg[5])).test(hostURL)) {
  215. this._ch["_cid"] = this.SearchCategory();
  216. } else if ((new RegExp(this._Reg[6])).test(hostURL)) {
  217. this._ch["_key"] = this.SearchKey();
  218. }
  219. this._ch["_tu"] = hostURL;
  220. }
  221. var referrer = document.referrer;
  222. if (referrer != undefined && referrer != "") {
  223. if ((new RegExp(this._Reg[0])).test(referrer)) {
  224. this._ch["_key"] = this.SearchSite("google");
  225. } else if ((new RegExp(this._Reg[1])).test(referrer)) {
  226. this._ch["_key"] = this.SearchSite("baidu");
  227. } else if ((new RegExp(this._Reg[2])).test(referrer)) {
  228. this._ch["_key"] = this.SearchSite("sogou");
  229. } else if ((new RegExp(this._Reg[3])).test(referrer)) {
  230. this._ch["_key"] = this.SearchSite("bing");
  231. }
  232. this._ch["_su"] = referrer;
  233. }
  234.  
  235. //获取客户端相关信息
  236. this._ch["_sw"] = this.ScreenWidth();
  237. this._ch["_sh"] = this.ScreenHeight();
  238. this._ch["_bw"] = this.Browse();
  239. this._ch["_cs"] = this.ClientOs();
  240. this._ch["_mid"] = this.ClientID("from_channelid");
  241. this._ch["_ctid"] = this.ClientID("ClientKey");
  242.  
  243. },
  244. _ch: undefined,
  245. _Reg: undefined

 

userAgent 是 navigator 对象的一个只读属性,译为“用户代理”,简称“UA”。userAgent 会返回一个字符串,该字符串包含客户端使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等信息。

例如,chrome 浏览器在 Window7 平台下的 userAgent 示例:
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36

IE8 浏览器在 Window7 平台下的 userAgent 示例:
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)

下面是一个使用原生的javascript获取操作系统及其版本的demo: 

  1. //利用原生Js获取操作系统版本
  2. function getOS() {
  3. var sUserAgent = navigator.userAgent;
  4. var isWin = (navigator.platform == "Win32") || (navigator.platform == "Windows");
  5. var isMac = (navigator.platform == "Mac68K") || (navigator.platform == "MacPPC") || (navigator.platform == "Macintosh") || (navigator.platform == "MacIntel");
  6. if (isMac) return "Mac";
  7. var isUnix = (navigator.platform == "X11") && !isWin && !isMac;
  8. if (isUnix) return "Unix";
  9. var isLinux = (String(navigator.platform).indexOf("Linux") > -1);
  10. if (isLinux) return "Linux";
  11. if (isWin) {
  12. var isWin2K = sUserAgent.indexOf("Windows NT 5.0") > -1 || sUserAgent.indexOf("Windows 2000") > -1;
  13. if (isWin2K) return "Win2000";
  14. var isWinXP = sUserAgent.indexOf("Windows NT 5.1") > -1 || sUserAgent.indexOf("Windows XP") > -1;
  15. if (isWinXP) return "WinXP";
  16. var isWin2003 = sUserAgent.indexOf("Windows NT 5.2") > -1 || sUserAgent.indexOf("Windows 2003") > -1;
  17. if (isWin2003) return "Win2003";
  18. var isWinVista= sUserAgent.indexOf("Windows NT 6.0") > -1 || sUserAgent.indexOf("Windows Vista") > -1;
  19. if (isWinVista) return "WinVista";
  20. var isWin7 = sUserAgent.indexOf("Windows NT 6.1") > -1 || sUserAgent.indexOf("Windows 7") > -1;
  21. if (isWin7) return "Win7";
  22. var isWin10 = sUserAgent.indexOf("Windows NT 10") > -1 || sUserAgent.indexOf("Windows 10") > -1;
  23. if (isWin10) return "Win10";
  24. }
  25. return "other";
  26. }
  27.  
  28. document.write("您的操作系统是:"+getOS());

  

Javascript中获取浏览器类型和操作系统版本等客户端信息常用代码的更多相关文章

  1. JavaScript获取浏览器类型与版本

    从网上找到一段使用JavaScript判断浏览器以及浏览器版本的比较好的代码,在此记录一下: <script type="text/javascript"> var S ...

  2. JavaScript学习总结(十八)——JavaScript获取浏览器类型与版本

    从网上找到一段使用JavaScript判断浏览器以及浏览器版本的比较好的代码,在此记录一下: 1 <script type="text/javascript"> 2 v ...

  3. js获取浏览器类型和版本信息

    bro () { let broName = 'Runing' let strStart = 0 let strStop = 0 let temp = '' let userAgent = windo ...

  4. JavaScript中两种类型的全局对象/函数【转】

    Snandy Stop, thinking is the essence of progress. JavaScript中两种类型的全局对象/函数 这里所说的JavaScript指浏览器环境中的包括宿 ...

  5. JavaScript中判断对象类型方法大全1

    我们知道,JavaScript中检测对象类型的运算符有:typeof.instanceof,还有对象的constructor属性: 1) typeof 运算符 typeof 是一元运算符,返回结果是一 ...

  6. javascript中获取非行间样式的方法

    我们都知道一般在javascript中获取样式一般用的是nodeObj.style.attr这个属性的,但是这个属性只能获取行间样式非行间样式比如写在样式表中的样式那么用nodeObj.style.a ...

  7. JavaScript中判断对象类型的种种方法

    我们知道,JavaScript中检测对象类型的运算符有:typeof.instanceof,还有对象的constructor属性: 1) typeof 运算符 typeof 是一元运算符,返回结果是一 ...

  8. 转 JavaScript中判断对象类型的种种方法

    我们知道,JavaScript中检测对象类型的运算符有:typeof.instanceof,还有对象的constructor属性: 1) typeof 运算符 typeof 是一元运算符,返回结果是一 ...

  9. JS获取浏览器类型和版本号

    JS获取浏览器类型和版本号,增加了IE11的判断. 2015/7/5更新: 简化代码逻辑 var zbrowser = {} var ua = navigator.userAgent.toLowerC ...

随机推荐

  1. HttpServletRequest对象方法的用法

    1. 获得客户机信息    getRequestURL方法返回客户端发出请求时的完整URL.    getRequestURI方法返回请求行中的资源名部分.    getQueryString 方法返 ...

  2. Oracle查询优化改写--------------------单表查询

    一.查询表中所有的行与列 二.从表中检索部分行 三.查找空值 四.将空值转化为实际值(coalesce) 五.查找满足多个条件的行(查询部门为10中所有的员工.所有得到提成的员工,以及部门20中工资不 ...

  3. python(字符串操作)

    一.字符串的局部替换 python 字符串替换可以用2种方法实现:1是用字符串本身的方法.2用正则来替换字符串 下面用个例子来实验下:a = 'hello word'我把a字符串里的word替换为py ...

  4. selenium + robotframework的运行原理

    1.点击ride界面启动用例执行时,首先会调用脚本 2.打开pybot脚本查看内容. 3.打开robot包下面的run文件,我们可以看到信息 run文件内容 程序启动的入口, sys.agv所表达的含 ...

  5. linux设置代理修改接口数据

    其实很简单,希望看到的人可以一次搞定,所以我把所有步骤写一块儿了. 1.首先在自己能上网的机器上安装fiddler,程序自己百度搜就可以,百度软件中心的程序就行. 2.安装fiddler后,管理员权限 ...

  6. Android中文API (109) —— SimpleCursorTreeAdapter

    前言 本章内容是android.widget.SimpleCursorTreeAdapter,版本为Android 3.0 r1,翻译来自"深夜未眠",含示例代码,欢迎访问它的博客 ...

  7. present(模态)实现出push的效果

    在present加上这个转场动画,取消掉原来的转场动画  CATransition *animation = [CATransitionanimation];     animation.durati ...

  8. 【java并发系列】Fork/Join任务(转)

    原文链接 当我们需要执行大量的小任务时,有经验的Java开发人员都会采用线程池来高效执行这些小任务.然而,有一种任务,例如,对超过1000万个元素的数组进行排序,这种任务本身可以并发执行,但如何拆解成 ...

  9. Beta No.6

    今天遇到的困难: github服务器响应很慢 推图的API接口相应较慢,超过了初始设定的最大延迟时间,导致了无法正确返回图片 ListView滑动删除Demo出现了某些Bug,这些Bug可能导致了某些 ...

  10. 1013团队Beta冲刺day2

    项目进展 李明皇 今天解决的进度 优化了信息详情页的布局:日期显示,添加举报按钮等 优化了程序的数据传递逻辑 明天安排 程序运行逻辑的完善 林翔 今天解决的进度 实现微信端消息发布的插入数据库 明天安 ...