通用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实现倒计时按钮的实现代码
Mar 23 Javascript
使用js对select动态添加和删除OPTION示例代码
Aug 12 Javascript
javascript alert乱码的解决方法
Nov 05 Javascript
Jquery easyui 实现动态树
Nov 17 Javascript
js计算时间差代码【包括计算,天,时,分,秒】
Apr 26 Javascript
详解JavaScript时间处理之几个月前或几个月后的指定日期
Dec 21 Javascript
xmlplus组件设计系列之按钮(2)
Apr 26 Javascript
jquery平滑滚动到顶部插件使用详解
May 08 jQuery
微信小程序中吸底按钮适配iPhone X方案
Nov 29 Javascript
优雅地使用loading(推荐)
Apr 20 Javascript
JS实现扫码枪扫描二维码功能
Jan 03 Javascript
JS中多层次排序算法的实现代码
Jan 06 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
php5.5新数组函数array_column使用
2013/07/08 PHP
php实现的click captcha点击验证码类实例
2014/09/23 PHP
php一行代码获取文件后缀名实例分析
2014/11/12 PHP
php遍历树的常用方法汇总
2015/06/18 PHP
PHP模拟asp中response类实现方法
2015/08/08 PHP
PHP编程实现计算抽奖概率算法完整实例
2017/08/09 PHP
PHP如何使用JWT做Api接口身份认证的实现
2020/02/03 PHP
学习ExtJS border布局
2009/10/08 Javascript
网页上的Javascript编辑器和代码格式化
2010/04/25 Javascript
jquery图片放大镜功能的实例代码
2013/03/26 Javascript
借助JavaScript脚本判断浏览器Flash Player信息的方法
2014/07/09 Javascript
jQuery 动态云标签插件
2014/11/11 Javascript
JS运动相关知识点小结(附弹性运动示例)
2016/01/08 Javascript
JQuery之proxy实现绑定代理方法
2016/08/01 Javascript
jQuery.form.js插件不能解决连接超时(timeout)的原因分析及解决方法
2016/10/14 Javascript
JS中实现函数return多个返回值的实例
2017/02/21 Javascript
vue.js项目中实用的小技巧汇总
2017/11/29 Javascript
使用Vue组件实现一个简单弹窗效果
2018/04/23 Javascript
详解Puppeteer 入门教程
2018/05/09 Javascript
vue filters的使用详解
2018/06/11 Javascript
JS中Promise函数then的奥秘探究
2018/07/30 Javascript
小程序自定义单页面、全局导航栏的实现代码
2019/03/15 Javascript
WebGL three.js学习笔记之阴影与实现物体的动画效果
2019/04/25 Javascript
Python中为feedparser设置超时时间避免堵塞
2014/09/28 Python
Python中isnumeric()方法的使用简介
2015/05/19 Python
django 通过URL访问上传的文件方法
2019/07/28 Python
详解python内置模块urllib
2020/09/09 Python
python脚本定时发送邮件
2020/12/22 Python
在canvas上实现元素图片镜像翻转动画效果的方法
2018/03/20 HTML / CSS
一个精品风格的世界:Atterley
2019/05/01 全球购物
软件工程师面试题
2012/06/25 面试题
实习生单位鉴定意见
2013/12/04 职场文书
记帐员岗位责任制
2014/02/08 职场文书
俄语专业职业生涯规划
2014/02/26 职场文书
后勤管理员岗位职责
2014/08/27 职场文书
大一新生检讨书
2014/10/29 职场文书