【问题标题】:Chrome puts everything HTML tag between HEAD and BODY into BODYChrome 将 HEAD 和 BODY 之间的所有 HTML 标签放入 BODY
【发布时间】:2016-06-30 06:10:12
【问题描述】:

所以我的代码是这样的

<!DOCTYPE HTML>
<html>
<head></head>

<header> something </header>

<body> </body>
</html>

每当我在 chrome 中加载它时,chrome 都会将 header 标记放在 body 标记中,这让我很沮丧。我在 Safari 中尝试了这个,并且源代码显示很好,正如我所期望的那样。

为什么 chrome 会这样做?

【问题讨论】:

  • 为什么这会让您感到沮丧?您似乎不了解头部和身体元素实际上是什么。此外,如果 Safari 以不同的方式处理这一点,我也会感到惊讶 - 确保您查看的是网络检查器,而不是老式的查看源代码。
  • @BoltClock 因为我知道将某些内容放在 body 标签之外是一种有效的 html 格式,但是标签被强制放入 body 标签中。不仅适用于标题,还适用于其他任何内容。

标签: html google-chrome


【解决方案1】:

所有应该可见的都属于&lt;body&gt;。因此,Chrome 实际上是在为您修复 HTML。验证您的 HTML 代码 https://validator.w3.org/

为了有效,您的代码应该如下所示:

<!DOCTYPE HTML>
<html>
   <head>
     <title>Some Title</title>
   </head>
   <body>
      <header> something </header>
   </body>
</html>

【讨论】:

  • 不包含正文标签是否有效..?这也发生在 div 和任何标签上,所以我不明白为什么它被强制进入 body 标签
  • @innhyu:您似乎将标签与元素混淆了,在这种情况下,我不怪您 - 许多来源,包括 SO 上的其他人,经常得到这两个混淆了,实际上它们是完全不同的东西。您可以省略 body tags 因为它们是可选的,但它不会阻止生成 body 元素,也不会阻止需要在 body 元素中的元素移动到 body 元素中。但是,当您有明确的正文 标签 时,将这些元素放在它们之外就是告诉解析器您希望它们在正文之外,这是不允许的。
  • 啊..这更有意义。我把“有效省略”放在哪里并不重要..
  • @BoltClock 感谢您的意见,我非常感谢,但我认为情况并非如此......
  • @innhyu - BoltClock 很到位。准确的定义来自 HTML 解析器规范。在&lt;/head&gt; 标记之后,树构造函数插入模式处于“头后”阶段。它看到&lt;header&gt; 标记并跟随"anything else" rulleInsert an HTML element for a "body" start tag token with no attributes. Switch the insertion mode to "in body". Reprocess the current token. 因此body 元素由&lt;header&gt; 标记创建,然后在其中创建标题元素。
【解决方案2】:

不管怎样,标题是要被看到的,它属于正文

【讨论】:

    猜你喜欢
    • 2013-01-27
    • 2011-09-12
    • 1970-01-01
    • 2013-07-28
    • 2018-09-25
    • 2014-06-16
    • 1970-01-01
    • 1970-01-01
    • 2016-05-06
    相关资源
    最近更新 更多