通用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 相关文章推荐
javascript 当前日期转化为中文的实现代码
May 13 Javascript
通过百度地图获取公交线路的站点坐标的js代码
May 11 Javascript
js 操作select与option(示例讲解)
Dec 20 Javascript
JavaScript使用addEventListener添加事件监听用法实例
Jun 01 Javascript
javascript创建对象的几种模式介绍
May 06 Javascript
AngularJs IE Compatibility 兼容老版本IE
Sep 01 Javascript
js完整倒计时代码分享
Sep 18 Javascript
js仿小米手机上下滑动效果
Feb 05 Javascript
JS与jQuery实现子窗口获取父窗口元素值的方法
Apr 17 jQuery
Javascript实现从小到大的数组转换成二叉搜索树
Jun 13 Javascript
layui lay-verify form表单自定义验证规则详解
Sep 18 Javascript
vue循环中点击选中再点击取消(单选)的实现
Sep 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位运算的简单权限设计
2013/06/30 PHP
学习php中的正则表达式
2014/08/17 PHP
总结PHP中数值计算的注意事项
2016/08/14 PHP
Git命令之分支详解
2021/03/02 PHP
超级有用的13个基于jQuery的内容滚动插件和教程
2011/07/31 Javascript
js实现按钮加背景图片常用方法
2014/11/01 Javascript
jQuery菜单插件superfish使用指南
2015/04/21 Javascript
JavaScript实现图片滑动切换的代码示例分享
2016/03/06 Javascript
JQuery fileupload插件实现文件上传功能
2016/03/18 Javascript
bootstrap导航条实现代码
2016/12/28 Javascript
jQuery动态添加.active 实现导航效果代码思路详解
2017/08/29 jQuery
jQuery+SpringMVC中的复选框选择与传值实例
2018/01/08 jQuery
vue scroller返回页面记住滚动位置的实例代码
2018/01/29 Javascript
JS使用正则表达式获取小括号、中括号及花括号内容的方法示例
2018/06/01 Javascript
详解Vue SPA项目优化小记
2018/07/03 Javascript
js中位运算的运用实例分析
2018/12/11 Javascript
jQuery实现侧边栏隐藏与显示的方法详解
2018/12/22 jQuery
详解Vue demo实现商品列表的展示
2019/05/07 Javascript
js设计模式之代理模式及订阅发布模式实例详解
2019/08/15 Javascript
vue路由的配置和页面切换详解
2020/09/09 Javascript
[01:09]DOTA2次级职业联赛 - 99战队宣传片
2014/12/01 DOTA
python使用ctypes模块调用windowsapi获取系统版本示例
2014/04/17 Python
numpy使用技巧之数组过滤实例代码
2018/02/03 Python
一个简单的python爬虫程序 爬取豆瓣热度Top100以内的电影信息
2018/04/17 Python
Python Web编程之WSGI协议简介
2018/07/18 Python
对PyQt5中的菜单栏和工具栏实例详解
2019/06/20 Python
python requests模拟登陆github的实现方法
2019/12/26 Python
一篇文章带你学习CSS3图片边框
2020/11/04 HTML / CSS
Farfetch中文官网:奢侈品牌时尚购物平台
2020/03/15 全球购物
拉夫劳伦爱尔兰官方网站:Ralph Lauren爱尔兰
2020/04/10 全球购物
最美乡村医生事迹材料
2014/06/02 职场文书
幼儿园中班区域活动总结
2014/07/09 职场文书
房屋登记授权委托书范本
2014/10/09 职场文书
三提三创主题教育活动查摆整改措施
2014/10/25 职场文书
田径运动会广播稿
2015/08/19 职场文书
海弦WR-800F
2022/04/05 无线电