js判断操作系统、判断浏览器类型、判断数据类型权威方法--extjs源码

来源:互联网 发布:免费开源的实时数据库 编辑:程序博客网 时间:2024/05/22 08:21

在我们日常js编程中经常要用的判断操作系统、判断浏览器类型、判断数据类型等等的操作,一般我们会百度一下,找个方法测试通过,然后就用上了。但是心里面还是有点打鼓,这个方法能在所有情况下运行正常吗??这样简单判断能过滤所有情况吗?随便搜到的方法,还真不敢打包票。

下面的代码是我从extjs3.1的原代码中查的判断方法,大家都知道,像extjs、jQuery这样的js库兼容性还是比较好的,所有库里使用的判断方法也算一个相对来说比较权威的判断方法吧!

我简单的封装成了一个类,如果你只是简单使用其中的个别判断,可以直接copy其中的方法,如果多次使用,则可以直接下载这个源码导入到你的页面,然后evn=new Env();然后这个类就可以到处使用了。

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 : !isChrome && check(/safari/),        isSafari2 : isSafari && check(/applewebkit\/4/), // unique to Safari 2        isSafari3 : isSafari && check(/version\/3/),        isSafari4 : isSafari && check(/version\/4/),        isIE : !isOpera && check(/msie/),        isIE7 : isIE && check(/msie 7/),        isIE8 : isIE && check(/msie 8/),        isIE6 : isIE && !isIE7 && !isIE8,        isGecko : !isWebKit && check(/gecko/),        isGecko2 : isGecko && check(/rv:1\.8/),        isGecko3 : isGecko && check(/rv:1\.9/),        isBorderBox : isIE && !isStrict,        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';        }}


 

--------------------------

如果你对java、swing、各种框架、javascript、css、linux、数据库编程等知识很感兴趣,或者正在从事这些工作,

欢迎加入我的qq技术交流群:java不瘸腿(219345774)