JavaScript之如何对客户端进行检测
本文主要是针对各种客户端进行检测,使用了用户代理字符串检测技术,具体代码如下:
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之如何对客户端进行检测相关推荐
- 从客户端...中检测到有潜在危险的 Request.Form 值
在.net中,Request时出现有HTML.Javascript等字符串时,系统会认为是危险值,运行显示"从客户端--中检测到有潜在危险的Request.Form值"这样的错. ...
- 从客户端中检测到有潜在危险的 request.form值[解决方法]
当页面编辑或运行提交时,出现"从客户端中检测到有潜在危险的request.form值"问题,该怎么办呢?如下图所示: 下面博主汇总出现这种错误的几种解决方法: 问题原因:由于在as ...
- 勤于思考:从客户端中检测到有潜在危险的 Request.Form 值
在提交表单时候,asp.net 提示:"从客户端(......)中检测到有潜在危险的 Request.Form 值" . asp.net中的请求验证特性提供了某一等级的保护措施防止 ...
- “从客户端中检测到有潜在危险的 Request.Form 值“的解决方案汇总
"从客户端中检测到有潜在危险的 Request.Form 值"的解决方案汇总 参考文章: (1)"从客户端中检测到有潜在危险的 Request.Form 值"的 ...
- 从客户端中检测到有潜在危险的request.form值
从客户端中检测到有潜在危险的request.form值 今天被这个问题卡住了,在用到CKEDITOR的时候,老是报错显示输入字符存在潜在危险,之后百度了一下,试了这两种方法: 解决方案一: 在 ...
- MVC中提示错误:从客户端中检测到有潜在危险的 Request.Form 值的详细解决方法...
今天往MVC中加入了一个富文本编辑框,在提交信息的时候报了如下的错误:从客户端(Content="<EM ><STRONG ><U >这是测试这...&q ...
- 使用Asp.net MVC 2.0 +.NET 4.0 出现 “从客户端 ... 中检测到有潜在危险的 Request.Form 值”错误的解决办法...
我们在用Asp.net 开发 Web Form页面时,通常要提交包含Html内容的数据给后台程序代码处理时,会为页面设置 ValidateRequest="false" 属性,设置 ...
- mvc 从客户端 中检测到有潜在危险的 Request 值
往MVC中加入了一个富文本编辑框,在提交信息的时候报了如下的错误: 从客户端(Content="<EM ><STRONG ><U >这是测试这...&qu ...
- ASP.Net MVC从客户端中检测到有潜在危险的 Request.Form 值
ASP.NET MVC4(Razor)从客户端中检测到有潜在危险的 Request.Form 值 "/"应用程序中的服务器错误. 从客户端(Content=" sdfd ...
最新文章
- 如何在HHDI中进行数据质量探查并获取数据剖析报告
- springboot 集成jpa_基于Spring Boot+JPA Restful 风格的数据
- eruke注册中心搭建
- Swift4之NSAttributedString的使用
- php mysql 时间差_PHP中计算时间差的方法
- Linux内核中max()宏的奥妙何在?(一)
- android动态添加标签,android – 动态添加Textview
- 用户金字塔模型详解及在实际运营工作中的意义
- 最小可行产品是什么_无论如何,“最小可行产品”到底意味着什么?
- Java只读服务器,在服务器端,JSP页面如何只读打开本地的word文件并显示在网页上...
- python基础知识5——赋值与深浅拷贝——整数和字符串,列表元组字典
- 2019华北五省计算机应用大赛官网,“远洋航空杯”2019年华北五省(市、自治区) 及港澳台大学生计算机应用大赛举行...
- UIButton设置UIControlContentHorizontalAlignment调整文字对齐方式
- Java程序的编码规范
- SecureCRT For Mac 永久试用
- 叩丁狼开发工程师:SSR服务架构特点分析
- LPC1788学习笔记(19-01-11)
- 基础二:晶体与各向异性
- openfire4.2.1 + smack4.2.2即时通信工具开发(android端登录、发送消息、接收消息)
- 【5G核心网】5GC核心网之网元UDM