为什么这个标签会流浪,哪个是另一个元素?

时间:2015-07-02 07:59:24

标签: html wordpress

我正试图找出错误#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>

来自Validator的错误消息:

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

    从第211行第1列;到第211行,第7栏

    </script>↩</head>↩↩<bod

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

    从第213行第1栏;到第213行,第125栏

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

  3. 但严重的是,我不认为指出的错误确实存在。为什么关闭头部标签是流浪的,还有另一个身体元素打开?每当我检查源代码时,只有一个关闭头标记,并且实际上只有一个开放体标记。这些错误在哪里?

    欢迎任何反馈。

    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>
    

    以上是后端实际上的内容。我试着将它转移到身体,并尝试删除它。这两种方式都导致了进一步的错误。

    好吧,我认为假设进一步的错误是由修复引起的,这是错误的。正如下面一位评论者所提到的,通过修复一个错误,您可以使验证程序找到其他错误。

2 个答案:

答案 0 :(得分:2)

在HTML中,HEADBODY(以及HTML元素始终存在 * 。但是,标记元素开头和结尾的标记是可选的。 HTML解析器将根据需要插入打开和关闭标记,具体取决于文档包含的标记。

当遇到<span>元素中不允许的HEAD时,它会隐式关闭HEAD并打开BODY元素,就好像有一个{ {1}}和</head>标记。

稍后,解析器会遇到已经关闭的<body>元素的</head>标记,以及尝试打开另一个 {的HEAD标记{1}}元素。

只需删除<body>,将其移至BODY元素或将内容处理为SPAN或类似内容。

* HTML4框架集文档必须包含BODY元素而不是TITLE

答案 1 :(得分:0)

问题是<span>中有<head>个元素,这是无效的。

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

摆脱这种情况,你的问题就解决了。