Can comments appear before the DOCTYPE declaration?

前端 未结 5 1804
醉梦人生
醉梦人生 2020-11-27 15:39

I would like to place a comment ( style) at the very top of my HTML code, preceding the DOCTYPE declaration. Does this conform to the standar

5条回答
  •  感情败类
    2020-11-27 16:37

    It is fully valid to do

    
    
    

    However, it brings all versions of IE into quirks-mode (unless it is forced into no-quirks mode — see the Gotchas section below). The simplest is to move the comment below the DOCTYPE.

    
    
    

    But another way is to “upgrade” the comment into a suitable conditional comment, such as this:

    
    
    

    Explanation: a conditional comment does not count as a comment, in IE's world.

    Alternative syntax: To forget/remember that conditional comments are a Microsoft intrusion into the HTML standard, one could for instance do

    
    
    

    Likewise, to target IE in particular, one could do

    
    
    

    Gotchas

    A comment inside a conditional comment will bring IE into quirks-mode if IE sees it (that is: if one uses an [if IE] condition, or an equivalent to [if IE] — such as the [if !anybrowser] condition that I mentioned above.). So, for example, this would bring IE in quirks-mode:

    
    
    

    As would

    
    
    

    and many other variants. Whereas for example

    
    
    

    would not cause quirks-mode, because here the conditional comment has a DOCTYPE before any other content, and thus IE considers that the first content of the page is a DOCTYPE.

    Finally, the newest IE versions, IE8 and IE9, can be forced to standards-mode (and to quirks-mode as well) by the use of another Microsoft invention — the x-ua-compatible directive. See http://msdn.microsoft.com/en-us/library/cc288325(v=vs.85).aspx In that case, then

    
    
    
    

    will force IE8 and IE9 into no-quirks mode, while IE6 and IE7 will remain in quirks mode. Whereas, in contrast, this

    
    
    

    would force IE8 and IE9 into standards mode, despite that the content of the conditional comment does not start with a DOCTYPE. And IE6 and IE7 will also remain in no-quirks mode since the conditional comment doesn't target them.

提交回复
热议问题