代码之家  ›  专栏  ›  技术社区  ›  Travis Beale

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

  •  69
  • Travis Beale  · 技术社区  · 17 年前

    我想发表评论( <!-- this -->

    5 回复  |  直到 9 年前
        1
  •  37
  •   Roshana Pitigala Laxmansinghsodhanohdiyala    8 年前

    它是

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

    然而, 它带来 全部 IE的版本 怪癖模式 (除非是 被迫的 进入无怪癖模式,请查看 戈查斯 下节)。最简单的方法是将注释移动到DOCTYPE下方。

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

    但另一种方法是 升级 合适的 有条件的

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

    说明: 有条件的 评论没有 计数 作为评论,在IE的世界里。

    替代语法:

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

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

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

    戈查斯

    评论 内部 条件注释将使IE进入怪癖模式 如果IE看到它 如果 一个使用a [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。

    IE8和IE9 ,可以是 被迫的 通过使用微软的另一项发明 x-ua-兼容 指令。看 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]-->
    

    模式,而IE6和IE7将保持 怪癖 模式。然而,

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

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

        2
  •  126
  •   Komputist Ms2ger    15 年前

    写作 <!DOCTYPE> 第一个当然是最佳实践。

    <!DOCTYPE> 因为之前有一些看似无辜的东西——我认为只是空白,但也许这是一条评论。无论如何,这是一个可怕的、可怕的bug,必须追踪,而且肯定没有任何好的理由在之前添加注释或空格 <!DOCTYPE> .

    写作 <!DOCTYPE>

        3
  •  12
  •   Jerod Venema    17 年前

    虽然根据我认为的标准,这是可以接受的,但你肯定想避免它,因为它会让IE进入怪癖模式。

    (参见 Triggering different rendering modes )

        4
  •  3
  •   Kevin Newman    17 年前

    据报道,这可能会导致IE7在怪癖模式下渲染,就像根本没有doctype一样 this page .

        5
  •  0
  •   Komputist Ms2ger    15 年前

    允许在doctype之前添加注释,但原因 全部 IE版本将恢复到怪癖模式。事实上,它们有时会被用于这个目的。XML声明( <?xml version ...?> )具有相同的效果, .