.NET回发使其他浏览器加载IE条件注释

时间:2012-08-02 18:00:47

标签: asp.net .net browser webforms conditional-comments

这是我的标准条件评论,只给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警报。

3 个答案:

答案 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; }