最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JS如何判斷是否為ie瀏覽器的方法(包括IE10、IE11在內(nèi))

 更新時間:2021年07月26日 23:58:42   投稿:mdxy-dxy  
這篇文章主要介紹了JS如何判斷是否為ie瀏覽器的方法(包括IE10、IE11在內(nèi)),需要的朋友可以參考下

今天在寫一個代碼復(fù)制功能的時候,發(fā)現(xiàn)的這個問題,ie11也不支持document.all,看來以后越來越標(biāo)準(zhǔn)了

今天碰到一個奇怪的問題,有一個頁面,想指定用IE瀏覽器打開,在VS開發(fā)環(huán)境沒有問題,但部署到服務(wù)器上,即使是用IE打開頁面,還是提示“僅支持IE”,真是暈?。?!
判斷是否IE瀏覽器用的是window.navigator.userAgent,跟蹤這個信息,發(fā)現(xiàn)在開發(fā)環(huán)境,識別為IE10,但訪問服務(wù)器則識別為IE11,但I(xiàn)E11的userAgent里是沒有MSIE標(biāo)志的,原因就是這個了。

把判斷IE瀏覽器的方法改成如下就可以了。

原來的函數(shù)寫法:對于新版的ie11已經(jīng)不支持了

function isIE(){
if (window.navigator.userAgent.indexOf("MSIE")>=1) 
return true; 
else 
return false; 
}

ie10及以上不支持ie瀏覽器的判斷了,因為ie11已經(jīng)不支持document.all了,下面是支持ie11的版本的,當(dāng)然ie6-8也是支持的

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

判斷IE瀏覽器的具體版本

function IEVersion() {
      var userAgent = navigator.userAgent; //取得瀏覽器的userAgent字符串  
      var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1; //判斷是否IE<11瀏覽器  
      var isEdge = userAgent.indexOf("Edge") > -1 && !isIE; //判斷是否IE的Edge瀏覽器  
      var isIE11 = userAgent.indexOf('Trident') > -1 && userAgent.indexOf("rv:11.0") > -1;
      if(isIE) {
          var reIE = new RegExp("MSIE (\\d+\\.\\d+);");
          reIE.test(userAgent);
          var fIEVersion = parseFloat(RegExp["$1"]);
          if(fIEVersion == 7) {
              return 7;
          } else if(fIEVersion == 8) {
              return 8;
          } else if(fIEVersion == 9) {
              return 9;
          } else if(fIEVersion == 10) {
              return 10;
          } else {
              return 6;//IE版本<=7
          }   
      } else if(isEdge) {
          return 'edge';//edge
      } else if(isIE11) {
          return 11; //IE11  
      }else{
          return -1;//不是ie瀏覽器
      }
  }

JS通過內(nèi)核判斷各種瀏覽器|區(qū)分360與谷歌(現(xiàn)在不能用了曾經(jīng)可以用)

function getBrowserInfo(){
        var ua = navigator.userAgent.toLocaleLowerCase();
        var browserType=null;
        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(/ubrowser/) != null) {
            browserType = "UC";
        }else if (ua.match(/opera/) != null) {
            browserType = "歐朋";
        } else if (ua.match(/bidubrowser/) != null) {
            browserType = "百度";
        }else if (ua.match(/metasr/) != null) {
            browserType = "搜狗";
        }else if (ua.match(/tencenttraveler/) != null || ua.match(/qqbrowse/) != null) {
            browserType = "QQ";
        }else if (ua.match(/maxthon/) != null) {
            browserType = "遨游";
        }else if (ua.match(/chrome/) != null) {
            var is360 = _mime("type", "application/vnd.chromium.remoting-viewer");
            function _mime(option, value) {
                var mimeTypes = navigator.mimeTypes;
                for (var mt in mimeTypes) {
                    if (mimeTypes[mt][option] == value) {
                        return true;
                    }
                }
                return false;
            }
            if(is360){
                browserType = '360';
            }else{
                $('html').css("zoom",".80");
            }
        }else if (ua.match(/safari/) != null) {
            browserType = "Safari";
        }
}

只有原生Chrome中存在一種MimeType“application/vnd.chromium.remoting-viewer”,由此可以判斷瀏覽器是加殼Chrome或是原生Chrome。
再如,只有IE內(nèi)核的瀏覽器存在ActiveXObject對象。由此可以判斷是否為IE瀏覽器

判斷瀏覽器類型,我們需要遵循以下原則:
1、采取命中特征原則,當(dāng)且僅當(dāng)完全符合區(qū)分瀏覽器的特征時我們才會采用此特征。例如單純通過UA中MSIE來檢測是否為IE瀏覽器是不可靠的。而通過判斷是否存在MimeType“application/vnd.chromium.remoting-viewer”來斷言原生Chrome在現(xiàn)階段來看是可行性,但也不保證永久有效。
2、對于主流瀏覽器來說一般不存在UserAgent關(guān)鍵字沖突,但對于許多加殼瀏覽器者就不一定了。再次提出某數(shù)字瀏覽器,userAgent干脆和IE一模一樣,但渲染模式等等不不知道動了什么手腳,與標(biāo)準(zhǔn)IE行為差異很大。通過userAgent來判斷瀏覽器時,優(yōu)先命中瀏覽器特征字。匹配則基本確定為該瀏覽器,但未匹配也并不代表不是此瀏覽器。請悉知。
3、優(yōu)先使用瀏覽器特性來區(qū)分瀏覽器,因為這個準(zhǔn)確性較高。其次再采用userAgent輔助判斷,從而達(dá)到最高的匹配度。
4、優(yōu)先檢測第三方加殼瀏覽器,目前并未有十分好的方案,只能枚舉大部分世面上存在并可以判斷的瀏覽器,其他未匹配任何規(guī)則的瀏覽器,為了兼容,請將規(guī)則落到四大瀏覽器之一。
5、判斷瀏覽器版本,僅僅是為了針對特定瀏覽器進(jìn)行優(yōu)化,需要有特定的業(yè)務(wù)場景需要才要這么做?;蛘弋?dāng)某個瀏覽器出現(xiàn)兼容問題時,緊急添加針對瀏覽器的補丁代碼時才判斷。更加科學(xué)穩(wěn)妥的辦法是使用標(biāo)準(zhǔn)的JS函數(shù)和API,頁面元素和樣式設(shè)計遵循W3C標(biāo)準(zhǔn)。可能存在爭議的兼容性問題盡可能采用第三方框架如jQuery。這才是解決兼容性問題的根本。

相關(guān)文章

  • JS中類的靜態(tài)方法,靜態(tài)變量,實例方法,實例變量區(qū)別與用法實例分析

    JS中類的靜態(tài)方法,靜態(tài)變量,實例方法,實例變量區(qū)別與用法實例分析

    這篇文章主要介紹了JS中類的靜態(tài)方法,靜態(tài)變量,實例方法,實例變量區(qū)別與用法,結(jié)合實例形式詳細(xì)分析了JS中類的靜態(tài)方法,靜態(tài)變量,實例方法,實例變量相關(guān)功能、使用方法及操作注意事項,需要的朋友可以參考下
    2020-03-03
  • js代碼延遲一定時間后執(zhí)行一個函數(shù)的實例

    js代碼延遲一定時間后執(zhí)行一個函數(shù)的實例

    下面小編就為大家?guī)硪黄猨s代碼延遲一定時間后執(zhí)行一個函數(shù)的實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • Bootstrap媒體對象的實現(xiàn)

    Bootstrap媒體對象的實現(xiàn)

    在web頁面中,圖片居左,內(nèi)容居右排列,是非常常見的效果,它也就是媒體對象,它是一種抽象的樣式,可以用來構(gòu)建不同類型的組件。本文給大家介紹Bootstrap媒體對象的實現(xiàn),感興趣的朋友一起學(xué)習(xí)吧
    2016-05-05
  • 帶你用原生js寫一個簡單的注冊登錄頁面

    帶你用原生js寫一個簡單的注冊登錄頁面

    這篇文章主要給大家介紹了關(guān)于如何使用原生js寫一個簡單的注冊登錄頁面的相關(guān)資料,文中介紹了一個以js驗證表單的簡潔的注冊登錄頁面,需要的朋友可以參考下
    2023-06-06
  • 上傳的js驗證(圖片/文件的擴(kuò)展名)

    上傳的js驗證(圖片/文件的擴(kuò)展名)

    下文給大家介紹下js 驗證上傳圖片以及怎樣控制一個上傳文件的擴(kuò)展名,感興趣的朋友可以參考下哈,希望對你有所幫助
    2013-04-04
  • 用javascript為頁面添加天氣顯示實現(xiàn)思路及代碼

    用javascript為頁面添加天氣顯示實現(xiàn)思路及代碼

    為頁面添加天氣顯示的方法有很多,在本文為大家介紹下使用js來輕松實現(xiàn),具體的代碼如下,感興趣的朋友不要錯過
    2013-12-12
  • 詳解webpack4.x之搭建前端開發(fā)環(huán)境

    詳解webpack4.x之搭建前端開發(fā)環(huán)境

    這篇文章主要介紹了詳解webpack4.x之搭建前端開發(fā)環(huán)境,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-03-03
  • 基于JavaScript實現(xiàn)文件共享型網(wǎng)站

    基于JavaScript實現(xiàn)文件共享型網(wǎng)站

    Any?Share?是一種簡單、輕量、快速的文件共享服務(wù)。使用?Javascript?編寫,并搭建在?Firebase?平臺。本文將利用它實現(xiàn)創(chuàng)建文件共享型網(wǎng)站,感興趣的可以了解一下
    2022-11-11
  • KnockoutJS 3.X API 第四章之事件event綁定

    KnockoutJS 3.X API 第四章之事件event綁定

    event綁定即為事件綁定,即當(dāng)觸發(fā)相關(guān)DOM事件的時候回調(diào)函數(shù),這篇文章主要介紹了KnockoutJS 3.X API 第四章之事件event綁定的相關(guān)知識,感興趣的朋友一起看看吧
    2016-10-10
  • JavaScript進(jìn)階(三)閉包原理與用法詳解

    JavaScript進(jìn)階(三)閉包原理與用法詳解

    這篇文章主要介紹了JavaScript閉包原理與用法,結(jié)合實例形式詳細(xì)分析了JavaScript閉包相關(guān)概念、原理、用法及操作注意事項,需要的朋友可以參考下
    2020-05-05

最新評論

西昌市| 株洲县| 宜昌市| 黎平县| 剑河县| 大城县| 迁安市| 溧水县| 石狮市| 邵东县| 吉水县| 电白县| 利川市| 刚察县| 荃湾区| 黎川县| 宜宾县| 仪征市| 垫江县| 昭觉县| 南京市| 瑞金市| 工布江达县| 海安县| 吉首市| 云阳县| 广西| 农安县| 宜阳县| 滁州市| 北安市| 阿克| 天柱县| 金秀| 玉林市| 修水县| 定襄县| 阳曲县| 望奎县| 建湖县| 乐至县|