javascript关于检测浏览器和操作系统的问题
1.方法学:
最好是检测浏览器的最小版本,这样才不会当版本升级之后不断添加新的内容进去。
理想的方式:
if(isMinIE5){
//code
}
直接检查准确的版本的缺点:
if(isMinIE5||isIE6){
//code
}
但是当版本升级之后加入升级到版本10:
if(isMinIE5||isIE6||isIE7||isIE8||isIE9||isIE10){
//code
}
相对于直接检测浏览器的最小版本更麻烦
2.具体的步奏以及注释:(user-agent方法)
var sUserAgent = navigator.userAgent; //将user-agent字符串保存到本地变量之中去
var fAppVersion = parseFloat(navigator.appVersion); //获得本地浏览器的版本
function compareVersions(sVersion1, sVersion2) { //用split()方法将两个版本号转换为数组,用 "."作为字符的分隔符
var aVersion1 = sVersion1.split(".");
var aVersion2 = sVersion2.split(".");
//保证两个版本的各个数字的长度也一样,否则在较短的一个版本末尾添加0至两个版本的长度相等
if (aVersion1.length > aVersion2.length) {
for (var i=0; i < aVersion1.length - aVersion2.length; i++) {
aVersion2.push("0");
}
} else if (aVersion1.length < aVersion2.length) {
for (var i=0; i < aVersion2.length - aVersion1.length; i++) {
aVersion1.push("0");
}
}
//比较两个版本的大小,版本1大于版本2返回1,反之,返回-1,相等返回0
for (var i=0; i < aVersion1.length; i++) {
if (aVersion1[i] < aVersion2[i]) {
return -1;
} else if (aVersion1[i] > aVersion2[i]) {
return 1;
}
}
return 0;
}
//检测Opera浏览器的版本
var isOpera = sUserAgent.indexOf("Opera") > -1;
var isMinOpera4 = isMinOpera5 = isMinOpera6 = isMinOpera7 = isMinOpera7_5 = false;
if (isOpera) {
var fOperaVersion;
if(navigator.appName == "Opera") {
fOperaVersion = fAppVersion; //Opera没有伪装的情况
} else {
var reOperaVersion = new RegExp("Opera (//d+//.//d+)");
reOperaVersion.test(sUserAgent);
fOperaVersion = parseFloat(RegExp["$1"]); //利用正则表达式判断伪装之后的真正版本号
}
isMinOpera4 = fOperaVersion >= 4;
isMinOpera5 = fOperaVersion >= 5;
isMinOpera6 = fOperaVersion >= 6;
isMinOpera7 = fOperaVersion >= 7;
isMinOpera7_5 = fOperaVersion >= 7.5;
}
var isKHTML = sUserAgent.indexOf("KHTML") > -1
|| sUserAgent.indexOf("Konqueror") > -1
|| sUserAgent.indexOf("AppleWebKit") > -1;
//检测Safari浏览器的版本
var isMinSafari1 = isMinSafari1_2 = false;
var isMinKonq2_2 = isMinKonq3 = isMinKonq3_1 = isMinKonq3_2 = false;
if (isKHTML) {
isSafari = sUserAgent.indexOf("AppleWebKit") > -1;
isKonq = sUserAgent.indexOf("Konqueror") > -1;
if (isSafari) {
var reAppleWebKit = new RegExp("AppleWebKit///(//d+(?://.//d*)?)");
reAppleWebKit.test(sUserAgent);
var fAppleWebKitVersion = parseFloat(RegExp["$1"]);
isMinSafari1 = fAppleWebKitVersion >= 85;
isMinSafari1_2 = fAppleWebKitVersion >= 124;
} else if (isKonq) {
var reKonq = new RegExp("Konqueror///(//d+(?://.//d+(?://.//d)?)?)");
reKonq.test(sUserAgent);
isMinKonq2_2 = compareVersions(RegExp["$1"], "2.2") >= 0;
isMinKonq3 = compareVersions(RegExp["$1"], "3.0") >= 0;
isMinKonq3_1 = compareVersions(RegExp["$1"], "3.1") >= 0;
isMinKonq3_2 = compareVersions(RegExp["$1"], "3.2") >= 0;
}
}
//检测IE浏览器的版本
var isIE = sUserAgent.indexOf("compatible") > -1
&& sUserAgent.indexOf("MSIE") > -1
&& !isOpera;
var isMinIE4 = isMinIE5 = isMinIE5_5 = isMinIE6 = false;
if (isIE) {
var reIE = new RegExp("MSIE (//d+//.//d+);");
reIE.test(sUserAgent);
var fIEVersion = parseFloat(RegExp["$1"]);
isMinIE4 = fIEVersion >= 4;
isMinIE5 = fIEVersion >= 5;
isMinIE5_5 = fIEVersion >= 5.5;
isMinIE6 = fIEVersion >= 6.0;
}
//检测Moz浏览器的版本
var isMoz = sUserAgent.indexOf("Gecko") > -1
&& !isKHTML;
var isMinMoz1 = sMinMoz1_4 = isMinMoz1_5 = false;
if (isMoz) {
var reMoz = new RegExp("rv:(//d+//.//d+(?://.//d+)?)");
reMoz.test(sUserAgent);
isMinMoz1 = compareVersions(RegExp["$1"], "1.0") >= 0;
isMinMoz1_4 = compareVersions(RegExp["$1"], "1.4") >= 0;
isMinMoz1_5 = compareVersions(RegExp["$1"], "1.5") >= 0;
}
转载于:https://www.cnblogs.com/lala314/p/5023233.html
javascript关于检测浏览器和操作系统的问题相关推荐
- JS window对象 Navigator对象 Navigator 对象包含有关浏览器的信息,通常用于检测浏览器与操作系统的版本。...
Navigator对象 Navigator 对象包含有关浏览器的信息,通常用于检测浏览器与操作系统的版本. 对象属性: 查看浏览器的名称和版本,代码如下: <script type=" ...
- 6、JavaScript进阶篇③——浏览器对象、Dom对象
一.浏览器对象 1. window对象 window对象是BOM的核心,window对象指当前的浏览器窗口. window对象方法: 注意:在JavaScript基础篇中,已讲解了部分属性,windo ...
- JavaScript进阶篇③ — 浏览器对象、Dom对象
一.浏览器对象 1. window对象 window对象是BOM的核心,window对象指当前的浏览器窗口. window对象方法: 注意:在JavaScript基础篇中,已讲解了部分属性,windo ...
- java缩放浏览器_javascript检测浏览器的缩放状态实现代码
摘要:这篇JavaScript栏目下的"javascript检测浏览器的缩放状态实现代码",介绍的技术点是"JavaScript.检测浏览器.缩放状态.实现代码.浏览器. ...
- 用于检测浏览器语言偏好的JavaScript
本文翻译自:JavaScript for detecting browser language preference [duplicate] This question already has an ...
- javascript检测浏览器类型和版本号(兼容各浏览器)
代码 1 from: http://www.webreference.com/tools/browser/javascript.html 2 http://browserspy.dk/browse ...
- javascript高级程序设计 --- 浏览器检测、操作系统检测、浏览器内核检测
JavaScript 包含一个名为 Navigator 的对象,它就可以完成上述的任务. Navigator 包含了有关访问者浏览器的信息,包括浏览器类型.版本等等 Navigator 对象 Java ...
- 《JavaScript高级程序设计》阅读笔记(十六):javascript检测浏览器和操作系统-detect.js...
检测浏览器的方式 1.对象特征检测法:判断浏览器能力的通用方法.如果更关注浏览器的能力而不在乎它的实际身份,就可以使用这种检测方法.常见的原生Ajax写法中就用这种方法来创建XMLHttpReques ...
- 【JavaScript】移动端扫描二维码检测浏览器(微信、支付宝、Safari、其他浏览器)
// 检测客户端类型 // 注意:19年6月份iPad出了专门的操作系统iPadOS // 它的userAgent中不是iPad,也没有下文中的mobile,而是Macintosh,类似Mac.需要兼 ...
最新文章
- 云解析DNS产品优势与应用场景
- 如何使用Java中的UTC或GMT获取当前日期和时间?
- 『奇葩问题集锦』Fedora ubuntu 下使用gulp 报错 Error: watch ENOSPC 解决方案
- [Abp 源码分析]DTO 自动验证
- Address already in use
- SQL Server 2012笔记分享-28:使用日志文件查看器
- 当前页禁止复制粘贴截屏
- visio2019安装教程
- android so劫持,防劫持SDK
- linux之U盘读写速度测试
- 留言板显示服务器错误,动易Cms:解读SiteFactory 留言板出现:服务器无响应,错误代码:500-动易Cms教程...
- win10 安装mysql 卡死_win10安装Mysql5.5卡住假死
- iOS开发之静态库.a的制作教程
- javascript笔记 狂神说
- 【学术】英文写作中值得参考的语法、句式(二)
- 立创EDA——PCB的走线(五)
- Unity快速入门之四 - Unity模型动画相关
- js控制excel打印完美解决方案(转)
- 计算机专业需要盲打,计算机盲打的技巧与方法【听看打练习】
- java 自省_java spring mvc 自省机制填充
热门文章
- 详细讲解设计LOGO思维方式和方法【转】
- socks5协议RFC文档
- 如何为windows服务添加安装程序(转)
- linux c主要应用在哪个领域
- 把一个人的特点写具体作文_把一个人的特点写具体500字作文
- Makefile —— Makefile的规则是什么?make是如何工作的?make的工作方式是什么?
- Linux 下 VNC配置和使用(本机控制本机)
- WPF入门(四)-线形区域Path内容填充之填充图(ImageBrush)
- ROS Learning-032 (提高篇-010 Launch)Launch 深入研究 --- (启动文件编程)ROS 的 XML语法简介...
- 求高精度幂(java)