通用javascript代码判断版本号是否在版本范围之间
通用判断版本号是否在两者之间,也可以搭配判断是否大于某版本号,小于取反即可
PS:需确保版本规范一致,比如都是.号分割的n位版本号
varAPP={}; //判断指定版本是否在版本范围之间,需确保版本规范一致;比如(..,..,..) APP.betweenVersion=function(curr,start,end,separator){ if(curr==start||curr==end){ returntrue; } varseparator=separator||'.'; varcurr=curr.split(separator); varstart=start.split(separator); varend=end.split(separator); vargtStart=false; varltEnd=false; gtStart=APP.gtTargetVersion(APP.compareVersionEle(curr,start)); if(!gtStart){ returnfalse; } return!APP.gtTargetVersion(APP.compareVersionEle(curr,end)); }; APP.compareVersionEle=function(curr,target){ varlen=curr.length; vartemp=[]; varleft,right; for(vari=;i<len;i++){ left=+curr[i]; right=+target[i]; if(left==right){ temp.push(); }elseif(left>right){ temp.push(); }else{ temp.push(-); } } returntemp; }; APP.gtTargetVersion=function(arr){ varres=true; varcurr,next; for(vari=,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; } }elseif(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); returnres; } varres=APP.betweenVersion('...','...','...','.'); console.log(res);
当前项目有需要判断指定版本是否在两个版本之间这个需求,百度谷歌找了一圈,代码都是有局限性的,无法通用,甚至是一堆错误的东西转来转去......
当前方法有两个要点,一个是需要将切开的版本号转为数值型数组,还有一个是对比大小的时候转为-101三个数值的对比,这样,无论隔开的版本号有多大,总体分为几段,都可以正确比对.
下面给大家分享javascript检测浏览器类型和版本的代码
对象/特征检测法
该方法是一种判断浏览器能力(而非浏览器的确切型号)的通用方法。大部分JS专家认为这个方法最合适,因为他们认为按照该方法所编写的脚本是经得起未来考验的。
//获取IE浏览器的版本号 //返回数值,显示IE的主版本号 functiongetIEVer(){ varua=navigator.userAgent;//获取用户端信息 varb=ua.indexOf("MSIE");//检测特殊字符串"MSIE"的位置 if(b<0){ return0; } returnparseFloat(ua.substring(b+5,ua.indexOf(";",b)));//截取版本号字符串,并转换为数值 } alert(getIEVer());//返回数值8(我的IE8)
如果更关注浏览器的能力而不在乎它实际的身份,就可以使用这种方法。
user-agent字符串检测法
user-agent字符串提供了关于Web浏览器的大量信息,包括浏览器的名称和版本。
varua=navigator.userAgent.toLowerCase();//获取用户端信息 varinfo={ 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就已经满足了.那么我们可以这样做:
varisIE=(navigator.appName=="MicrosoftInternetExplorer");
判断IE远远不止上面一种方法,可以使用IE更多特有的东西,如:window.ActiveXObject,document.all等,这些都属于对象/特征检测法了!通常要在不同的浏览器上写不同的样式(因为IE样式解析也各有不同),那就得判断版本了.可以这样做
//获取IE浏览器的版本号 //返回数值,显示IE的主版本号 functiongetIEVer(){ varua=navigator.userAgent;//获取用户端信息 varb=ua.indexOf("MSIE");//检测特殊字符串"MSIE"的位置 if(b<0){ return0; } returnparseFloat(ua.substring(b+5,ua.indexOf(";",b)));//截取版本号字符串,并转换为数值 } alert(getIEVer());//返回数值7
检测操作系统:
varisWin=(navigator.userAgent.indexOf("Win")!=-1);//如果是Windows系统,则返回true varisMac=(navigator.userAgent.indexOf("Mac")!=-1);//如果是Macintosh系统,则返回true varisUnix=(navigator.userAgent.indexOf("X11")!=-1);//如果是Unix系统,则返回true varisLinux=(navigator.userAgent.indexOf("Linux")!=-1);//如果是Linux系统,则返回true