js如何判断不同系统的浏览器类型


Posted in Javascript onOctober 28, 2013
function Env(){ 
var ua=navigator.userAgent.toLowerCase(); 
function check(r){ 
return r.test(ua); 
} 
return { 
//判断环境,操作系统、浏览器、是否是https连接等 
DOC : document, 
isStrict : DOC.compatMode == "CSS1Compat" , 
isOpera : check(/opera/) , 
isChrome : check(/\bchrome\b/) , 
isWebKit : check(/webkit/) , 
isSafari : !check(/\bchrome\b/)&& check(/safari/) , 
isSafari2 : !check(/\bchrome\b/)&& check(/safari/)&& check(/applewebkit\/4/), // unique to Safari 2 
isSafari3 : !check(/\bchrome\b/)&& check(/safari/)&& check(/version\/3/), 
isSafari4 : !check(/\bchrome\b/)&& check(/safari/)&& check(/version\/4/), 
isIE : !check(/opera/) && check(/msie/) , 
isIE7 : !check(/opera/) && check(/msie/)&& check(/msie 7/) , 
isIE8 : !check(/opera/) && check(/msie/)&& check(/msie 8/) , 
isIE6 : !check(/opera/) && check(/msie/)&&!check(/msie 7/)&& !check(/msie 8/), 
isGecko : !check(/webkit/)&& check(/gecko/), 
isGecko2 : check(/webkit/)&& check(/rv:1\.8/), 
isGecko3 : check(/webkit/)&& check(/rv:1\.9/), 
isBorderBox : !check(/opera/) && check(/msie/)&& DOC.compatMode != "CSS1Compat", 
isWindows : check(/windows|win32/), 
isMac : check(/macintosh|mac os x/), 
isAir : check(/adobeair/), 
isLinux : check(/linux/), 
isSecure : /^https/i.test(window.location.protocol), 
/** 
* 是否为空,如果允许allowBlank=true,则当v=''时返回true 
*/ 
isEmpty : function(v, allowBlank){ 
return v === null || v === undefined || ((this.isArray(v) && !v.length)) || (!allowBlank ? v === '' : false); 
}, /** 
* 是否为数组类型 
*/ 
isArray : function(v){ 
return toString.apply(v) === '[object Array]'; 
}, 
/** 
* 是否为日期类型 
*/ 
isDate : function(v){ 
return toString.apply(v) === '[object Date]'; 
}, 
/** 
* 是否为Object类型 
*/ 
isObject : function(v){ 
return !!v && Object.prototype.toString.call(v) === '[object Object]'; 
}, 
/** 
* 判断是否是函数 
*/ 
isFunction : function(v){ 
return toString.apply(v) === '[object Function]'; 
}, 
/** 
* 判断是否为数字 
*/ 
isNumber : function(v){ 
return typeof v === 'number' && isFinite(v); 
}, 
/** 
* 判断字符串类型 
*/ 
isString : function(v){ 
return typeof v === 'string'; 
}, 
/** 
* 判断布尔类型 
*/ 
isBoolean : function(v){ 
return typeof v === 'boolean'; 
}, 
/** 
* 判断是否为dom元素 
*/ 
isElement : function(v) { 
return !!v && v.tagName; 
}, 
/** 
* 判断是否已定义 
*/ 
isDefined : function(v){ 
return typeof v !== 'undefined'; 
} 
}

然后var env = env(); 用env. 来取的所需的类型。
Javascript 相关文章推荐
文字不间断滚动(上下左右)实例代码
Apr 21 Javascript
js键盘事件的keyCode
Jul 29 Javascript
jQuery中Find选择器用法示例
Sep 21 Javascript
JavaScript体验异步更好的解决办法
Jan 08 Javascript
彻底理解js面向对象之继承
Feb 04 Javascript
vue addRoutes实现动态权限路由菜单的示例
May 15 Javascript
详解.vue文件中style标签的几个标识符
Jul 17 Javascript
bootstrap table.js动态填充单元格数据的多种方法
Jul 18 Javascript
Node.js安装详细步骤教程(Windows版)详解
Sep 01 Javascript
vue.config.js中配置Vue的路径别名的方法
Feb 11 Javascript
用vue写一个日历
Nov 02 Javascript
一篇文章了解正则表达式的替换技巧
Feb 24 Javascript
使用js的replace()方法查找字符示例代码
Oct 28 #Javascript
js中的replace方法使用介绍
Oct 28 #Javascript
js之事件冒泡和事件捕获详细介绍
Oct 28 #Javascript
javascript抖动元素的小例子
Oct 28 #Javascript
replace()方法查找字符使用示例
Oct 28 #Javascript
JS 如何获取radio选中后的值及不选择取radio的值
Oct 28 #Javascript
Document:getElementsByName()使用方法及示例
Oct 28 #Javascript
You might like
比较strtr, str_replace和preg_replace三个函数的效率
2013/06/26 PHP
PHP实现的增强性mhash函数
2015/05/27 PHP
Zend Framework过滤器Zend_Filter用法详解
2016/12/09 PHP
基于php流程控制语句和循环控制语句(讲解)
2017/10/23 PHP
Extjs中RowExpander控件的默认展开问题示例探讨
2014/01/24 Javascript
JS实现文字链接感应鼠标淡入淡出改变颜色的方法
2015/02/26 Javascript
JQuery中$.each 和$(selector).each()的区别详解
2015/03/13 Javascript
基于dropdown.js实现的两款美观大气的二级导航菜单
2015/09/02 Javascript
jQuery简单实现列表隐藏和显示效果示例
2016/09/12 Javascript
jQuery事件对象总结
2016/10/17 Javascript
浅谈EasyUi ComBotree树修改 父节点选择的问题
2016/11/07 Javascript
JavaScript实现获取远程的html到当前页面中
2017/03/26 Javascript
详解AngularJS1.6版本中ui-router路由中/#!/的解决方法
2017/05/22 Javascript
JS获取一个表单字段中多条数据并转化为json格式
2017/10/17 Javascript
js中bool值的转换及“&&”、“||”、 “!!”详解
2017/12/21 Javascript
vue实现图片加载完成前的loading组件方法
2018/02/05 Javascript
jQuery使用动画队列自定义动画操作示例
2018/06/16 jQuery
jQuery访问json文件中数据的方法示例
2019/01/28 jQuery
vue中使用mxgraph的方法实例代码详解
2019/05/17 Javascript
原生js代码能实现call和bind吗
2019/07/31 Javascript
详解使用JWT实现单点登录(完全跨域方案)
2019/08/02 Javascript
解决vue.js中settimeout遇到的问题(时间参数短效果不稳定)
2020/07/21 Javascript
Python配置文件解析模块ConfigParser使用实例
2015/04/13 Python
深入解析Python中的集合类型操作符
2015/08/19 Python
PyQt5组件读取参数的实例
2019/06/25 Python
谈谈Python:为什么类中的私有属性可以在外部赋值并访问
2020/03/05 Python
django 解决扩展自带User表遇到的问题
2020/05/14 Python
Python爬虫过程解析之多线程获取小米应用商店数据
2020/11/14 Python
网页中的电话号码如何实现一键直呼效果_附示例
2016/03/15 HTML / CSS
投资协议书范本
2014/04/21 职场文书
中国梦演讲稿范文
2014/08/28 职场文书
部门主管竞聘书
2015/09/15 职场文书
我的暑假生活作文(五年级)范文
2019/08/07 职场文书
Pytest实现setup和teardown的详细使用详解
2021/04/17 Python
Python 中面向接口编程
2022/05/20 Python
PHP 时间处理类Carbon
2022/05/20 PHP