浏览器

时间:2015-05-22 15:17:18

标签: html browser tags xhtml

我收到的XHTML文档有时包含以下代码:

<div align="center" />

我的问题是浏览器(Firefox 38.0.1,Chrome 43.0.2357.65)将此代码显示为开始<DIV>标记,而不是像我预期的那样将其显示为空div(<DIV></DIV>)。因此,文件的其余部分完全搞砸了。

是浏览器错误还是XHTML功能?代码看起来完全合法(虽然没有意义,但我不是生产者)并且被XML解析器接受(Perl XML :: LibXML,https://validator.w3.org/check)。

您可以使用以下XHTML代码检查浏览器中的内容(由https://validator.w3.org验证)。最后一个DIV显示为带边框的文本,它不应该是

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>Foo</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  </head>
  <body>
    <div style="border: 1px solid black; color: red;">
      <div />
      <div>Should be red and inside the border.</div>
    </div>
    <div>Should be outside the border and not red.</div>
  </body>
</html>

与XHTML Strict Doctype相同。

1 个答案:

答案 0 :(得分:1)

解决方法是,不要这样做!

在HTML中,<div>标记是开始标记,无论它是否包含//被视为错误并被丢弃。

在XHTML中,这将是一个完整的div,是的。但是,如果XHTML文件以application/xhtml+xml MIME类型提供,则它们只是XHTML文件 这个文件的内容是什么并不重要;如果文件的MIME类型为text/html,则就浏览器而言,它是一个HTML文件。

文件扩展名为.xhtml的普通文件被视为XHTML,.html被视为HTML。如果您使用的是PHP或ASP.NET等系统,则需要为MIME类型发送相应的HTTP标头,否则它将使用默认值(通常是text / html)。