Namespace.register("U.UF.CI"); //#region 客户端信息 //浏览器信息 U.UF.CI.userAgent = navigator.userAgent.toLowerCase(); /* * 获取去新浪获取地址信息 * * @param {function} 获取客户端信息回调 */ //朱艳萍老师建议:用释义的方式更加利于学生理解,也更加便于此系统的普及及应用,建议采纳。 //Usestudio.UnionForm.getUserLocation U.UF.CI.getUserLocation = function (fun) { //如果用户客户端信息已经加载成功 if (US.city["country"]) { fun(); //回调函数 } else { //如果没有加载成功,那么通过加载新浪的api去加载 //新浪的用不了了,现在使用的是搜狐的api U.UF.DL.asynLoadJs({ "src": "http://pv.sohu.com/cityjson?ie=utf-8" }, function () { var _city = U.UF.CI.asyngetUserLocation(); //得到城市地址 fun(_city); //打印城市信息 }); } } /* * 获取客户端ip异步 returnCitySN 参数描述 -------cname 当前城市 -------cid 当前城市id -------cip 当前城市ip * * */ U.UF.CI.asyngetUserLocation = function () { try { var _script = U.UF.DL.asynLoadJs({ "src": "http://pv.sohu.com/cityjson?ie=utf-8" }, function () { }); //引入搜狐的script模块 var i, _locationinfo = returnCitySN, //搜狐返回的值 //用户地址信息数组 _locationarr = [ "country", "province", "city", "district", "isp", "type" ]; _locationinfo.userAllLocation = ""; //用户地址拼接的处理 //循环需要拼接的数组处理 for (i = 0; i < _locationarr.length; i++) { _locationarr["userAllLocation"] += _locationarr[_locationinfo[i]]; if (i != _locationarr.length - 1) { _locationarr["userAllLocation"] += ","; } } //把从第三方获取的值放在US.city变量中 //alert("当前城市的ip值为" + _locationinfo.cip); US.city = _locationinfo; cb(_locationinfo); //回调使用 } catch (e) { return; } } /* * 获取浏览器类型 * * @return {object} 浏览器类型{ "browser": "", "ver": "" } ---------browser 浏览器类型 如 ie chrome firefox safir ---------ver 浏览器版本 如果ie的 7.0 8.0 和chrome 33 34 */ U.UF.CI.getBrowser = function () { var _browserobj = { "browser": "", "ver": "" }, //返回的浏览器对象 _bri = U.UF.CI.userAgent, //浏览器信息 _bro = U.UF.S.browser, //区分浏览器的正则 _browserarr = _bri.match(_bro)//利用正则反选择的方式获取数组 ; _browserobj.browser = _browserarr[1]; //设置浏览器的名字如 msie chrome firefox safir _browserobj.ver = _browserarr[2]; //设置浏览器版本号 ie的 7.0 8.0 和chrome 33 34 return _browserobj; } /* * 获取用户电脑系统 * * @return {string} 成功回调 */ U.UF.CI.getSystem = function () { //非window系列的说明 var _ant = { "Apple series": "Mac68K,MacPPC,Macintosh", "Unix series": "X11", "Mac OS X 10_7": "OSX 10.7", "Mac OS X 10.8": "OSX 10.8", "Mac OS X 10_8": "OSX 10.8", "Linux": "Linux" }; var _win = { "Windows NT 5.1": "WinXP", //windows 系列 系统信息 "Windows NT 6.1": "Win7", "Windows NT 6.0": "Windows Server 2008", "Windows NT 6.2": "Win8", "Windows NT 5.1": "winxp", "Windows NT 5.2": "Windows Server 2003", "Windows NT 5.0": "Win2000", "Win 9x 4.90": "WinME", "Windows NT 10.0": "Win10" }; var _str = navigator.userAgent; //获取用户信息 var _left = _str.indexOf('('); var _right = _str.indexOf(';'); //截取系统信息 var _result = _str.substring(_left + 1, _right); return _win[_result] || _ant[_result]; //返回系统名称 } /* * 判断用户支持html5 还是flash * * @return {string} 判断是否支持flash或者html5 -----------HTML5 支持html5 -----------Flash 支持flash */ U.UF.CI.isSupportFlash = function () { if (typeof (Worker) !== "undefined") //利用worker属性判断是否支持html5 { return 'HTML5'; } else if (navigator.plugins["Shockwave Flash"]) {//利用navigator.plugins["Shockwave Flash"]属性判断是否支持flash return "Flash"; } else { return false; } } /* * 获取客户端为电脑端还是手机端 * @return {boolean} -----------true 电脑端 -----------false 手机端 */ U.UF.CI.getUserPort = function () { var _userAgentInfo = navigator.userAgent, //浏览器信息 _agents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"], //常用的手机系统版本 _flag = true, //建立标志 i; //用于循环 //循环判断浏览器信息中是否有手机端是否有 for (i = 0; i < _agents.length; i++) { if (_userAgentInfo.indexOf(_agents[i]) > 0) { _flag = false; //如果是手机版本返回false break; } } return _flag; //如果不是手机端返回true } /* * 获取分辨率 * @return {array} [deviceXDPI, deviceYDPI]; */ U.UF.CI.getDPI = function () { var arrDPI = new Array(); if (window.screen.deviceXDPI != undefined) { arrDPI[0] = window.screen.deviceXDPI; arrDPI[1] = window.screen.deviceYDPI; } else { var tmpNode = document.createElement("DIV"); tmpNode.style.cssText = "width:1in;height:1in;position:absolute;left:0px;top:0px;z-index:99;visibility:hidden"; document.body.appendChild(tmpNode); arrDPI[0] = parseInt(tmpNode.offsetWidth); arrDPI[1] = parseInt(tmpNode.offsetHeight); tmpNode.parentNode.removeChild(tmpNode); } return arrDPI; } //#endregion