通用javascript代码判断版本号是否在版本范围之间


Posted in Javascript onNovember 29, 2015

通用判断版本号是否在两者之间,也可以搭配判断是否大于某版本号,小于取反即可

PS:需确保版本规范一致,比如都是.号分割的n位版本号

var APP = {};
   //判断指定版本是否在版本范围之间,需确保版本规范一致;比如 (..,..,..)
   APP.betweenVersion = function(curr,start,end,separator){
     if(curr == start || curr == end){
       return true;
     }
     var separator = separator || '.';
     var curr = curr.split(separator);
     var start = start.split(separator);
     var end = end.split(separator);    
     var gtStart = false;
     var ltEnd = false;
 
     gtStart = APP.gtTargetVersion( APP.compareVersionEle(curr,start) );
 
     if(!gtStart){
       return false;
     }
     return !APP.gtTargetVersion( APP.compareVersionEle(curr,end) );
 
   };
   APP.compareVersionEle = function(curr,target){
     var len = curr.length;
     var temp = [];
     var left,right;
     for(var i=;i<len;i++){
 
       left = +curr[i];
       right = +target[i];
 
       if(left == right){
         temp.push();
       }else if(left > right){
         temp.push();
       }else{
         temp.push(-);
       }
     }
     return temp;
   };
   APP.gtTargetVersion = function(arr){
     var res = true;
     var curr,next;
     for(var i=,len=arr.length;i<len;i++){
       curr = arr[i];
       next = arr[i+];
       if( curr>next ){
         if(curr == ){
           res = false;
           break;
         }
         if(curr == ){
           res = true;
           break;
         }        
       }else if(curr == next){
         if(curr == -){
           res = false;
           break;
         }
         if(curr == ){
           res = true;
           break;
         }
       }else{
         if(curr == -){
           res = false;
           break;
         }
         if(curr == ){
           res = true;
           break;
         }
       }
     }
     // console.log(res);
     return res;
   }
   var res = APP.betweenVersion('...','...','...','.');
 console.log(res);

当前项目有需要判断指定版本是否在两个版本之间这个需求,百度谷歌找了一圈,代码都是有局限性的,无法通用,甚至是一堆错误的东西转来转去......

当前方法有两个要点,一个是需要将切开的版本号转为数值型数组,还有一个是对比大小的时候转为 -1 0 1 三个数值的对比,这样,无论隔开的版本号有多大,总体分为几段,都可以正确比对.

下面给大家分享javascript 检测浏览器类型和版本的代码

对象/特征检测法

该方法是一种判断浏览器能力(而非浏览器的确切型号)的通用方法。大部分JS专家认为这个方法最合适,因为他们认为按照该方法所编写的脚本是经得起未来考验的。

//获取IE浏览器的版本号
//返回数值,显示IE的主版本号
function getIEVer() {
 var ua = navigator.userAgent; //获取用户端信息
 var b = ua.indexOf("MSIE "); //检测特殊字符串"MSIE "的位置
 if (b < 0) {
  return 0;
 }
 return parseFloat(ua.substring(b + 5, ua.indexOf(";", b))); //截取版本号字符串,并转换为数值
}
alert(getIEVer()); //返回数值8(我的IE8)

如果更关注浏览器的能力而不在乎它实际的身份,就可以使用这种方法。

user-agent字符串检测法

user-agent字符串提供了关于Web浏览器的大量信息,包括浏览器的名称和版本。

var ua = navigator.userAgent.toLowerCase(); //获取用户端信息
var info = {
 ie: /msie/.test(ua) && !/opera/.test(ua),  //匹配IE浏览器
 op: /opera/.test(ua),  //匹配Opera浏览器
 sa: /version.*safari/.test(ua),  //匹配Safari浏览器
 ch: /chrome/.test(ua),  //匹配Chrome浏览器
 ff: /gecko/.test(ua) && !/webkit/.test(ua)  //匹配Firefox浏览器
};
(info.ie) && alert("IE浏览器");
(info.op) && alert("Opera浏览器");
(info.sa) && alert("Safari浏览器");
(info.ff) && alert("Firefox浏览器");
(info.ch) && alert("Chrome浏览器");

通常我们做得最多的,就是判断是否是IE了,其它几种浏览器一般都会符合标准.有些客户只需要符合IE和FF就已经满足了.那么我们可以这样做:

var isIE = (navigator.appName == "Microsoft Internet Explorer");

判断IE远远不止上面一种方法,可以使用IE更多特有的东西,如:window.ActiveXObject,document.all等,这些都属于对象/特征检测法了!通常要在不同的浏览器上写不同的样式(因为IE样式解析也各有不同),那就得判断版本了.可以这样做

//获取IE浏览器的版本号
//返回数值,显示IE的主版本号
function getIEVer() {
 var ua = navigator.userAgent; //获取用户端信息
 var b = ua.indexOf("MSIE "); //检测特殊字符串"MSIE "的位置
 if (b < 0) {
  return 0;
 }
 return parseFloat(ua.substring(b + 5, ua.indexOf(";", b))); //截取版本号字符串,并转换为数值
}
alert(getIEVer()); //返回数值7

检测操作系统:

var isWin = (navigator.userAgent.indexOf("Win") != -1); //如果是Windows系统,则返回true
var isMac = (navigator.userAgent.indexOf("Mac") != -1);  //如果是Macintosh系统,则返回true
var isUnix = (navigator.userAgent.indexOf("X11") != -1);  //如果是Unix系统,则返回true
var isLinux = (navigator.userAgent.indexOf("Linux") != -1);  //如果是Linux系统,则返回true
Javascript 相关文章推荐
Jquery实战_读书笔记1—选择jQuery
Jan 22 Javascript
JS图片浏览组件PhotoLook的公开属性方法介绍和进阶实例代码
Nov 09 Javascript
boxy基于jquery的弹出层对话框插件扩展应用 弹出层选择器
Nov 21 Javascript
JavaScript中创建对象和继承示例解读
Feb 12 Javascript
jquery实现侧边弹出的垂直导航
Dec 09 Javascript
详解JavaScript中js对象与JSON格式字符串的相互转换
Feb 14 Javascript
js 函数式编程学习笔记
Mar 25 Javascript
ES6新特性五:Set与Map的数据结构实例分析
Apr 21 Javascript
原生JS实现的轮播图功能详解
Aug 06 Javascript
利用百度echarts实现图表功能简单入门示例【附源码下载】
Jun 10 Javascript
详解如何提升JSON.stringify()的性能
Jun 12 Javascript
VUE实现移动端列表筛选功能
Aug 23 Javascript
jQuery如何使用自动触发事件trigger
Nov 29 #Javascript
js性能优化技巧
Nov 29 #Javascript
javascript实现C语言经典程序题
Nov 29 #Javascript
JavaScript学习小结(7)之JS RegExp
Nov 29 #Javascript
整理Javascript基础入门学习笔记
Nov 29 #Javascript
jquery+json实现数据二级联动的方法
Nov 28 #Javascript
JavaScript实现页面跳转的几种常用方式
Nov 28 #Javascript
You might like
百事可乐也出咖啡了 双倍咖啡因双倍快乐
2021/03/03 咖啡文化
JoshChen_web格式编码UTF8-无BOM的小细节分析
2013/08/16 PHP
destoon利用Rewrite规则设置网站安全
2014/06/21 PHP
浅谈PHP中Stream(流)
2015/06/08 PHP
PHP输出图像imagegif、imagejpeg与imagepng函数用法分析
2016/11/14 PHP
php获取linux命令结果的实例
2017/03/13 PHP
thinkphp诸多限制条件下如何getshell详解
2020/12/09 PHP
让mayfish支持mysqli数据库驱动的实现方法
2010/05/22 Javascript
javaScript同意等待代码实现心得
2011/01/01 Javascript
原生javascript实现匀速运动动画效果
2016/02/26 Javascript
基于RequireJS和JQuery的模块化编程日常问题解析
2016/04/14 Javascript
jquery中live()方法和bind()方法区别分析
2016/06/23 Javascript
RequireJS多页面应用实例分析
2016/06/29 Javascript
jQuery中deferred对象使用方法详解
2016/07/14 Javascript
JS实现简单抖动效果
2017/06/01 Javascript
vue打包使用Nginx代理解决跨域问题
2018/08/27 Javascript
jQuery选择器之层次选择器用法实例分析
2019/02/19 jQuery
swiper4实现移动端导航栏tab滑动切换
2020/10/16 Javascript
JavaScript this关键字的深入详解
2021/01/14 Javascript
浅析python 内置字符串处理函数的使用方法
2014/06/11 Python
Python中用post、get方式提交数据的方法示例
2017/09/22 Python
基于Django框架利用Ajax实现点赞功能实例代码
2018/08/19 Python
解决win64 Python下安装PIL出错问题(图解)
2018/09/03 Python
对python中的高效迭代器函数详解
2018/10/18 Python
opencv实现静态手势识别 opencv实现剪刀石头布游戏
2019/01/22 Python
Python tkinter常用操作代码实例
2020/01/03 Python
Python远程方法调用实现过程解析
2020/07/28 Python
门卫岗位职责
2013/11/15 职场文书
人事部岗位职责范本
2014/03/05 职场文书
物理系毕业生自荐书
2014/06/13 职场文书
幼儿园中班区域活动总结
2014/07/09 职场文书
机电专业毕业生自我鉴定2014
2014/10/04 职场文书
贷款担保书
2015/01/20 职场文书
2015年度党员个人总结
2015/02/14 职场文书
高中生个性发展自我评价
2015/03/09 职场文书
MySQL日期时间函数知识汇总
2022/03/17 MySQL