gpt4 book ai didi

html - 注释可以出现在 DOCTYPE 声明之前吗?

转载 作者:技术小花猫 更新时间:2023-10-29 11:33:26 31 4
gpt4 key购买 nike

我想在我的 HTML 代码的最顶部,DOCTYPE 声明之前放置一个注释(<!-- this --> 样式)。这符合标准吗?主流浏览器是否支持?这样做有什么陷阱吗?

最佳答案

完全有效

<!-- this, -->
<!DOCTYPE html>

但是,它会将 所有 版本的 IE 带入quirks-mode(除非它被强制进入 no -怪癖模式——参见下面的陷阱部分)。最简单的是将注释移到 DOCTYPE 下方。

<!DOCTYPE html>
<!-- this, -->

但另一种方法是将评论“升级”合适的条件评论,例如:

<!--[if !IE]> this <![endif]-->
<!DOCTYPE html>

说明:条件评论在 IE 的世界中不算评论。

替代语法:要忘记/记住条件注释是 Microsoft 对 HTML 标准的入侵,例如可以这样做

<!--[if anybrowser]> this <![endif]-->
<!DOCTYPE html>

同样,要特别针对 IE,可以这样做

<!--[if !anybrowser]> this <![endif]-->
<!DOCTYPE html>

陷阱

条件注释的注释将使 IE 进入怪癖模式如果 IE 看​​到它(即:如果一个人使用 < strong>[if IE] 条件,或等效于 [if IE] — 例如我上面提到的 [if !anybrowser] 条件。)因此,例如,这将使 IE 进入怪癖模式:

<![if IE]><!-- this --><![endif]>
<!DOCTYPE html>

如愿

<!--[if IE]><!--><!-- this <![endif]-->
<!DOCTYPE html>

和许多其他变体。而例如

<!--[if IE]><!DOCTYPE html><!--><!-- this <![endif]-->
<!DOCTYPE html>

不会导致怪癖模式,因为这里条件注释在任何其他内容之前有DOCTYPE , 因此 IE 认为页面的第一个内容是 DOCTYPE。

最后,最新的 IE 版本,IE8 和 IE9,可以通过使用另一个 Microsoft发明 — x-ua-compatible 指令。参见 http://msdn.microsoft.com/en-us/library/cc288325(v=vs.85).aspx既然如此,那么

<!-- this -->
<!DOCTYPE html>
<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=8" ><![endif]-->

强制 IE8 和 IE9 进入no-quirks 模式,而 IE6 和 IE7 将保持quirks 模式。而相比之下,这个

<!--[if gte IE 8]><meta http-equiv="X-UA-Compatible" content="IE=8" ><![endif]-->
<!DOCTYPE html>

强制 IE8 和IE9 进入标准模式,尽管条件注释的内容以DOCTYPE 开头。 IE6 和 IE7 也将保持无怪癖模式,因为条件注释不针对它们。

关于html - 注释可以出现在 DOCTYPE 声明之前吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/941100/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com