2

这是我的标准条件评论,仅针对 IE8 及以下版本提供 IE hack。它适用于初始负载。

<!--[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 将加载 IE 7、8 和 9 的 CSS,导致#test. Chrome 不提供#test任何边框。不会发生任何 javascript 警报。

4

3 回答 3

4

RadControls 仅在标题中获取条件样式表......据我从他们的文档(http://www.telerik.com/help/aspnet-ajax/ajax-conditional-comments.html)中可以看出,它说:“不幸的是,我们还没有找到一种可行的方法来检查那些[引用条件样式表],我们不能轻易解决这个问题。”,所以他们只是提供了几个解决方法,一个选项是将条件注释放在身体。因此,为了回答您的问题,开发人员知道这是一个错误,并有望尽快修复...

于 2012-08-02T18:56:50.097 回答
1

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

于 2012-08-02T18:09:52.883 回答
1

我会通过使用HeadJS或其他 js 库而不是条件样式表来解决这个问题。这是一个非常漂亮的库,具有浏览器检测功能以及许多其他功能。

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

/ CSS fixes for IE6 /
.ie6 ul  { list-style: none; }
于 2012-08-02T18:44:22.190 回答