我遇到了我正在尝试调试的Angular / AMP设置的配置问题。我对这个问题有所预感,但是我无法验证某些编译器是否会在没有<!DOCTYPE html>
的情况下误解HTML注释(这本身就是一个问题)。
为了简单概述我正在使用的页面,该网站在非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浏览器中查看AMP链接63一切看起来都有效,但在继续深入研究问题之前,我想排除这一假设。
非常感谢并为这个愚蠢的问题道歉:)
答案 0 :(得分:2)
在此背景下,Chrome 41 from February 2015不被视为旧浏览器。
查看here一个关于下载旧版本的线程,以确保完全正确。
答案 1 :(得分:2)
目前尚不清楚“编译器”是什么意思,但就浏览器中HTML 解析器的行为而言,我认为你可以排除任何浏览器解析器在标记中处理注释的情况根据文档是否具有doctype,问题中的代码段会有所不同。
每the parsing algorithm defined in the HTML spec,缺少doctype会将HTML解析器放入quirks mode,并且会出现解析/呈现行为中的一些“怪癖” - 有些文档记录在https://quirks.spec.whatwg.org/,其他文档记录在案在HTML规范本身的DOM,CSSOM和CSSOM View规范中,以及What happens in Quirks Mode?
等地方的非正式规范但是在所记录的怪癖中,没有任何与解析评论相关的怪癖。
如果存在这样的怪癖,它几乎肯定会成为HTML规范本身的解析算法的一部分。
我想可以想象一个不符合HTML规范中的解析算法的解析器可能会对问题中显示的标记片做一些不同的事情 - 但就浏览器中的解析器而言,至少所有现代浏览器版本都是如此过去6年已经实现了符合HTML规范中的解析算法的解析器。
例如,Chrome has implemented a spec-conforming HTML parser自Chrome 7(2010)以来。
所以我认为你可以消除任何浏览器引擎根据文档类型是否存在而对标记案例进行不同解析的可能性。