Question

Je voudrais placer un commentaire (style <!-- this -->) au sommet de mon code HTML, précédant la déclaration DOCTYPE. Est-ce conforme aux normes? Est-il pris en charge par les principaux navigateurs? Y a-t-il des pièges à faire cela?

Était-ce utile?

La solution

Ecrire <!DOCTYPE> première est certainement la meilleure pratique.

Je me souviens des problèmes étranges longtemps, il y a longtemps où certains navigateur (probablement IE6) ignoré <!DOCTYPE> parce qu'il y avait quelque chose qui semble innocent avant - je pense que des espaces, mais peut-être il était un commentaire . Dans tous les cas, il était un bug horrible, horrible d'avoir à traquer, et il n'y a certainement jamais une bonne raison d'avoir des commentaires ou des espaces avant le <!DOCTYPE> .

Ecrire <!DOCTYPE> premier est, je dirais, juste quelque chose que les développeurs web expérimentés faire pour éviter les bugs horribles, insaisissables.

Autres conseils

Il est pleinement valable pour faire

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

Cependant, il apporte tous les versions d'IE dans bizarreries mode (à moins qu'il soit forcé dans aucune -quirks Mode - voir le Gotchas 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 « upgrade » le commentaire dans un approprié conditionnel commentaire, comme ceci:

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

Explication:. conditionnel commentaire ne pas nombre comme commentaire, dans le monde IE

Syntaxe alternative: Pour oublier / rappelez-vous que les commentaires conditionnels sont une intrusion Microsoft dans la norme HTML, on pourrait par exemple faire

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

De même, pour cibler IE en particulier, on pourrait faire

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

Gotchas

Un commentaire dans un commentaire conditionnel apportera IE en bizarreries mode si IE voit (qui est: si on utilise un < strong> [si IE] état, ou un équivalent à [si IE] - comme le [si anybrowser!] condition que je l'ai mentionné ci-dessus).. Ainsi, par exemple, cela apporterait IE en mode bizarreries:

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

Comme on pouvait

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

et bien d'autres variantes. Alors que, par exemple

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

serait pas Cause bizarreries mode, parce que ici le commentaire conditionnel a un DOCTYPE avant toute autre Contenu et, par conséquent IE considère que le premier contenu de la page est un DOCTYPE.

Enfin, les nouvelles versions d'IE, IE8 et IE9 , peuvent être forcé à mode standard (et bizarreries en mode ainsi) par l'utilisation d'un autre Microsoft invention - x-ua compatible 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]-->

est la force IE8 et IE9 dans non-bizarreries Mode, tandis que IE6 et IE7 restent dans bizarreries Mode. Considérant que, en revanche, cette

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

serait la force IE8 et IE9 en mode standard, malgré que le contenu du commentaire conditionnel ne pas commencer par un DOCTYPE. Et IE6 et IE7 resteront également en un rien de bizarreries en mode depuis le commentaire conditionnel ne les vise pas.

Bien qu'il soit acceptable par la norme, je crois, vous voulez certainement éviter, car il va lancer IE en mode Quirks.

(Voir Déclencher différents modes de rendu )

Cela peut provoquer IE7 rendre en mode bizarreries comme si un doctype était pas là du tout, selon cette page .

Commentaires avant le doctype sont autorisés, mais provoquent toutes les versions IE pour revenir au mode de bizarreries. Ils sont, en fait, utilisés à cet effet parfois. La déclaration XML (<?xml version ...?>) ont le même effet, dans IE6 et ci-dessous .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top