JavaScript如何判断浏览器版本
JavaScript可以通过浏览器窗口对象的navigator属性来获取浏览器和操作系统的相关信息,从而判断当前浏览器的版本。
一、获取浏览器信息
1. navigator.appCodeName:返回浏览器的名称,通常都是Mozilla。
2. navigator.appName: 返回浏览器的名称,在大部分浏览器中不同于navigator.appCodeName。
3. navigator.appVersion:返回浏览器和操作系统的版本信息。
4. navigator.userAgent:返回用户代理头的字符串表示,包含了浏览器和操作系统的信息。
二、判断浏览器版本
1.利用userAgent方式
navigator.userAgent 可以获取用户代理头的字符串表示,包含了浏览器和操作系统的信息,我们可以通过匹配字符串来判断浏览器版本。下面是判断Chrome浏览器版本的代码示例:
function getBrVersion() {
var userAgent = navigator.userAgent; //获取userAgent信息
var browserArr = { //创建浏览器数组
msie: false, //是否为IE
firefox: false, //是否为火狐
chrome: false, //是否为Chrome
opera: false, //是否为Opera
safari: false, //是否为Safari
edge: false, //是否为Edge
netscape: false //是否为Netscape
};
if (userAgent.indexOf("MSIE") != -1 || userAgent.indexOf("Trident") != -1) { //IE浏览器
browserArr.msie = true;
return "IE浏览器";
}
if (userAgent.indexOf("Firefox") != -1) { //Firefox浏览器
browserArr.firefox = true;
return "Firefox浏览器";
}
if (userAgent.indexOf("Chrome") != -1) { //Chrome浏览器
browserArr.chrome = true;
return "Chrome浏览器";
}
if (userAgent.indexOf("Opera") != -1) { //Opera浏览器
browserArr.opera = true;
return "Opera浏览器";
}
if (userAgent.indexOf("Safari") != -1) { //Safari浏览器
browserArr.safari = true;
return "Safari浏览器";
}
if (userAgent.indexOf("Edge") != -1) { //Edge浏览器
browserArr.edge = true;
return "Edge浏览器";
}
if (userAgent.indexOf("Netscape") != -1) { //Netscape浏览器
browserArr.netscape = true;
return "Netscape浏览器";
}
}
注意:userAgent 只能获取当前窗口对象的信息,因此不能保证返回的浏览器版本是准确的。
2. 利用document.mode方式
IE浏览器提供了一个document.mode属性,可以返回当前页面的渲染模式。在IE8及以下版本中,该属性值为 undefined 或 BackCompat(混杂模式),在IE9及以上版本中,该属性值为 CSS1Compat(标准模式)。
示例代码:
function judgeIEVersion() {
var mode = document.mode;
if (mode == 'CSS1Compat') {
return 'IE浏览器9+';
} else {
return 'IE浏览器8-';
}
}
三、判断操作系统版本
1. 利用userAgent方式
和判断浏览器版本类似,可以通过获取用户代理头的字符串表示,来判断当前操作系统的类型和版本。下面是判断操作系统版本的代码示例:
function getOsVersion() {
var userAgent = navigator.userAgent.toLowerCase();
var osArr = { //创建操作系统数组
windows: false,
mac: false,
unix: false,
linux: false,
android: false,
ios: false
};
if (userAgent.indexOf('windows') != -1) { //判断是否为Windows
osArr.windows = true;
return "Windows";
} else if (userAgent.indexOf('mac') != -1) { //判断是否为Mac
osArr.mac = true;
return "Mac";
} else if (userAgent.indexOf('android') != -1) { //判断是否为Android
osArr.android = true;
return "Android";
} else if (userAgent.indexOf('iphone') != -1 || userAgent.indexOf('ipad') != -1) { //判断是否为iOS
osArr.ios = true;
return "iOS";
} else if (userAgent.indexOf('linux') != -1) { //判断是否为Linux
osArr.linux = true;
return "Linux";
} else if (userAgent.indexOf('unix') != -1) { //判断是否为Unix
osArr.unix = true;
return "Unix";
}
}
2.利用navigator.platform方式
navigator.platform 可以获取操作系统类型,但是无法获取操作系统版本。下面是获取操作系统类型的代码示例:
function judgeOs() {
var os = navigator.platform;
if (os.indexOf('Win') != -1) {
return 'Windows操作系统';
} else if (os.indexOf('Mac') != -1) {
return 'Mac操作系统';
} else if (os.indexOf('X11') != -1) {
return 'Unix操作系统';
} else if (os.indexOf('Linux') != -1) {
return 'Linux操作系统';
}
}
以上就是通过JavaScript来判断浏览器和操作系统版本的方法,通过获取用户代理头的字符串表示和判断 document.mode 属性,可以比较准确地判断浏览器和操作系统版本。但是,需要注意的是,这种方法并不是完全可靠的,因为还存在浏览器的用户代理头被伪装和篡改的情况。
