zoukankan      html  css  js  c++  java
  • [js]识别浏览器及版本

    var userAgent = navigator.userAgent.toLowerCase();
    window.jQuery.browser = {
        version: (userAgent.match(/.+(?:rv|it|ra|ie)[/: ]([d.]+)/) || [])[1],
        safari: /webkit/.test(userAgent),
        opera: /opera/.test(userAgent),
        msie: /msie/.test(userAgent) && !/opera/.test(userAgent),
        mozilla: /mozilla/.test(userAgent) && !/(compatible|webkit)/.test(userAgent)
    };

    $(function() {
    if($.browser.msie) {
    alert("this is msie");
    }
    else if($.browser.safari)
    {
    alert("this is safari!");
    }
    else if($.browser.mozilla)
    {
    alert("this is mozilla!");
    }
    else if($.browser.opera) {
    alert("this is opera");
    }
    else {
    alert("i don't konw!");
    }

    ------------------------------------------------------------------------------------------------------

    1.navigator.userAgent中不再包含“MSIE”关键字

    2.用javascript的判断是否是IE11的方法是:

      

    3.支持addEventListener方法了,不需要再区分浏览器。

    4.如果将这些 user-agent 字符串与早期版本的 Internet Explorer 报告的字符串进行比较,你会发现以下更改:

    • 兼容 ("兼容") 和浏览器 ("MSIE") 令牌已删除。
    • "like Gecko" 令牌已添加(以便与其他浏览器一致)。
    • 浏览器版本现在由新版本 ("rv") 令牌报告。

    这些更改有助于防止 IE11 被(错误)标识为较早的版本。

    在极少数情况下,必须唯一地标识 IE11。 使用 Trident 令牌来执行此操作。

    5.更具体的变化:http://msdn.microsoft.com/zh-cn/library/ie/dn265032(v=vs.85).aspx

    6.不要通过检测浏览器的不同来检测Web 浏览器所支持功能的方法存在,要使用直接检测对该功能的支持

    例如:

     
     
     
     
     
    //通过浏览器不同来确定web浏览器所支持的功能存在的方法:浏览器检测
        if (isIE) {
            window.attachEvent('onresize', setPosition);
        } else {
            window.addEventListener('resize', setPosition, false);
        }
    //直接检测对该功能的支持:功能检测
    function registerEvent( sTargetID, sEventName, fnHandler )
    {
       var oTarget = document.getElementById( sTargetID );
       if ( oTarget != null )
       {
          if ( oTarget.addEventListener ) {  
             oTarget.addEventListener( sEventName, fnToBeRun, false );
          } else {
            var sOnEvent = "on" + sEventName;
            if ( oTarget.attachEvent )
            {
               oTarget.attachEvent( sOnEvent, fnHandler );
            }
          }
       }
    }
    /*
    其侧重于功能而非浏览器。 如果用户碰巧使用支持 addEventListener 方法的浏览器(例如,Internet Explorer 9 和许多其他浏览器),则将使用该方法定义事件处理程序。它侧重于基于标准的方法,而非专有方法。 在这种情况下,在尝试使用备用方法前,本示例验证对首选方法(addEventListener 方法)的支持。本示例非常有效,因为它没有假设任何给定浏览器的行为。 这种方法无需为了支持所有(假定的)新版 Internet Explorer 而进行更新,也无需为了支持新的浏览器或设备而进行扩展。 本示例仅侧重于功能的可用性。 这是功能检测和浏览器检测之间的主要区别。在理想情况下,所有的浏览器都将支持相同的标准并以完全相同的方法实施这些标准。 然而,事实上浏览器及其各自对不同标准的实施情况之间存在着很多不同.
    */

    ………………………………………………………………………………………………………

      

    JS如何判断包括IE11在内的IE浏览器

    判断是否IE浏览器用的是window.navigator.userAgent,跟踪这个信息,发现在开发环境,识别为IE10,但访问服务器则识别为IE11,但IE11的userAgent里是没有MSIE标志的,原因就是这个了。

    把判断IE浏览器的方法改成如下就可以了。

     
     
     
     
     
     
    function isIE() { //ie?
        if (!!window.ActiveXObject || "ActiveXObject" in window)
            return true;
        else
            return false;
    }

      

    ---------------------------------------------------------------------------------------------------

    如果是为了判断IE的版本我还是推荐用IE的条件表达式来书写JS;

    在css中使用比较常见;

    <!--[if IE]>
    <script type="text/javascript">
    alert("ie")
    </script>
    <![endif]-->
    <!--[if IE 6]>
    <script type="text/javascript">
    alert("ie6")
    </script>
    <![endif]-->
    <!--[if IE 7]>
    <script type="text/javascript">
    alert("ie7")
    </script>
    <![endif]-->
  • 相关阅读:
    Spring Boot启动时执行初始化操作三种方法分享
    springboot自定义验证传值范围
    动态数据源玩起来
    多线程之Semaphore登录限流示例
    elementui表格自定义格式实现原理???
    31 Days of Windows Phone | Day #5 System Theming
    SQL 子查询关联查询和非关联查询 性能分享
    windows phone app 发布后在市场里找不到呢。
    APP Hub 应用发布失败,请问大家都是怎么设置可以成功提交哦
    WPF:Main方法到哪里去了?
  • 原文地址:https://www.cnblogs.com/jx270/p/4516877.html
Copyright © 2011-2022 走看看