javascript判断浏览器类型与版本
除了另无它法,肯定不使用navigator.userAgent来判定浏览器。因为在第一次浏览器大战初期,Netscape占绝对统计地位,大部分人们不愿意兼容其他浏览器,并通过检测其UA让他们的网站只允许Netscape访问,这就逼使其他浏览器(包括IE)修改自己的UA伪装成Netscape来通过那些自以为是的脚本,于是出现每个人都声称自己是别人的局面,即使最新的IE9的UA也是:
//Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/5.0)
下面我收集或独创的一些判定:
//2010 4 16日更新
ie = !+"v1" ;
ie = !-[1,];//IE9预览版中失效
ie ='v'=='v' ;
ie = !!document.recalc
ie = !!window.VBArray
ie = !!window.ActiveXObject
ie = 0//@cc_on+1;
ie = !!window.createPopup;
ie = /*@cc_on!@*/!1;
ie = document.expando;//document.all在opera firefox的古老版本也存在
ie = /w/.test('u0130') //由群里的abcd友情提供
ie6 = !"1"[0] //利用IE6或IE5的字符串不能使用数组下标的特征
ie8 = !!window.XDomainRequest;
ie9 = document.documentMode && document.documentMode === 9;
//自创,基于条件编译的嗅探脚本,IE会返回其JS引擎的版本号,非IE返回0
var ieVersion = eval("''+/*@cc_on"+" @_jscript_version@*/-0")*1
ie9 = ieVersion === 5.9
ie8 = ieVersion === 5.8
ie7 = ieVersion === 5.7
ie6 = ieVersion === 5.6
ie5 = ieVersion === 5.5
//https://developer.mozilla.org/En/Windows_Media_in_Netscape
netscape = !!window.GeckoActiveXObject
gecko = !!window.netscape //包括firefox
firefox = !!window.Components
firefox = !!window.updateCommands
safari = !!(navigator.vendor && navigator.vendor.match(/Apple/))
safari = window.openDatabase && !window.chrome;
chrome= !!(window.chrome && window.google)
opera=!!window.opera ;
//傲游2 3
maxthon = /maxthon/i.test(navigator.userAgent)
//360安全浏览器
is360se = /360se/i.test(navigator.userAgent)
//2010.6.4
setTimeout(function(){//FF的setTimeout总是有一个额余的参数0
var isFF = !!arguments.length;
alert(isFF)
}, 0);
//判定IE版本
2010.10.1
ie = (function(undefined){
var v = 3, div = document.createElement('div');
while (
div.innerHTML = '<!--[if gt IE '+(++v)+']><I></I><![endif]-->',
div.getElementsByTagName('i')[0]);
return v> 4 ? v : undefined;
}());
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论