2013-10-21 88 views
17

我一直在努力讓自己的努力獲得評論條件工作,我沒有任何運氣有人可以解釋我做錯了什麼?如果IE條件不起作用

這裏是我的代碼:

 <!--[if IE 10]> 
      IE IS VERSION 10<br /> 
     <![endif]--> 
     <!--[if !IE]><!--> 
      Browser is not IE 
     <!--<![endif]--> 
     <!--[if lt IE 9]> 
      IE IS LESS THAN VERSION 9<br /> 
     <![endif]--> 

正在發生的事情是令人沮喪不一致的。當我用IE8上面的代碼加載頁面時,它會收到消息「IE不到版本9」很好的嗎?沒有,因爲當我在IE10加載在同一頁我得到的消息「的瀏覽器不是IE」

爲什麼會認爲IE10是不是IE瀏覽器?我一直在抓取頁面,但從我發現的代碼中看來沒有任何問題。

+0

唯一的工作代碼程式碼中的最後一個。 IE10不支持條件註釋,因此'[如果IE 10]'不起作用。只有IE <10支持條件註釋,因此'[if!IE]'是無用的。正如你可以在你的發佈代碼中看到的那樣,在「!IE」條件中有一個「語法錯誤」,因此文本「瀏覽器不是IE」應當實際顯示在每個瀏覽器中...... – Teemu

+11

我討厭Internet Explorer – wvdz

回答

15

IE 10不支持的條件語句。

Conditional statements in Internet Explorer 10.。它會將條件註釋視爲普通的HTML註釋,並完全忽略。

使用功能檢測庫(如Modernizr)代替瀏覽器檢測。

在此comment找到了解決方案上impressivewebs

Here is Demo to test

解決的辦法是:

if (Function('/*@cc_on return [email protected]*/')()) { 
    alert('IE 10'); 
} else { 
    alert('Not IE 10'); 
} 

  • 不需要有條件的意見;
  • 即使評論剝離壓縮/處理工程;
  • 沒有ie10類加入互聯網 資源管理器  11;
  • 更可能按照預期與Internet工作  Explorer   11在Internet上運行  Explorer   10兼容模式;
  • 不需要獨立的腳本標記(只能添加到頭部的其他JavaScript代碼中)。
  • 不需要jQuery的測試
+0

「跨瀏覽器最佳實踐」鏈接 –

+0

@Fabián其完美的工作,請參閱https://www.modern.ie/en-us/category/code-with-standards –

3

IE 10刪除了條件註釋。

你可以在JavaScript中類似這樣的事情:

if ($.browser.msie && $.browser.version === 10) { 
    // stuff here (like adding an IE10 class to the body or html tag 
} 
+1

是的,但是這需要我包括JQUERY :( – TheSnooker

+1

那麼,如果條件已經被放棄在IE10上,你沒有太多的選擇,你呢? – Rafael

+5

不幸的是,這個功能在jQuery 1.9中被刪除 – user1618143

1

嘗試添加以下meta標籤附近的頁面頂部選擇加入Internet Explorer 9的行爲:

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9"> 

這是因爲條件註釋已在Internet Explorer 10標準和怪癖模式中被刪除,以提高互操作性並符合HTML5。這意味着條件註釋現在被視爲常規評論,就像在其他瀏覽器中一樣。此更改可能會影響專門爲Windows Internet Explorer編寫的頁面或使用瀏覽器嗅探來改變其在Internet Explorer中的行爲的頁面。

14

我很驚訝,沒有一個人在一個只有CSS的解決方案增加了。如果你只是想用css,然後使用如下語句:

@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) { 
    /* Put your IE-only styles here. Works for IS 10 & IE 11*/ 
} 

這樣你就不必依賴jQuery的,或任何HTML標記。只要將它張貼在CSS中,你就可以走了。

現在,這是一個黑客?有可能。這取決於使用微軟高對比度標籤,但由於沒有其他瀏覽器使用MS標籤,那麼你應該很好去。

最後,檢查這些頁面的詳細信息:

Blog Post

MS Site on the contrast tag

+0

謝謝Maximus,真棒技巧......... ................我恨你IE – akokani