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



以下是我的标准条件注释,仅对IE8及以下版本进行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 includes的源代码,并将其置于视图状态,从而在回发时以某种方式包含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警报。

RadControls只有在标题中时才获取条件样式表。。。据我从他们的文件中所知(http://www.telerik.com/help/aspnet-ajax/ajax-conditional-comments.html),它说:"不幸的是,我们还没有找到一种可行的方法来检查这些[参考条件样式表],我们无法轻松解决这个问题。",所以他们只提供了几个解决方案,其中一个选项是将条件注释放在正文中。所以,为了回答你的问题,开发人员知道这是一个错误,希望很快就能修复。。。

只是为了排除任何明显的情况,但您没有使用IE Tab Chrome扩展,是吗?https://chrome.google.com/webstore/detail/hehijbfgiekmjfkfjpbkbammjbdenadd

我会通过使用HeadJS或其他js库而不是条件样式表来攻击它。这是一个非常漂亮的库,具有浏览器检测功能,还有很多其他功能。

/ older than IE9 /
.lt-ie9 .box { padding: 10px; }
/ CSS fixes for IE6 /
.ie6 ul  { list-style: none; }

相关内容

  • 没有找到相关文章

最新更新