2012-08-02 59 views
2

這裏是我的標準條件註釋,只給IE8和IE8以下的IE黑客。它在初始加載時工作。.NET回發讓其他瀏覽器加載IE條件註釋

<!--[if lt IE 9]> 
    <link href="Styles/IE.css" rel="stylesheet" type="text/css" /> 
<![endif]--> 

當發生回發時,Chrome 21.0.1180.60 m突然加載它!到底是怎麼回事?

更新:

我確認這發生在Firefox和Opera也。我想知道如果以某種方式.NET刮除CSS包括的源代碼,而不考慮條件註釋並將它們放入視圖狀態,它以某種方式在回發中包含CSS文件?這甚至有意義嗎?這裏還會發生什麼?

更新2:

這很奇怪。條件註釋只加載CSS,(不是純文本,html或javascript),只有在標題中。 Firefox,Opera和IE會加載任意數量的條件註釋(不管他們指定哪個瀏覽器),但Chrome只會加載第一個。因此:

<!--[if lt IE 9]> 
    <link href="Styles/IE.css" rel="stylesheet" type="text/css" /> 
<![endif]--> 
<!--[if IE 7]> 
    <style>#test{border:dashed 1px red;</style> 
    <script>alert("seven");</script> 
<![endif]--> 
<!--[if IE 8]> 
    <style>#test{border:dashed 1px blue;</style> 
    <script>alert("eight");</script> 
<![endif]--> 
<!--[if IE 9]> 
    <style>#test{border:dashed 1px green;</style> 
    <script>alert("nine");</script> 
<![endif]--> 

將加載在回傳所有的瀏覽器IE.css,以及IE,Opera和Firefox將加載CSS的IE 7,8和9,導致綠色邊框上#test。 Chrome不會給#test任何邊框。沒有JavaScript警報會發生。

+0

您是否擁有發生此問題的網站的實時網址? – 2012-08-02 18:04:53

+0

它位於IIS Express上運行的本地開發環境中。 – brentonstrine 2012-08-02 18:07:12

回答

4

時的RadControls只抓住了條件樣式表頭時......據我可以從他們的文檔(http://www.telerik.com/help/aspnet-ajax/ajax-conditional-comments.html)來講,它說:「不幸的是,我們還沒有找到一個可行的辦法,以檢查這些[指的是條件樣式表],我們不能輕易解決這個問題。「,所以他們只提供了一些解決方法,1選項是將條件註釋放在正文中。因此,爲了回答您的問題,開發人員知道這是一個錯誤,並且很快就會修復...

+1

哇,太糟了。這就是爲什麼我喜歡開源的東西,你永遠不會得到'是的,這是一個錯誤,不,我們不知道什麼時候/如果我們會解決它。' – jcollum 2012-08-02 20:25:38

1

只是爲了排除任何明顯的,但你沒有使用IE Tab Chrome擴展,是嗎? https://chrome.google.com/webstore/detail/hehijbfgiekmjfkfjpbkbammjbdenadd

+0

哦,'啊!'如果你是對的話會被聽到...... – jcollum 2012-08-02 18:10:46

+0

哈哈,好的電話。我雖然沒有使用它。 – brentonstrine 2012-08-02 18:17:48

+1

如果你使用的是RadControl,你可能想看看這個:http://www.telerik.com/help/aspnet-ajax/ajax-conditional-comments.html看起來像是將條件樣式表移動到主體中修復了這個問題... – ews2001 2012-08-02 18:21:23

1

我會通過使用HeadJS或其他js庫而不是條件樣式表來攻擊這個。這是一個非常漂亮的庫,它具有瀏覽器檢測功能,以及其他一些功能。

/ older than IE9/
.lt-ie9 .box { padding: 10px; } 

/CSS fixes for IE6/
.ie6 ul { list-style: none; } 
相關問題