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

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 */ // 确定是不是firefox
if(/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);
}

  参考网址

JavaScript之如何对客户端进行检测的更多相关文章

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

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

  2. 当页面编辑或运行提交时,出现“从客户端中检测到有潜在危险的request.form值”问题,该怎么办呢?

    最近在学习highcharts时,关于其中的导出功能,本来是想把导出的图片存放在本地,发现只有在电脑联网的情况下才可以一下导出图片,后来查阅了一番资料,才发现highcharts中的导出默认的官网服务 ...

  3. WebForm从客户端中检测到有潜在危险的Request.Form 值的处理办法

    从客户端中检测到有潜在危险的 Request.Form 值由于在.net中,Request时出现有HTML或Javascript等字符串时,系统会认为是危险性值.立马报错上面的错误. 如:在网页的Te ...

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

    由于在.net中,Request时出现有HTML或Javascript等字符串时,系统会认为是危险性值.立马报出“从客户端 中检测到有潜在危险的Request.Form值”这样的错. 解决方案一:   ...

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

    一.从客户端中检测到有潜在危险的request.form值 当页面编辑或运行提交时,出现“从客户端中检测到有潜在危险的request.form值”问题,该怎么办呢?如下图所示: 下面博主汇总出现这种错 ...

  6. [转]从客户端中检测到有潜在危险的 Request.Form 值。

    参考资料: ASP.NET 4.0中使用FreeTextBox和FCKeditor遇到安全问题警告的解决办法关于问题出现的原因说的很清楚 引言 本人在.NET 4.0+VS2010环境下调试一个ASP ...

  7. 【记录】从客户端()中检测到有潜在危险的 Request.Path 值。

    从客户端()中检测到有潜在危险的 Request.Path 值. 错误信息: Application_Error Url: www.cnblogs.com/%E5%BA%.... UserAgent: ...

  8. 从客户端(&)中检测到有潜在危险的 Request.Path 值

    首先,这个问题出现在 ASP.NET MVC 应用程序中,所以下面的解决方式都是在这个环境下. 关于这个问题,网上又很多的答案,当时也搜了一些: A potentially dangerous Req ...

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

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

随机推荐

  1. CSS单行超长溢出如何处理?表格某一行某一列超长如何处理?

    表格某一行某一列超长 截取一部分 并增加...效果 增加titile ======================================================== <td t ...

  2. Heap堆

    #pragma once#include<iostream>using namespace std;#include<vector> template<class T&g ...

  3. win10安装express遇到的问题。

    昨天在centos上成功安装了express,今天想在win10上面装一个,死活安装不了 express可以正常安装,但是每次安装express-generator的时候一直报错 659 silly ...

  4. Jsp页面跳转和js控制页面跳转的几种方法

    Jsp 页面跳转的几种方法 1. RequestDispatcher.forward() 在服务器端起作用,当使用forward()时,Servlet engine传递HTTP请求从当前的Servle ...

  5. 某个js插件没有执行

    今天遇到一个奇怪的问题,bootstrap-table插件根本没有执行.后来发现用于执行bootstrap启动的js文件出错.导致这个不能顺利执行错误js中的程序.一般导致插件不能顺利执行有两个原因. ...

  6. Kafka:Consumer

    1.预览 1.1 消费者组(Consumer Group) 一个consumer group可能有若干个consumer实例 同一个group里面,topic的每条信息只能被发送到group下的一个c ...

  7. 红米手机3S 3X简单卡刷开发版获得ROOT权限的方法

    小米的机器不同手机型号一般小米论坛都提供两个不同的系统,即分别是稳定版和开发版,稳定版没有提供root权限管理,开发版中就支持了root权限,很多情况下我们需要使用的一些功能强大的APP,都需要在ro ...

  8. ocr 资源

    1. PIL 在图片上添加中文 https://blog.csdn.net/m0_37606112/article/details/78511381 2 .Chinese Text in the Wi ...

  9. fix the issue that disk space is not the size that aws ec2 have.

    在申请aws ec2时,按照向导,在选择存储的时候默认硬盘大小是 8 G,这时候可以根据自己的需要输入一个合适的数字,例如100.完成向导并启动ec2 instance 后登陆机器.使用命令: df ...

  10. (转)Linux运维MySQL必会面试题100道

    老男孩教育Linux运维班MySQL必会面试题100道 (1)基础笔试命令考察 (要求:每两个同学一组,一个口头考,一个上机实战作答,每5个题为一组,完成后换位) 1.开启MySQL服务 2.检测端口 ...