javascript判断浏览器类型与版本

发布于 2022-09-02 10:45:56 字数 4791 浏览 7 评论 0

除了另无它法,肯定不使用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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文