我有一个带有以下HTML代码的文件:
<p><? comment ?></p>
Curl返回正常响应:
$ curl file:///path/to/the/file.html
<p><? comment ?></p>
但是当我使用Firefox 69或Chrome 77解析该响应时,由于HTML代码如下,因此没有任何显示:
<html><head></head><body><p><!--? comment ?--></p></body></html>
对我来说看起来很奇怪。为什么会发生?
谢谢。
答案 0 :(得分:6)
这是HTML标记化规则的一部分。
<
字符使您的浏览器进入tag-open-state。
12.2.5.6标签打开状态
使用下一个输入字符:
- U + 0021感叹号(!)
- 切换到标记声明打开状态。
- U + 002F SOLIDUS(/)
- 切换到结束标签打开状态。
- ASCII字母
- 创建一个新的开始标记令牌,将其标记名称设置为空字符串。重新使用标签名称状态。
- U + 003F问号(?)
- 这是unexpected-question-mark-instead-of-tag-name解析错误。创建一个注释令牌,其数据为空字符串。
- 在bogus comment state中恢复。
- ...
因此,将您的?
字符视为一个已知错误,然后解析器切换到bogus comment state,这会将所有内容放入注释令牌中的下一个>
字符。 / p>