这里谈一下JS验证浏览器版本的功能模块对IE11兼容问题。(引用他人文章)
一般,旧的JS验证浏览器版本的功能模块,例如。
该验证模块是通过PC客户端上的用户代理头navigator.userAgent信息进行检测的。在IE版本检测部分,
通过: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322)。中MSIE 6.0字段检测。但在IE11,取消了MSIE X.X 信息;所以该检测代码在IE11中会失效。
在取消MSIE X.X 信息后,IE11还存在从IE9引入的Trident标识;这样可以直接通过Trident标识检测出IE11。
IE11的版本信息部分为: Mozilla/5.0 (windows NT 6.3; Trident/7.0; rv 11.0) like Gecko
修改后JS验证浏览器版本的功能模块如下:
写法1:
写法2:
一般,旧的JS验证浏览器版本的功能模块,例如。
<script type="text/javascript">
window.GLOBAL = { //浏览器版本信息
BROWSER : (function() {
var u = window.navigator.userAgent.toLocaleLowerCase(),
msie = /(msie) ([\d.]+)/,<span style="white-space:pre"> </span>/*IE*/
chrome = /(chrome)\/([\d.]+)/,<span style="white-space:pre"> </span>/*谷歌*/
firefox = /(firefox)\/([\d.]+)/,<span style="white-space:pre"> </span>/*火狐*/
safari = /(safari)\/([\d.]+)/,<span style="white-space:pre"> </span>/*苹果自带的一种浏览器*/
opera = /(opera)\/([\d.]+)/,<span style="white-space:pre"> </span>/*挪威的一款浏览器*/
b = u.match(msie)||u.match(chrome)||u.match(firefox)||u.match(safari)||u.match(opera);
return {NAME: b[1], VERSION: parseInt(b[2])};
})()
}
</script>
该验证模块是通过PC客户端上的用户代理头navigator.userAgent信息进行检测的。在IE版本检测部分,
通过: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322)。中MSIE 6.0字段检测。但在IE11,取消了MSIE X.X 信息;所以该检测代码在IE11中会失效。
在取消MSIE X.X 信息后,IE11还存在从IE9引入的Trident标识;这样可以直接通过Trident标识检测出IE11。
IE11的版本信息部分为: Mozilla/5.0 (windows NT 6.3; Trident/7.0; rv 11.0) like Gecko
修改后JS验证浏览器版本的功能模块如下:
写法1:
<script type="text/javascript">
window.GLOBAL = { //浏览器版本信息
BROWSER : (function() {
var u = window.navigator.userAgent.toLocaleLowerCase(),
msie = /(msie) ([\d.]+)/,
chrome = /(chrome)\/([\d.]+)/,
firefox = /(firefox)\/([\d.]+)/,
safari = /(safari)\/([\d.]+)/,
opera = /(opera)\/([\d.]+)/,
ie11 = /(trident)\/([\d.]+)/,
b = u.match(msie)||u.match(chrome)||u.match(firefox)||u.match(safari)||u.match(opera)||u.match(ie11);
return {NAME: b[1], VERSION: parseInt(b[2])};
})()
}
</script>
写法2:
function CheckBrowser() {
ua = navigator.userAgent;
ua = ua.toLocaleLowerCase();
if (ua.match(/msie/) != null || ua.match(/trident/) != null) {
browserType = "IE";
browserVersion = ua.match(/msie ([\d.]+)/) != null ? ua.match(/msie ([\d.]+)/)[1] : ua.match(/rv:([\d.]+)/)[1];
} else if (ua.match(/firefox/) != null) {
browserType = "火狐";
} else if (ua.match(/opera/) != null) {
browserType = "欧朋";
} else if (ua.match(/chrome/) != null) {
browserType = "谷歌";
} else if (ua.match(/safari/) != null) {
browserType = "Safari";
}
var arr = new Array(browserType, browserVersion);
return arr;
}