通用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 相关文章推荐
快速保存网页中所有图片的方法
Jun 23 Javascript
EasyUi tabs的高度与宽度根据IE窗口的变化自适应代码
Oct 26 Javascript
js兼容的placeholder属性详解
Aug 18 Javascript
node.js中的path.join方法使用说明
Dec 08 Javascript
js实现进度条的方法
Feb 13 Javascript
jQuery弹出遮罩层效果完整示例
Sep 13 Javascript
Javascript this 函数深入详解
Dec 13 Javascript
vue组件中点击按钮后修改输入框的状态实例代码
Apr 14 Javascript
Angularjs 双向绑定时字符串的转换成数字类型的问题
Jun 12 Javascript
JavaScript中常见内置函数用法示例
May 14 Javascript
使用JS判断移动端手机横竖屏状态
Jul 30 Javascript
react 父子组件之间通讯props
Sep 08 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
php header()函数使用说明
2008/07/10 PHP
PHP中JSON的应用技巧
2015/10/10 PHP
PHP面向对象程序设计方法实例详解
2016/12/24 PHP
php设计模式之装饰模式应用案例详解
2019/06/17 PHP
jQuery Validation插件remote验证方式的Bug解决
2010/07/01 Javascript
javascript嵌套函数和在函数内调用外部函数的区别分析
2016/01/31 Javascript
JavaScript实现按键精灵的原理分析
2017/02/21 Javascript
Angularjs分页查询的实现
2017/02/24 Javascript
Angular之指令Directive用法详解
2017/03/01 Javascript
jQuery 循环遍历改变a标签的href(实例讲解)
2017/07/12 jQuery
JS实现碰撞检测的方法分析
2018/01/19 Javascript
Vue中的scoped实现原理及穿透方法
2018/05/15 Javascript
Angular项目如何升级至Angular6步骤全纪录
2018/09/03 Javascript
js仿京东放大镜效果
2020/08/09 Javascript
js实现批量删除功能
2020/08/27 Javascript
[11:12]2018DOTA2国际邀请赛寻真——绿色长城OpTic
2018/08/10 DOTA
python基于xmlrpc实现二进制文件传输的方法
2015/06/02 Python
Python中Django 后台自定义表单控件
2017/03/28 Python
python中requests小技巧
2017/05/10 Python
python3实现TCP协议的简单服务器和客户端案例(分享)
2017/06/14 Python
MySQL适配器PyMySQL详解
2017/09/20 Python
python 多个参数不为空校验方法
2019/02/14 Python
python and or用法详解
2019/06/26 Python
Everlast官网:拳击、综合格斗和健身相关的体育用品
2020/08/03 全球购物
科颜氏印度官网:Kiehl’s印度
2021/02/20 全球购物
西部世纪面试题
2014/12/05 面试题
数据库测试通常都包括哪些方面
2015/11/30 面试题
美术教学感言
2014/02/22 职场文书
孝敬父母的演讲稿
2014/05/14 职场文书
保卫钓鱼岛口号
2014/06/20 职场文书
政风行风自查自纠报告
2014/10/21 职场文书
学校元旦晚会开场白
2014/12/14 职场文书
员工离职证明范本
2015/06/12 职场文书
新郎父母婚礼致辞
2015/07/27 职场文书
新手初学Java网络编程
2021/07/07 Java/Android
Win Server2016远程桌面如何允许多用户同时登录
2022/06/10 Servers