firefox源代码查看器中的“Stray doctype”错误

时间:2013-11-08 00:45:09

标签: firefox xhtml doctype

由于我学会了以XML格式提供XHTML页面,我开始注意到一些奇怪的事情:每当我在Firefox源代码查看器中查看XHTML页面时,DOCTYPE 总是标记为错误。根据我从鼠标上面得到的工具提示,有问题的错误是“流浪的doctype”。根据我的理解,“流浪的doctype”意味着文档中间有一个额外的DOCTYPE,它不属于这种情况,这肯定不是这里的情况。

以下是一个示例 - 此标记将通过验证,并在所有现代浏览器中正确显示:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!--FF source viewer will mark the preceding two lines as an error.-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
  <head>
    <meta http-equiv="content-type"
      content="application/xhtml+xml; charset=utf-8" />
    <title>Sample XHTML Page</title>
  </head>
  <body>
    <p>This is an example.</p>
  </body>
</html>

这个错误消息特别奇怪,因为这些页面完美地通过了验证,并且单个解析错误通常会破坏页面。

3 个答案:

答案 0 :(得分:8)

我是此功能的开发人员。你找到了一个bug。 (Filed just now。)谢谢。

View Source语法高亮显示基于HTML解析器,因为我们的XML解析器不适用于此目的,并且XML非常罕见,因此将资源用于实现正确的XML View Source没有意义。因此,XML View Source功能是对HTML解析器的破解,这方面的工作并不正常。

答案 1 :(得分:0)

出现此错误是因为文件另存为UTF-8 BOM而不是UTF-8。在记事本中打开文件并更改其编码。

答案 2 :(得分:0)

除了@Public Sphere 的回答。

使用 <!DOCTYPE html> 时也会出现此警告。 <html><head><body> 标签(杂散开始标签“html”)可能也会显示相同的警告。

要检查 UTF-8 BOM 是否有问题:

  • 点击“网络”标签
  • 点击第一个请求
  • 在右侧的详细信息面板上,单击“响应”选项卡并展开“响应负载”
  • 您现在将看到原始响应。 文档类型行前面有一个红点, 并在悬停时显示“\ufeff”

要轻松找到可能导致问题的文件,您可以在 Linux 中使用此 grep 查找所有带有 BOM 的文件:

grep -rl $'\xEF\xBB\xBF' .