判斷瀏覽器(IE)版本,html方式和js方式

1、經過html判斷javascript

  1. <!--[if !IE]><!--> 除IE外均可識別 <!--<![endif]-->css

  2. <!--[if IE]> 全部的IE可識別 <![endif]-->html

  3. <!--[if IE 5.0]> 只有IE5.0能夠識別 <![endif]-->java

  4. <!--[if IE 5]> 僅IE5.0與IE5.5能夠識別 <![endif]-->chrome

  5. <!--[if gt IE 5.0]> IE5.0以及IE5.0以上版本均可以識別 <![endif]-->windows

  6. <!--[if IE 6]> 僅IE6可識別 <![endif]-->瀏覽器

  7. <!--[if lt IE 6]> IE6以及IE6如下版本可識別 <![endif]-->less

  8. <!--[if gte IE 6]> IE6以及IE6以上版本可識別 <![endif]-->ide

  9. <!--[if IE 7]> 僅IE7可識別 <![endif]-->學習

  10. <!--[if lt IE 7]> IE7以及IE7如下版本可識別 <![endif]-->

  11. <!--[if gte IE 7]> IE7以及IE7以上版本可識別 <![endif]-->

<!--[if lte IE 6]>……<![endif]-->

Ite:less than or equal to意思是小於或等於IE6瀏覽器,用於IE瀏覽器的條件註釋,經常使用於CSShack,針對IE的JS等。 在進行WEB標準網頁的學習和應用過程當中,網頁對瀏覽器的兼容性是常常接觸到的一個問題。其中因微軟公司的Internet Explorer(簡稱IE)佔據瀏覽器市場的大半江山,此外還有Firefox、Opera等。須要對這些瀏覽器進行兼容。 同時,單就IE而言,因IE版本的升級更替,目前瀏覽者使用的主要停留在 IE5(IE5.5)、IE6和IE7這三個版本中。而這3個版本對於咱們製做的WEB標準網頁(XHTML+CSS)解釋執行的顯示情況不盡相同。並 且,其餘非IE瀏覽器與IE對某些CSS解釋也不同。因此,經過IE瀏覽器中的專有條件註釋可有針對性的進行相關屬性的定義。 條件註釋只能用於Explorer 5+ Windows(如下簡稱IE)(條件註釋從IE5開始被支持)。若是你安裝了多個IE,條件註釋(Conditional comments)將會以最高版本的IE爲標準(目前爲IE 7)。 條件註釋只能在windows Internet Explorer(如下簡稱IE)下使用,所以咱們能夠經過條件註釋來爲IE添加特別的指令。 通俗點,條件註釋就是一些if判斷,但這些判斷不是在腳本里執行的,而是直接在html代碼裏執行的,好比:

<!--[if IE]> 這裏是正常的html代碼 <![endif]-->

1,條件註釋的基本結構和HTML的註釋(<!-- -->)是同樣的。所以IE之外的瀏覽器將會把它們看做是普通的註釋而徹底忽略它們。 2,IE將會根據if條件來判斷是否如解析普通的頁面內容同樣解析條件註釋裏的內容。 3,條件註釋使用的是HTML的註釋結構,所以他們只能使用在HTML文件裏,而不能在CSS文件中使用。 可以使用以下代碼檢測當前IE瀏覽器的版本(注意:在非IE瀏覽器中是看不到效果的)

<!--[if IE]> <h1>您正在使用IE瀏覽器</h1> <!--[if IE 5]> <h2>版本 5</h2> <![endif]-->

<!--[if IE 5.0]>
      <h2>版本 5.0</h2>
  <![endif]-->
  <!--[if IE 5.5]>
      <h2>版本 5.5</h2>
  <![endif]-->
  <!--[if IE 6]>
      <h2>版本 6</h2>
  <![endif]-->
  <!--[if IE 7]>
      <h2>版本 7</h2>
  <![endif]-->

<![endif]--> 那若是當前的瀏覽器是IE,但版本比IE5還低,該怎麼辦呢,可使用<!--[if ls IE 5]>,固然,根據條件註釋只能在IE5+的環境之下,因此<!--[if ls IE 5]>根本不會被執行。 lte:就是Less than or equal to的簡寫,也就是小於或等於的意思。 lt :就是Less than的簡寫,也就是小於的意思。 gte:就是Greater than or equal to的簡寫,也就是大於或等於的意思。 gt :就是Greater than的簡寫,也就是大於的意思。 ! :就是不等於的意思,跟javascript裏的不等於判斷符相同 Conditional comments屬於CSS hack? 條件判斷屬於CSS hack嗎? 嚴格地說是屬於CSS hack。由於就好象其餘真正的css hack同樣,它使得咱們能夠給一些瀏覽器賦予特殊的樣式,再則它不依賴於某個瀏覽器的BUG來控制另一個瀏覽器(的樣式)。除此以外,條件判斷還能用 來作一些超出CSS HACK範圍的事情(雖然這種狀況不多發生)。 由於條件判斷不依賴於某個瀏覽器的hack,而是一個通過深思熟慮的特點功能,因此我相信它是能夠被放心地使用的。固然,其餘瀏覽器也有可能支持條件判斷(到目前爲止尚未),可是看起來,他們應該不會使用如<!--[if IE]>這樣的語法。 應該如何應用條件註釋 本文一開始就說明了,由於IE各版本的瀏覽器對咱們製做的WEB標準的頁面解釋不同,具體就是對CSS的解釋不一樣,咱們爲了兼容這些,可運用條件註釋來各自定義,最終達到兼容的目的。好比:

<!-- 默認先調用css.css樣式表 -->

<link rel="stylesheet" type="text/css" href="css.css" /> <!--[if IE 7]> <!-- 若是IE瀏覽器版是7,調用ie7.css樣式表 --> <link rel="stylesheet" type="text/css" href="ie7.css" /> <![endif]--> <!--[if lte IE 6]> <!-- 若是IE瀏覽器版本小於等於6,調用ie.css樣式表 --> <link rel="stylesheet" type="text/css" href="ie.css" /> <![endif]-->

這其中就區分了IE7和IE6向下的瀏覽器對CSS的執行,達到兼容的目的。同時,首行默認的css.css還能與其餘非IE瀏覽器實現兼容。 注意:默認的CSS樣式應該位於HTML文檔的首行,進行條件註釋判斷的全部內容必須位於該默認樣式以後。 好比以下代碼,在IE瀏覽器下執行顯示爲紅色,而在非IE瀏覽器下顯示爲黑色。若是把條件註釋判斷放在首行,則不能實現。該例題很能說明網頁對IE瀏覽器和非IE瀏覽器間的兼容性問題解決。

<style type="text/css"> body{ background-color: #000; } </style>

<!--[if IE]> <style type="text/css"> body{ background-color: #F00; } </style> <![endif]-->

同時,有人會試圖使用<!--[if !IE]>來定義非IE瀏覽器下的情況,但注意:條件註釋只有在IE瀏覽器下才能執行,這個代碼在非IE瀏覽下非單不是執行該條件下的定義,而是當作註釋視而不見。 正常就是默認的樣式,對IE瀏覽器須要特殊處理的,才進行條件註釋。 在HTML文件裏,而不能在CSS文件中使用。

2、js判斷 /*

  • 描述:判斷瀏覽器信息
  • 編寫:LittleQiang_w
  • 日期:2016.1.5
  • 版本:V1.1 */

//判斷當前瀏覽類型
function BrowserType()
{
var userAgent = navigator.userAgent; //取得瀏覽器的userAgent字符串
var isOpera = userAgent.indexOf("Opera") > -1; //判斷是否Opera瀏覽器
var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera; //判斷是否IE瀏覽器
var isEdge = userAgent.indexOf("Windows NT 6.1; Trident/7.0;") > -1 && !isIE; //判斷是否IE的Edge瀏覽器
var isFF = userAgent.indexOf("Firefox") > -1; //判斷是否Firefox瀏覽器
var isSafari = userAgent.indexOf("Safari") > -1 && userAgent.indexOf("Chrome") == -1; //判斷是否Safari瀏覽器
var isChrome = userAgent.indexOf("Chrome") > -1 && userAgent.indexOf("Safari") > -1; //判斷Chrome瀏覽器

if (isIE)   
  {  
       var reIE = new RegExp("MSIE (\\d+\\.\\d+);");  
       reIE.test(userAgent);  
       var fIEVersion = parseFloat(RegExp["$1"]);  
       if(fIEVersion == 7)  
       { return "IE7";}  
       else if(fIEVersion == 8)  
       { return "IE8";}  
       else if(fIEVersion == 9)  
       { return "IE9";}  
       else if(fIEVersion == 10)  
       { return "IE10";}  
       else if(fIEVersion == 11)  
       { return "IE11";}  
       else  
       { return "0"}//IE版本太低  
   }//isIE end  
     
   if (isFF) {  return "FF";}  
   if (isOpera) {  return "Opera";}  
   if (isSafari) {  return "Safari";}  
   if (isChrome) { return "Chrome";}  
   if (isEdge) { return "Edge";}

}//myBrowser() end

//判斷是不是IE瀏覽器
function isIE()
{
var userAgent = navigator.userAgent; //取得瀏覽器的userAgent字符串
var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera; //判斷是否IE瀏覽器
if(isIE)
{
return "1";
}
else
{
return "-1";
}
}

//判斷是不是IE瀏覽器,包括Edge瀏覽器
function IEVersion()
{
var userAgent = navigator.userAgent; //取得瀏覽器的userAgent字符串
var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera; //判斷是否IE瀏覽器
var isEdge = userAgent.indexOf("Windows NT 6.1; Trident/7.0;") > -1 && !isIE; //判斷是否IE的Edge瀏覽器
if(isIE)
{
var reIE = new RegExp("MSIE (\d+\.\d+);");
reIE.test(userAgent);
var fIEVersion = parseFloat(RegExp["$1"]);
if(fIEVersion == 7)
{ return "IE7";}
else if(fIEVersion == 8)
{ return "IE8";}
else if(fIEVersion == 9)
{ return "IE9";}
else if(fIEVersion == 10)
{ return "IE10";}
else if(fIEVersion == 11)
{ return "IE11";}
else
{ return "0"}//IE版本太低
}
else if(isEdge)
{
return "Edge";
}
else
{
return "-1";//非IE
}
}

最後寫一下兼容ie 高版本的設置 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">

相關文章
相關標籤/搜索