Double Possible:
La déclaration DOCTYPE être la première balise dans un document HTML?Je voudrais placer un commentaire (
<!-- this -->
style) tout en haut de mon code HTML, précédant la déclaration DOCTYPE. Est-ce à se conformer aux normes? Est-il pris en charge par les principaux navigateurs? Existe-il des pièges en faisant cela?
Réponses
Trop de publicités?Il est pleinement valable de le faire
<!-- this, -->
<!DOCTYPE html>
Cependant, il apporte toutes les versions d'IE en quirks mode (sauf si c'est forcé dans le no en mode quirks - voir les Pièges de la section ci-dessous). Le plus simple est de déplacer le commentaire ci-dessous le DOCTYPE.
<!DOCTYPE html>
<!-- this, -->
Mais une autre façon est de "mise à niveau" le commentaire dans un adapté conditionnelle commentaire, comme ceci:
<!--[if !IE]> this <![endif]-->
<!DOCTYPE html>
Explication: un conditionnel commentaire n'est pas compter comme un commentaire, dans IE monde.
Syntaxe Alternative: À oublier/rappelez-vous que les commentaires conditionnels sont un Microsoft intrusion dans le standard HTML, on pourrait par exemple faire
<!--[if anybrowser]> this <![endif]-->
<!DOCTYPE html>
De même, la cible c'est à dire en particulier, que l'on pourrait faire
<!--[if !anybrowser]> this <![endif]-->
<!DOCTYPE html>
Pièges
Un commentaire à l'intérieur d' un commentaire conditionnel apportera IE en quirks mode si IE voit (ce qui est: si l'on utilise un [if IE] condition, ou un équivalent à [if IE] - comme le [if !anybrowser] condition que je l'ai mentionné ci-dessus.). Ainsi, par exemple, ce serait mettre IE en quirks mode:
<![if IE]><!-- this --><![endif]>
<!DOCTYPE html>
Comme
<!--[if IE]><!--><!-- this <![endif]-->
<!DOCTYPE html>
et beaucoup d'autres variantes. Alors que par exemple
<!--[if IE]><!DOCTYPE html><!--><!-- this <![endif]-->
<!DOCTYPE html>
serait pas la cause quirks mode, car ici le commentaire conditionnel a un DOCTYPE avant tout autre contenu, et donc IE considère que le premier contenu de la page est un DOCTYPE.
Enfin, le plus récent versions IE, IE8 et IE9, peut être forcé à des normes-mode (et quirks mode en tant que bien) par l'utilisation d'un autre Microsoft invention - le x-ua-compatible avec la directive. Voir http://msdn.microsoft.com/en-us/library/cc288325(v=vs. 85).aspx Dans ce cas,
<!-- this -->
<!DOCTYPE html>
<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=8" ><![endif]-->
sera force de IE8 et IE9 en no-quirks mode, alors que IE6 et IE7 restera dans quirks mode. Tandis que, en revanche, ce
<!--[if gte IE 8]><meta http-equiv="X-UA-Compatible" content="IE=8" ><![endif]-->
<!DOCTYPE html>
serait vigueur IE8 et IE9 en mode standard, malgré que le contenu du commentaire conditionnel ne pas commencer avec un DOCTYPE. Et IE6 et IE7 restera aussi dans la non-mode quirks, depuis le commentaire conditionnel ne cible pas eux.
Écrit le DOCTYPE première est certainement la meilleure pratique.
Je me souviens d'étranges problèmes a long, long time ago, où certains navigateur (probablement IE6) ignoré un DOCTYPE parce qu'il y avait quelque chose d'apparemment innocent avant d' - je pense que tout les espaces, mais c'était peut-être un commentaire. En tout cas, c'était un horrible, horrible bug pour avoir de la piste vers le bas, et il n'y a certainement jamais aucune bonne raison d'avoir des commentaires ou d'espace avant le DOCTYPE.
L'écriture de la DÉCLARATION du premier est, je dirais, quelque chose de juste des développeurs web expérimentés faire pour éviter d'horribles, insaisissable bugs.
Selon cette page, IE7 pourrait afficher le mode quirks comme si aucun type de document n’était présent .