2013-02-15 49 views
10

我在我的页面中使用了以下HTML5元素:标题,文章,部分和导航。 现在我已经设置上述所有HTML5元素显示:块,我包括HTML5希夫在头一个条件语句:为了支持HTML5元素,IE9也需要HTML5 shiv

<!--[if lt IE 9]> 
<script src="dist/html5shiv.js"></script> 
<![endif]--> 

该网站在IE7 &工作正常IE8 - 表明html5shiv是确实这样做很神奇。 但是,当我在IE9中测试网站时,它缺少HTML5元素内所有内容的样式。

只要我改变条件语句:

<!--[if IE]> 
<script src="dist/html5shiv.js"></script> 
<![endif]--> 

的HTML5元素和它的孩子们现在得到应用正确的样式。我doublechecked我的IE版本,它说我有IE版本9.0.8112.16421。

我还应该提到这些网站是使用PHP构建的,并通过使用PEAR的Cache_Lite进行缓存。然而,在一个简单的静态html页面上完成的测试对我来说也是一样的。

任何想法??

+0

什么是你的html文件的“doctype”?你使用'X-UA-COMPATIBLE'吗?顺便说一句。我认为在第二个例子中,你的意思是HTML5所建议的'<! - [if lte IE 9]>' – 2013-02-15 11:55:51

+0

<!DOCTYPE html>。在head元素下面,我使用。感谢您注意到,我更新了我的问题 - 我使用[如果IE] – 2013-02-15 11:57:28

+0

,并且您确定不使用' 2013-02-15 11:59:42

回答

29

我终于弄清楚了什么问题。 我在我的网站顶部注释了doctype html标记之前的评论。这似乎破坏了IE9识别HTML5元素的能力。

这是我有:

<!-- Served From Cache: Wednesday 13th of February 2013 03:02:22 PM --> 
<!DOCTYPE html> 
<html> 
    <head> 

所以当时我能够通过上下移动注释的文档类型下方,以解决这个问题。

+12

+ 1因为回到这里并让社区知道。您可能也想将其标记为正确的答案。作为一般规则,在Doctype之前不应该有任何事情,因为正如你所注意到的,奇怪的事情开始发生了! – 2013-02-15 17:06:40

0

试试这个代码

<!--[if lt IE 9]> 
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script> 
<![endif]--> 
+3

这对IE9问题有什么帮助? – JJJ 2013-02-15 12:09:07

+1

googlecode.com/svn/trunk/html5可以帮助IE9 – 2013-02-15 12:10:45

+2

你读过这个问题吗?他已经在使用shiv了。 *“只要我将条件语句更改为:... html5元素及其子元素现在可以应用正确的样式。”* OP想知道为什么IE9不设计元素* IE9应该原生支持HTML5元素。无论如何,编写'<! - [if lt IE 9]>'在IE9中不会做任何事情。 – JJJ 2013-02-15 12:14:00