IE8无法正确呈现HTML

时间:2014-01-14 12:14:12

标签: html css internet-explorer internet-explorer-8

我在IE8中遇到了一些我以前从未见过的问题。基本上问题是有一个导航菜单,其中包含以下标记内的样式:

      <section class="top-bar-section">

        <ul class="left">

          <li>
            <a href="#">Link</a>
            <a href="#">Link</a>
            <a href="#">Link</a>
            <a href="#">Link</a>
            <a href="#">Link</a>
          </li>

        </ul>

      </section>

    </nav>

但是在IE8中,我正在查看dom树,并且HTML没有像上面那样呈现。下面是比较IE8和Chrome中的dom树的图片。

IE8 and Chrome Dom tree comparision

您可以看到nav,section和UL元素正在关闭,而不是彼此的父元素和子元素。这导致CSS规则出现问题,因为它们需要让孩子和父母允许应用css规则。

3 个答案:

答案 0 :(得分:2)

IE8不支持<section>标记。

它是新的HTML5标签之一,并且在IE8发布时尚未发明。因此,IE8对此一无所知。

IE8默认不渲染未知元素。

为了使IE8能够理解<section>标记和其他新的HTML5标记,您需要使用html5shiv polyfill脚本。此脚本可帮助IE8将这些标记识别为有效的HTML,从而正确呈现它们。

您还可以使用Modernizr,它具有帮助处理旧浏览器的其他功能,还包括HTML5shiv功能。

当然,另一种选择就是不使用新的HTML5标签;只需使用<div>,IE8就可以正常工作而不需要任何javascript黑客攻击。

答案 1 :(得分:1)

IE 8需要HTML5Shiv脚本才能使用HTML5标签。 主要的解决方法是在文档头部创建HTML5 section元素:

document.createElement("section")

以某种方式让CSS引擎知道具有该名称的元素存在。

  

诀窍是调用document.createElement(“section”)会   突然导致IE识别section元素。没有人知道为什么,   但它工作,你甚至不需要使用由它返回的节点   功能

this文章,它解释了为什么IE8需要这个脚本。

答案 2 :(得分:1)

这是因为您使用的是HTML5标记section,当然IE8不支持HTML5标记,因为您可以在CanIUse中看到

Internet Explorer 8及更早版本不支持<section>标记。

您需要“启用”HTML5 iN IE8的内容HTML5 ShivingModernizr

HTML5Shiv 是一种JavaScript解决方法,可在版本9之前的Internet Explorer版本中启用HTML5元素的样式化

Modernizr 是一个小型JavaScript库,可检测下一代Web技术的本机实现的可用性,即源自HTML5和CSS3规范的功能