通用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 相关文章推荐
非常不错的功能强大代码简单的管理菜单美化版
Jul 09 Javascript
jquery URL参数判断,确定菜单样式
May 31 Javascript
10个基于Jquery的幻灯片插件教程
Oct 29 Javascript
javascript开发技术大全-第3章 js数据类型
Jul 03 Javascript
Jquery写一个鼠标拖动效果实现原理与代码
Dec 24 Javascript
JQuery DataTable删除行后的页面更新利用Ajax解决
May 17 Javascript
jquery slibings选取同级其他元素的实现代码
Nov 15 Javascript
原生js和jQuery随意改变div属性style的名称和值
Oct 22 Javascript
JS实现支持多选的遍历下拉列表代码
Aug 20 Javascript
解决低版本的浏览器不支持es6的import问题
Mar 09 Javascript
vue-cli的build的文件夹下没有dev-server.js文件配置mock数据的方法
Apr 17 Javascript
JS实现烟花爆炸效果
Mar 10 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 5.3新特性命名空间规则解析及高级功能
2010/03/11 PHP
PHP extract 将数组拆分成多个变量的函数
2010/06/30 PHP
php版银联支付接口开发简明教程
2016/10/14 PHP
PHP实现向关联数组指定的Key之前插入元素的方法
2017/06/06 PHP
PHP7匿名类的用法示例
2019/04/05 PHP
php中关于换行的实例写法
2019/09/26 PHP
php-fpm超时时间设置request_terminate_timeout资源问题分析
2019/09/27 PHP
PHP 计算两个时间段之间交集的天数示例
2019/10/24 PHP
jquery实现pager控件示例
2014/04/09 Javascript
javascript为下拉列表动态添加数据项
2014/05/23 Javascript
使用JQuery实现的分页插件分享
2015/11/05 Javascript
bootstrap手风琴折叠示例代码分享
2017/05/22 Javascript
JavaScript执行环境及作用域链实例分析
2018/08/01 Javascript
vue 中引用gojs绘制E-R图的方法示例
2018/08/24 Javascript
Vue开发Html5微信公众号的步骤
2019/04/11 Javascript
vue实现登录拦截
2020/06/29 Javascript
Vue使用预渲染代替SSR的方法
2020/07/02 Javascript
详解vue路由
2020/08/05 Javascript
vue 导出文件,携带请求头token操作
2020/09/10 Javascript
python求斐波那契数列示例分享
2014/02/14 Python
详解Python当中的字符串和编码
2015/04/25 Python
在Python中操作列表之List.append()方法的使用
2015/05/20 Python
matplotlib常见函数之plt.rcParams、matshow的使用(坐标轴设置)
2021/01/05 Python
HTML5给汉字加拼音收起展开组件的实现代码
2020/04/08 HTML / CSS
EVE LOM英国官网:全世界最好的洁面膏
2017/10/30 全球购物
伦敦剧院门票:London Theatre Direct
2018/11/21 全球购物
英国最受欢迎的价格比较网站之一:MoneySuperMarket
2018/12/19 全球购物
Hush Puppies澳大利亚官网:舒适的男女休闲和正装鞋
2019/08/24 全球购物
英国设计师泳装、沙滩装和比基尼在线精品店:Beach Cafe
2019/08/28 全球购物
波兰快递服务:Globkurier.pl
2019/11/08 全球购物
将"引用"作为函数返回值类型的格式、好处和需要遵守的规则
2016/02/09 面试题
学生实习证明范文
2014/09/28 职场文书
写给领导的感谢信
2015/01/22 职场文书
Redis RDB技术底层原理详解
2021/09/04 Redis
css filter和getUserMedia的联合使用
2022/02/24 HTML / CSS
利用Python多线程实现图片下载器
2022/03/25 Python