本文主要是针对各种客户端进行检测,使用了用户代理字符串检测技术,具体代码如下:

var client=function() {var engine= {// 呈现引擎ie: 0, gecko: 0, webkit: 0, khtml: 0, opera: 0, //其他版本号ver: null};var browser= {// 浏览器ie: 0, firefox: 0, safari: 0, konq: 0, opera: 0, chrome: 0, // 其他的版本ver: null};var system= {win: false, mac: false, xll: false, // 移动设备iphone: false, ipod: false, ipad: false, ios: false, android: false}; // 在此检测呈现引擎,平台和设备return {engine: engine, browser: browser, system: system};
}();//( )函数将参数传递来的字符串中的十六进制码转换成 ASCII 码并返回,它完成 escape( ) 函数的逆操作。
var engine=client;
var browser=client;
var ua=navigator.userAgent.toLowerCase();
if(ua.match(/opr/([d.]+)/) || window.opera) {var result=ua.match(/opr/([d.]+)/);engine.ver=browser.ver=result[1];engine.opera=browser.opera=parseFloat(engine.ver);if(window.opera) {engine.ver=browser.ver=window.opera.version();engine.opera=browser.opera=parseFloat(engine.ver);}
}else if(/applewebkit/(S+)/.test(ua)) {engine.ver=RegExp["$1"];engine.webkit=parseFloat(engine.ver); // 确定是chrome还是safari/*              * chrome用户代理字符串              * Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)               * Chrome/42.0.2311.152 Safari/537.36              */if(/chrome/(S+)/.test(ua)) {browser.ver=RegExp["$1"];browser.chrome=parseFloat(browser.ver);}else if(/version/(S+)/.test(ua)) {/*                    * safari用户代理字符串                    * Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.57.2 (KHTML, like Gecko)                     * Version/5.1.7 Safari/534.57.2                    */browser.ver=RegExp["$1"];browser.safari=parseFloat(browser.ver);}else {//近似地确定版本号var safariVersion=1;if (engine.webkit < 100) {safariVersion=1;}else if (engine.webkit < 312) {safariVersion=1.2;}else if (engine.webkit < 412) {safariVersion=1.3;}else {safariVersion=2;}browser.safari=browser.ver=safariVersion;}
}else if (/khtml/(S+)/.test(ua) || /konqueror/([^;
]+)/.test(ua)) {engine.ver=browser.ver=RegExp["$1"];engine.khtml=browser.konq=parseFloat(engine.ver);
}else if(/rv:([^)]+)) gecko/d {8
}/.test(ua)) {engine.ver=RegExp["$1"];engine.gecko=parseFloat(engine.ver);/*                * firefox的用户代理的字符串                * Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0)                 * Gecko/20100101 Firefox/38.0                */// 确定是不是firefoxif(/firefox/(S+)/.test(ua)) {browser.ver=RegExp["$1"];browser.firefox=parseFloat(browser.ver);}
}else if (/msie ([^;
]+)/.test(ua) || "ActiveXObject" in window) {if("ActiveXObject" in window) {if(/msie ([^;]+)/.test(ua)) {engine.ver=browser.ver=RegExp["$1"];engine.ie=browser.ie=parseFloat(engine.ver);}else {if(/rv: ([^)]+))/.test(ua)) {engine.ver=browser.ver=RegExp["$1"];engine.ie=browser.ie=parseFloat(engine.ver);}}}
} // 检测平台
var system=client;
var platform=navigator.platform;
system.win=platform.indexOf("Win")==0;
system.mac=platform.indexOf("Mac")==0;
system.x11=(platform.indexOf("X11")==0) || (platform.indexOf("Linux")==0); // 移动设备
system.iphone=ua.indexOf("iphone") > -1;
system.ipod=ua.indexOf("ipod") > -1;
system.ipad=ua.indexOf("ipad") > -1; //检测iOS 版本
if (system.mac && ua.indexOf("mobile") > -1) {if (/cpu (?: iphone)?os (d+_d+)/.test(ua)) {system.ios=parseFloat(RegExp.$1.replace("_", "."));}else {system.ios=2; //不能真正检测出来,所以只能猜测}
} //检测Android 版本
if (/android (d+.d+)/.test(ua)) {system.android=parseFloat(RegExp.$1);
}

  参考网址

转载于:https://www.cnblogs.com/sdgf/p/4735636.html

JavaScript之如何对客户端进行检测相关推荐

  1. 从客户端...中检测到有潜在危险的 Request.Form 值

    在.net中,Request时出现有HTML.Javascript等字符串时,系统会认为是危险值,运行显示"从客户端--中检测到有潜在危险的Request.Form值"这样的错. ...

  2. 从客户端中检测到有潜在危险的 request.form值[解决方法]

    当页面编辑或运行提交时,出现"从客户端中检测到有潜在危险的request.form值"问题,该怎么办呢?如下图所示: 下面博主汇总出现这种错误的几种解决方法: 问题原因:由于在as ...

  3. 勤于思考:从客户端中检测到有潜在危险的 Request.Form 值

    在提交表单时候,asp.net 提示:"从客户端(......)中检测到有潜在危险的 Request.Form 值" . asp.net中的请求验证特性提供了某一等级的保护措施防止 ...

  4. “从客户端中检测到有潜在危险的 Request.Form 值“的解决方案汇总

    "从客户端中检测到有潜在危险的 Request.Form 值"的解决方案汇总 参考文章: (1)"从客户端中检测到有潜在危险的 Request.Form 值"的 ...

  5. 从客户端中检测到有潜在危险的request.form值

    从客户端中检测到有潜在危险的request.form值 今天被这个问题卡住了,在用到CKEDITOR的时候,老是报错显示输入字符存在潜在危险,之后百度了一下,试了这两种方法: 解决方案一:     在 ...

  6. MVC中提示错误:从客户端中检测到有潜在危险的 Request.Form 值的详细解决方法...

    今天往MVC中加入了一个富文本编辑框,在提交信息的时候报了如下的错误:从客户端(Content="<EM ><STRONG ><U >这是测试这...&q ...

  7. 使用Asp.net MVC 2.0 +.NET 4.0 出现 “从客户端 ... 中检测到有潜在危险的 Request.Form 值”错误的解决办法...

    我们在用Asp.net 开发 Web Form页面时,通常要提交包含Html内容的数据给后台程序代码处理时,会为页面设置 ValidateRequest="false" 属性,设置 ...

  8. mvc 从客户端 中检测到有潜在危险的 Request 值

    往MVC中加入了一个富文本编辑框,在提交信息的时候报了如下的错误: 从客户端(Content="<EM ><STRONG ><U >这是测试这...&qu ...

  9. ASP.Net MVC从客户端中检测到有潜在危险的 Request.Form 值

    ASP.NET MVC4(Razor)从客户端中检测到有潜在危险的 Request.Form 值  "/"应用程序中的服务器错误. 从客户端(Content=" sdfd ...

最新文章

  1. 如何在HHDI中进行数据质量探查并获取数据剖析报告
  2. springboot 集成jpa_基于Spring Boot+JPA Restful 风格的数据
  3. eruke注册中心搭建
  4. Swift4之NSAttributedString的使用
  5. php mysql 时间差_PHP中计算时间差的方法
  6. Linux内核中max()宏的奥妙何在?(一)
  7. android动态添加标签,android – 动态添加Textview
  8. 用户金字塔模型详解及在实际运营工作中的意义
  9. 最小可行产品是什么_无论如何,“最小可行产品”到底意味着什么?
  10. Java只读服务器,在服务器端,JSP页面如何只读打开本地的word文件并显示在网页上...
  11. python基础知识5——赋值与深浅拷贝——整数和字符串,列表元组字典
  12. 2019华北五省计算机应用大赛官网,“远洋航空杯”2019年华北五省(市、自治区) 及港澳台大学生计算机应用大赛举行...
  13. UIButton设置UIControlContentHorizontalAlignment调整文字对齐方式
  14. Java程序的编码规范
  15. SecureCRT For Mac 永久试用
  16. 叩丁狼开发工程师:SSR服务架构特点分析
  17. LPC1788学习笔记(19-01-11)
  18. 基础二:晶体与各向异性
  19. openfire4.2.1 + smack4.2.2即时通信工具开发(android端登录、发送消息、接收消息)
  20. 【5G核心网】5GC核心网之网元UDM

热门文章

  1. 飓风“桑迪”路径图的制作
  2. django源码笔记-【1】
  3. Halcon 彩色图片通道分割处理
  4. python 的回调函数
  5. 太晚睡不着的落寞与开心(记近况)
  6. 如何在CentOS/RHEL 7上借助ssm管理LVM卷?
  7. C#的网络适配器操作
  8. ROW_NUMBER() OVER 函数的用法
  9. Yii框架官方指南系列14——基础知识:开发流程
  10. 在ASP.Net中如何彻底杀死Excel进程