这是我的标准条件评论,只给IE浏览器IE8及以下版本。它适用于初始加载。
<!--[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的源包括而不考虑条件注释并将它们放在viewstate中,它以某种方式包含回发时的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将加载IE 7,8和9的CSS,从而在#test
上生成绿色边框。 Chrome没有#test
任何边框。不会发生任何javascript警报。
答案 0 :(得分:4)
RadControls只在标题中抓取条件样式表...据我所知他们的文档(http://www.telerik.com/help/aspnet-ajax/ajax-conditional-comments.html),它说:“不幸的是我们没有找到一种可行的方法来检查那些[引用条件样式表]我们不能轻易解决这个问题。“,所以他们只提供了几个解决方法,1个选项是将条件注释放在正文中。所以,为了回答你的问题,开发人员知道这是一个错误,希望很快能解决......
答案 1 :(得分:1)
只是为了排除任何明显的,但你没有使用IE Tab Chrome扩展程序,是吗? https://chrome.google.com/webstore/detail/hehijbfgiekmjfkfjpbkbammjbdenadd
答案 2 :(得分:1)
我会使用HeadJS或其他js库而不是条件样式表来攻击它。它是一个非常漂亮的库,具有浏览器检测功能以及许多其他功能。
/ older than IE9 /
.lt-ie9 .box { padding: 10px; }
/ CSS fixes for IE6 /
.ie6 ul { list-style: none; }