IE9也需要HTML5 shiv以支持HTML5元素

am_*_*am_ 11 html5 internet-explorer-9 html5shiv

我在页面中使用以下HTML5元素:header,article,section和nav.现在我将所有上面的HTML5元素设置为display:block,并在标题中包含带有条件语句的HTML5 shiv:

<!--[if lt IE 9]>
<script src="dist/html5shiv.js"></script>
<![endif]-->
Run Code Online (Sandbox Code Playgroud)

该网站在IE7和IE8中运行良好 - 表明html5shiv确实在做它的魔力.但是当我在IE9中测试网站时,它缺乏HTML5元素内部所有内容的样式.

只要我将条件语句更改为:

<!--[if IE]>
<script src="dist/html5shiv.js"></script>
<![endif]-->
Run Code Online (Sandbox Code Playgroud)

html5元素及其子元素现在可以应用正确的样式.我仔细检查了我的IE版本,它说我有IE版本9.0.8112.16421.

我还要提一下,这些站点是用PHP构建的,并通过使用PEAR的Cache_Lite进行缓存.但是,在一个简单的静态html页面上完成的测试为我提供了相同的结果.

有任何想法吗??

am_*_*am_ 30

我终于弄明白了问题是什么.在doctype html标记之前,我在我的网站顶部发表了评论.这似乎打破了IE9识别HTML5元素的能力.

这就是我所拥有的:

<!-- Served From Cache: Wednesday 13th of February 2013 03:02:22 PM -->
<!DOCTYPE html>
<html>
    <head>
Run Code Online (Sandbox Code Playgroud)

因此我可以通过在doctype下面移动注释来解决这个问题.

  • + 1回到这里,让社区知道.您可能也想将此标记为正确答案.作为一般规则,在Doctype之前不应该有任何变化,因为,正如您所注意到的,奇怪的事情开始发生! (12认同)