通用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 相关文章推荐
基于Asp.net与Javascript控制的日期控件
May 22 Javascript
JQUBAR1.1 jQuery 柱状图插件发布
Nov 28 Javascript
JS在textarea光标处插入文本的小例子
Mar 22 Javascript
JavaScript 表单处理实现代码
Apr 13 Javascript
网络传输协议(http协议)
Nov 18 Javascript
jQuery延迟执行的实现方法
Dec 21 Javascript
jQuery实现三级联动效果
Mar 02 Javascript
详解Angular.js数据绑定时自动转义html标签及内容
Mar 30 Javascript
jquery实现下拉菜单的手风琴效果
Jul 23 jQuery
JS 实现banner图片轮播效果(鼠标事件)
Aug 04 Javascript
vue 组件高级用法实例详解
Apr 11 Javascript
记一次用vue做的活动页的方法步骤
Apr 11 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
wordpress之wp-settings.php
2007/08/17 PHP
php 编写安全的代码时容易犯的错误小结
2010/05/20 PHP
php中mysql操作buffer用法详解
2015/03/19 PHP
分享PHP守护进程类
2015/12/30 PHP
基于jquery自己写tab滑动门(通用版)
2012/10/30 Javascript
js鼠标点击事件在各个浏览器中的写法及Event对象属性介绍
2013/01/24 Javascript
JS获得URL超链接的参数值实例代码
2013/06/21 Javascript
nodejs npm package.json中文文档
2014/09/04 NodeJs
用JavaScript来美化HTML的select标签的下拉列表效果
2015/11/17 Javascript
浅析JS异步加载进度条
2016/05/05 Javascript
js中用cssText设置css样式的简单方法
2016/09/19 Javascript
JS实现搜索框文字可删除功能
2016/12/28 Javascript
使用get方式提交表单在地址栏里面不显示提交信息
2017/02/21 Javascript
vue.js删除列表中的一行
2018/06/30 Javascript
函数式编程入门实践(一)
2019/04/20 Javascript
element实现合并单元格通用方法
2019/11/13 Javascript
vue中实现点击变成全屏的多种方法
2020/09/27 Javascript
简单使用Python自动生成文章
2014/12/25 Python
深入学习python的yield和generator
2016/03/10 Python
Python学习思维导图(必看篇)
2017/06/26 Python
tensorflow实现softma识别MNIST
2018/03/12 Python
Python生成任意范围任意精度的随机数方法
2018/04/09 Python
python实现矩阵打印
2019/03/02 Python
Python 中Django安装和使用教程详解
2019/07/03 Python
python多继承(钻石继承)问题和解决方法简单示例
2019/10/21 Python
windows下的pycharm安装及其设置中文菜单
2020/04/23 Python
Python命名空间namespace及作用域原理解析
2020/06/05 Python
基于Python爬虫采集天气网实时信息
2020/06/05 Python
如何用python开发Zeroc Ice应用
2021/01/29 Python
X/HTML5 和 XHTML2
2008/10/17 HTML / CSS
html5的自定义data-*属性与jquery的data()方法的使用
2014/07/02 HTML / CSS
Nike比利时官网:Nike.com (BE)
2019/02/07 全球购物
电子商务专业实习生自我鉴定
2013/09/24 职场文书
英语专业推荐信
2013/11/16 职场文书
公司搬迁通知
2015/04/20 职场文书
Python Pandas知识点之缺失值处理详解
2021/05/11 Python