什么时候XHTML会在IE上意外导致问题?

时间:2009-05-29 04:33:06

标签: html internet-explorer xhtml

因为IE不会将XHTML呈现为XHTML,而是将其视为HTML,这何时会导致IE出现问题?

4 个答案:

答案 0 :(得分:2)

我知道一个案例,其中

<div style="clear:both" />

在支持XHTML的浏览器中,div已关闭。但IE会将div视为仍处于打开状态,因此布局可能会在以后产生意外结果。

答案 1 :(得分:1)

如果未将MIME类型指定为text / html,则Internet Explorer将无法区分XHTML文档和XML文档。但是,因为它完全支持HTML 4.01,所以大多数问题都来自定位,布局和CSS属性的不一致和非标准实现。为避免任何问题,最好编写有效的XHTML并指定DOCTYPE。

A list of all known Internet Explorer Bugs

答案 2 :(得分:1)

  • 自动关闭语法不起作用(它似乎仅适用于HTML中始终为空的元素)。 XML序列化程序可能生成<textarea/><script/>和类似的东西,它们以各种方式中断页面(触发复杂的错误恢复,有时涉及重新解析页面的其余部分)。

  • 明确关闭的HTML“空”元素可能表现得很奇怪(</br>在IE中插入中断。)

  • 在HTML的硬编码<![CDATA[元素之外的
  • CDATA将被识别为标记。它不会影响转义,也可能会使某些内容消失。

  • 在HTML的CDATA元素(即<script>)中,将无法识别实体。 XHTML需要<script> if (1 &lt; 2) …,这将是IE中的语法错误。

  • <body>的背景将在IE中以不同方式应用。

  • CSS中没有针对名称空间感知选择器的跨浏览器语法。

  • 您将获得所有隐含的HTML元素(例如,所有表中的<tbody>)和隐含的封闭元素(当文档有效时通常不会出现问题,但其他浏览器不会长时间警告您因为标记格式正确)。

  • 带前缀的元素和属性不会被命名空间,并且在IE中会得到不同的tagName(这在XML中也是非法的)。它们也不会获得适当的默认样式和行为(<xhtml:a>不能成为链接)。

  • 您将无法使用createElementNS之类的名称空间感知方法(它们在IE中不存在),.tagName在IE中将为大写,但并非在所有情况下都是

  • 带前缀的元素和属性不会被命名空间,并且会在IE中获得不同的本地名称(在XML中也是非法的)。

这些只是有关从工作XML文档切换到HTML的问题。当你从HTML(即每个人都期望并采取正常行为)到真正的XML时,有很多惊喜,例如, document.write无法使大部分Google的脚本无效。

答案 3 :(得分:0)

这些都适用于任何将XHTML视为text / html而非具体IE的浏览器,但您应该阅读XHTML 1.0规范的附录C:http://www.w3.org/TR/xhtml1/#guidelines