【问题标题】:Validation errors (like "Stray start tag html") that I can't seem to shake on header.php我似乎无法在 header.php 上动摇的验证错误(如“Stray start tag html”)
【发布时间】:2017-04-06 14:58:16
【问题描述】:

运行验证并遇到一些错误。

    f<!DOCTYPE html>↩
    <!--[if IE 8 ]><html class="ie ie8 no-js" lang="en-US" prefix="og: http://ogp.me/ns#"> <![endif]-->↩
    <!--[if (gte IE 9)|!(IE)]><!--><html class="no-js" lang="en-US" prefix="og: http://ogp.me/ns#"> <!--<![endif]-->↩
    <head>↩

我尝试将 header.php 保存为(UTF-8,无 BOM),但我似乎无法在开始时动摇非空格字符('f')。

这是 PHP 代码:

<!DOCTYPE html>
<?php
/**
 * Theme Header
 *
 * Outputs <head> and header content (logo, tagline, navigation)
 */
?>
<!--[if IE 8 ]><html class="ie ie8 no-js" <?php language_attributes(); ?>> <![endif]-->
<!--[if (gte IE 9)|!(IE)]><!--><html class="no-js" <?php language_attributes(); ?>> <!--<![endif]-->
<head>

然后,我不知道从哪里开始“stray html”错误标签。自己检查http://wsumc.com/worship

【问题讨论】:

  • 有 PHP 吗? f 来自哪里?
  • DOCTYPE 必须排在第一位,所以删除f
  • 向我们展示实际的 PHP 代码。
  • 我不知道 f 来自哪里 - 它不在 php 文件中。 ...
  • 好的 - 我找到了 f ... 它在父主题的头文件中。 ...现在要解决一系列全新的错误。

标签: php html html-parsing w3c-validation


【解决方案1】:

看着https://validator.w3.org/nu/?doc=http://wsumc.com/worship/……

“Stray start tag html 消息只是开头 f 的另一个副作用。

HTML 的工作方式是,f 是裸文本——head 元素不能包含它——因此它意味着文档的正文已经开始,随后的所有内容都是正文的一部分.因此,当 HTML 解析器看到 f 时,解析器会生成一个 &lt;body&gt; 开始标记。

但是解析器接下来看到的是&lt;!DOCTYPE html&gt;——现在在body——所以解析器说,“Stray doctype”然后继续。但是接下来解析器找到的是一个&lt;html&gt; 开始标记,现在它也在body 中——所以解析器说,“Stray start tag html

Parsing HTML documents section of the HTML spec 定义了所有这些是如何工作的(尽管对于大多数读者来说,这显然不是一种超级平易近人的方式……)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-28
    相关资源
    最近更新 更多