ClientInfo.js 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. Namespace.register("U.UF.CI");
  2. //#region 客户端信息
  3. //浏览器信息
  4. U.UF.CI.userAgent = navigator.userAgent.toLowerCase();
  5. /*
  6. * 获取去新浪获取地址信息
  7. *
  8. * @param {function} 获取客户端信息回调
  9. */
  10. //朱艳萍老师建议:用释义的方式更加利于学生理解,也更加便于此系统的普及及应用,建议采纳。
  11. //Usestudio.UnionForm.getUserLocation
  12. U.UF.CI.getUserLocation = function (fun) {
  13. //如果用户客户端信息已经加载成功
  14. if (US.city["country"]) {
  15. fun(); //回调函数
  16. }
  17. else {
  18. //如果没有加载成功,那么通过加载新浪的api去加载
  19. //新浪的用不了了,现在使用的是搜狐的api
  20. U.UF.DL.asynLoadJs({ "src": "http://pv.sohu.com/cityjson?ie=utf-8" },
  21. function () {
  22. var _city = U.UF.CI.asyngetUserLocation(); //得到城市地址
  23. fun(_city); //打印城市信息
  24. });
  25. }
  26. }
  27. /*
  28. * 获取客户端ip异步
  29. returnCitySN
  30. 参数描述
  31. -------cname 当前城市
  32. -------cid 当前城市id
  33. -------cip 当前城市ip
  34. *
  35. *
  36. */
  37. U.UF.CI.asyngetUserLocation = function () {
  38. try {
  39. var _script = U.UF.DL.asynLoadJs({ "src": "http://pv.sohu.com/cityjson?ie=utf-8" }, function () { });
  40. //引入搜狐的script模块
  41. var i,
  42. _locationinfo = returnCitySN, //搜狐返回的值
  43. //用户地址信息数组
  44. _locationarr = [
  45. "country",
  46. "province",
  47. "city",
  48. "district",
  49. "isp",
  50. "type"
  51. ];
  52. _locationinfo.userAllLocation = ""; //用户地址拼接的处理
  53. //循环需要拼接的数组处理
  54. for (i = 0; i < _locationarr.length; i++) {
  55. _locationarr["userAllLocation"] += _locationarr[_locationinfo[i]];
  56. if (i != _locationarr.length - 1) {
  57. _locationarr["userAllLocation"] += ",";
  58. }
  59. }
  60. //把从第三方获取的值放在US.city变量中
  61. //alert("当前城市的ip值为" + _locationinfo.cip);
  62. US.city = _locationinfo;
  63. cb(_locationinfo); //回调使用
  64. }
  65. catch (e) { return; }
  66. }
  67. /*
  68. * 获取浏览器类型
  69. *
  70. * @return {object} 浏览器类型{ "browser": "", "ver": "" }
  71. ---------browser 浏览器类型 如 ie chrome firefox safir
  72. ---------ver 浏览器版本 如果ie的 7.0 8.0 和chrome 33 34
  73. */
  74. U.UF.CI.getBrowser = function () {
  75. var _browserobj = { "browser": "", "ver": "" }, //返回的浏览器对象
  76. _bri = U.UF.CI.userAgent, //浏览器信息
  77. _bro = U.UF.S.browser, //区分浏览器的正则
  78. _browserarr = _bri.match(_bro)//利用正则反选择的方式获取数组
  79. ;
  80. _browserobj.browser = _browserarr[1]; //设置浏览器的名字如 msie chrome firefox safir
  81. _browserobj.ver = _browserarr[2]; //设置浏览器版本号 ie的 7.0 8.0 和chrome 33 34
  82. return _browserobj;
  83. }
  84. /*
  85. * 获取用户电脑系统
  86. *
  87. * @return {string} 成功回调
  88. */
  89. U.UF.CI.getSystem = function () {
  90. //非window系列的说明
  91. var _ant = {
  92. "Apple series": "Mac68K,MacPPC,Macintosh",
  93. "Unix series": "X11",
  94. "Mac OS X 10_7": "OSX 10.7",
  95. "Mac OS X 10.8": "OSX 10.8",
  96. "Mac OS X 10_8": "OSX 10.8",
  97. "Linux": "Linux"
  98. };
  99. var _win = {
  100. "Windows NT 5.1": "WinXP", //windows 系列 系统信息
  101. "Windows NT 6.1": "Win7",
  102. "Windows NT 6.0": "Windows Server 2008",
  103. "Windows NT 6.2": "Win8",
  104. "Windows NT 5.1": "winxp",
  105. "Windows NT 5.2": "Windows Server 2003",
  106. "Windows NT 5.0": "Win2000",
  107. "Win 9x 4.90": "WinME",
  108. "Windows NT 10.0": "Win10"
  109. };
  110. var _str = navigator.userAgent; //获取用户信息
  111. var _left = _str.indexOf('(');
  112. var _right = _str.indexOf(';');
  113. //截取系统信息
  114. var _result = _str.substring(_left + 1, _right);
  115. return _win[_result] || _ant[_result]; //返回系统名称
  116. }
  117. /*
  118. * 判断用户支持html5 还是flash
  119. *
  120. * @return {string} 判断是否支持flash或者html5
  121. -----------HTML5 支持html5
  122. -----------Flash 支持flash
  123. */
  124. U.UF.CI.isSupportFlash = function () {
  125. if (typeof (Worker) !== "undefined") //利用worker属性判断是否支持html5
  126. {
  127. return 'HTML5';
  128. }
  129. else if (navigator.plugins["Shockwave Flash"]) {//利用navigator.plugins["Shockwave Flash"]属性判断是否支持flash
  130. return "Flash";
  131. }
  132. else {
  133. return false;
  134. }
  135. }
  136. /*
  137. * 获取客户端为电脑端还是手机端
  138. * @return {boolean}
  139. -----------true 电脑端
  140. -----------false 手机端
  141. */
  142. U.UF.CI.getUserPort = function () {
  143. var _userAgentInfo = navigator.userAgent, //浏览器信息
  144. _agents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"], //常用的手机系统版本
  145. _flag = true, //建立标志
  146. i; //用于循环
  147. //循环判断浏览器信息中是否有手机端是否有
  148. for (i = 0; i < _agents.length; i++) {
  149. if (_userAgentInfo.indexOf(_agents[i]) > 0) {
  150. _flag = false; //如果是手机版本返回false
  151. break;
  152. }
  153. }
  154. return _flag; //如果不是手机端返回true
  155. }
  156. /*
  157. * 获取分辨率
  158. * @return {array} [deviceXDPI, deviceYDPI];
  159. */
  160. U.UF.CI.getDPI = function () {
  161. var arrDPI = new Array();
  162. if (window.screen.deviceXDPI != undefined) {
  163. arrDPI[0] = window.screen.deviceXDPI;
  164. arrDPI[1] = window.screen.deviceYDPI;
  165. }
  166. else {
  167. var tmpNode = document.createElement("DIV");
  168. tmpNode.style.cssText = "width:1in;height:1in;position:absolute;left:0px;top:0px;z-index:99;visibility:hidden";
  169. document.body.appendChild(tmpNode);
  170. arrDPI[0] = parseInt(tmpNode.offsetWidth);
  171. arrDPI[1] = parseInt(tmpNode.offsetHeight);
  172. tmpNode.parentNode.removeChild(tmpNode);
  173. }
  174. return arrDPI;
  175. }
  176. //#endregion