IE11的變化 navigator.userAgent中再也不包含「MSIE」關鍵字

IE升級了,讓人好頭疼,升級個東西,咱們也要跟着升級,程序猿壓力大呀。。。。javascript

1.navigator.userAgent中再也不包含「MSIE」關鍵字java

2.用javascript的判斷是不是IE11的方法是:web

var isIE11 = (sUserAgent.toLowerCase().indexOf("trident") > -1 && sUserAgent.indexOf("rv") > -1);
if (isIE11) {
    var reIE11 = new RegExp("rv:(\\d+\\.\\d+);");
    reIE11.test(sUserAgent);
    isMinIE11 = compareVersions(RegExp["$1"], "11.0") >= 0;
}

 

  

3.支持addEventListener方法了,不須要再區分瀏覽器。瀏覽器

4.若是將這些 user-agent 字符串與早期版本的 Internet Explorer 報告的字符串進行比較,你會發現如下更改:服務器

  • 兼容 ("兼容") 和瀏覽器 ("MSIE") 令牌已刪除。
  • "like Gecko" 令牌已添加(以便與其餘瀏覽器一致)。
  • 瀏覽器版本如今由新版本 ("rv") 令牌報告。

這些更改有助於防止 IE11 被(錯誤)標識爲較早的版本。ide

在極少數狀況下,必須惟一地標識 IE11。 使用 Trident 令牌來執行此操做。spa

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

6.不要經過檢測瀏覽器的不一樣來檢測Web 瀏覽器所支持功能的方法存在,要使用直接檢測對該功能的支持blog

例如:事件

//經過瀏覽器不一樣來肯定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;
}
相關文章
相關標籤/搜索