没有DOCTYPE的HTML注释

ke

我正在尝试调试的Angular / AMP设置遇到配置问题。我对可能的问题有预感,但是我在验证某些编译器是否会误解没有注释的HTML注释时遇到了麻烦<!DOCTYPE html>(这本身就是一个问题)。

为了提供我正在使用的页面的简单概述,该网站在none AMP页面上的DOM中提供了类似于以下内容的内容(请注意,缺少<!DOCTYPE html>)。

<html>
<head>
  <!---->
    <link rel="amphtml" href="https://www.foo.com/amp/document.html">
  <!---->

</head>
  <body>
    <p>Foo site</p>
  </body>
</html>

Angular模板将检查该站点是否为有效的AMP页面,如果是,将返回AMP链接,并保留在<!---->

我意识到有效的HTML注释类似于<!-- foo -->,但是<!----><link rel="amphtml" ... ><!---->如果<!DOCTYPE html>不存在,编译器能否将其解释为注释具体来说,Chrome 41可以将其视为注释吗?

在Chrome 63中查看AMP链接看起来一切正常,但是在继续研究该问题之前,我想排除这一假设。

在此先感谢并为这个愚蠢的问题表示歉意:)

sideshowbarker

目前尚不清楚“编译器”的含义,但就HTML解析器在浏览器中的行为而言,我认为您可以排除任何浏览器解析器根据是或否以不同的方式处理问题中标记片段中的注释的情况。该文档没有文档类型。

根据HTML规范中定义的解析算法,缺少doctype会使HTML解析器处于怪癖模式,并且在解析/渲染行为中出现了许多“怪癖”-一些文档记录在https://quirks.spec.whatwg.org /和在DOMCSSOMCSSOM View规范中,在HTML规范本身中以及非正式地在“怪癖模式中会发生什么?”的地方记录的其他文档

但是,在所有这些记录的怪癖中,没有一个与注释的解析有关。

如果存在这样的怪癖,那几乎肯定是HTML规范本身中解析算法的一部分。

我想这是可以想象的,不符合HTML规范中的解析算法的解析器可能会与问题中显示的标记代码片段有所不同-但就浏览器中的解析器而言,所有最新的浏览器版本至少适用于最后6个年以来,已经实现了符合HTML规范中的解析算法的解析器。

例如,Chrome 7(2010)起,Chrome已实现符合规范的HTML解析器

因此,我认为您可以消除任何浏览器引擎根据doctype是否存在来解析标记情况的可能性。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章