【问题标题】:Why is this </head> tag stray and where's the other <body> element?为什么这个 </head> 标记会迷路,另一个 <body> 元素在哪里?
【发布时间】:2015-07-02 07:59:24
【问题描述】:

我正在尝试找出此处所述的错误 #5 和 #6:https://validator.w3.org/nu/?showsource=yes&doc=http%3A%2F%2Fwww.criminal-lawyers.com.au#l213c125

这是 HTML 页面的一个高度缩写的摘录(缩进并添加了一些注释):

<!DOCTYPE html>
<html lang="en-US" prefix="og: http://ogp.me/ns#">
 <head>
  <meta name="google-site-verification" content="hC6haEDgNzt-f1TAXuv9CrzeH2K5caXUbr-b1XSXcUo" />
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
  <title>Criminal Lawyers Melbourne - Doogue O&#039;Brien George</title>

<!-- Omitted huge number of <meta>, <link>, <style> and <script> elements -->

  <style type="text/css" id="custom-background-css">
    body.custom-background { background-color: #dddddd; }
  </style>
  <span style="display:none">SCS URL: http://www.criminal-lawyers.com.au<br>Page Id: 5150<br></span>
  <link href="https://plus.google.com/100949400750888670994" rel="publisher"/>
  <script type="text/javascript"> /* Omitted */ </script>
 </head>  <!-- Line 211 -->

 <body onload="_googWcmGet('number', '03-9670-5111')" class="home page page-id-5150 page-template-default custom-background ">

<!-- Omitted -->

 </body>
</html>

来自验证器的错误消息:

  1. 错误:杂散结束标记head

    从第 211 行第 1 列开始;到第 211 行第 7 列

    &lt;/script&gt;↩&lt;/head&gt;↩↩&lt;bod

  2. 错误:已看到开始标记body,但已打开相同类型的元素。

    从第 213 行第 1 列开始;到第 213 行,第 125 列

    ↩&lt;/head&gt;↩↩&lt;body onload="_googWcmGet('number', '03-9670-5111')" class="home page page-id-5150 page-template-default custom-background "&gt;↩ ↩ &lt;d

但是说真的,我认为指出的错误实际上并不存在。为什么结束的 head 标签是杂散的,并且还有另一个 body 元素打开?每当我检查源代码时,只有一个结束的 head 标签,实际上只有一个开放的 body 标签。这些错误在哪里?

将不胜感激任何反馈。

2015 年 7 月 3 日更新:

查看源代码时显示的span元素与后端不完全相同。它由另一组代码控制:

<span style="display:none">
<?php
global $wp;
$current_url = home_url(add_query_arg(array(),$wp->request));
echo "SCS URL: ".$current_url."<br>";
$page_id = get_the_ID();
echo "Page Id: ".$page_id."<br>";
if($page_id == 5133){
?>
<script>
//document.title = "Lawyers Profile | Criminal Lawyers Melbourne - Doogue O'Brien George";
</script>
<?php
//echo "it's the page";
}else{
//echo "it's not the page";
}
?>
</span>

以上是后端的实际情况。我试着把它转移到身体上,也试着简单地删除它。这两种方式都会导致更多错误。

好的,我认为认为进一步的错误是由于修复是错误的。正如下面一位评论者所提到的,通过修复一个错误,您可以让验证器找到其他错误。

【问题讨论】:

    标签: html wordpress


    【解决方案1】:

    在 HTML 中,HEADBODY(和 HTML元素始终存在*。然而,标记元素开始和结束的 标签 是可选的。 HTML 解析器将根据文档包含的标记根据需要插入开始和结束标记。

    当它遇到&lt;span&gt;,这是不允许在HEAD元素内的,它会隐式关闭HEAD并打开BODY元素,就好像有一个&lt;/head&gt;和一个&lt;body&gt;标签一样现在。

    稍后,解析器遇到了&lt;/head&gt; 标记,该标记表示已关闭的HEAD 元素,以及试图打开另一个 BODY 元素的&lt;body&gt; 标记。

    只需删除SPAN,将其移至BODY 元素或将内容放入TITLE 或类似元素中。


    *HTML4 框架集文档必须有FRAMESET 元素而不是BODY

    【讨论】:

    • 我希望所有 cmets 都以这种方式解释(谢谢!)。无论如何,我尝试删除跨度,转移到正文,并简单地删除原来在跨度内的整个元素。但这样做会产生更多错误。我更新了上述问题以提供更多信息。
    • 好的,如上所述,由此产生的进一步错误实际上可能并不表明建议的修复是错误的。
    • 谢谢!我不再困惑!
    【解决方案2】:

    问题是您在&lt;head&gt; 中有一个&lt;span&gt; 元素,这是无效的。

    <span style="display:none">
    SCS URL: http://www.criminal-lawyers.com.au<br>Page Id: 5150<br></span>
    

    摆脱这个,你的问题就解决了。

    【讨论】:

    • 这看起来并不简单。我尝试删除它并将其转移到正文中,但都导致了进一步的错误。
    • @SandyAlbaytarJr。是的,您的代码中还有其他不相关的错误。通过修复此问题,您可以让验证器找到其他人。
    猜你喜欢
    • 2021-10-08
    • 1970-01-01
    • 1970-01-01
    • 2019-10-26
    • 1970-01-01
    • 1970-01-01
    • 2019-03-11
    • 2023-03-18
    • 1970-01-01
    相关资源
    最近更新 更多