La déclaration DOCTYPE doit-elle être la première balise d'un document HTML? [dupliquer]

StackOverflow https://stackoverflow.com/questions/69828

  •  09-06-2019
  •  | 
  •  

Question

    

Cette question a déjà une réponse ici:

         

Notre responsable de la sécurité insère dynamiquement un peu de javascript en haut de chaque page html lorsqu'une page est demandée par le client. Il est inséré au-dessus de l'instruction DOCTYPE. Je pense que cela pourrait être la cause des problèmes de mise en page que je rencontre.

Des idées, ça vous tente?

Était-ce utile?

La solution

Oui, DOCTYPE doit être la première donnée de la page: http: //www.w3schools. com / tags / tag_DOCTYPE.asp

Autres conseils

Oui, le DOCTYPE doit venir en premier.

La définition est ici: http://www.w3.org /TR/REC-html40/struct/global.html . Notez qu’un document est composé de trois parties et que la DTD doit être la première.

La recommandation pour HTML l'exprime en tant qu'application de SGML, ce qui nécessite que la déclaration DOCTYPE apparaisse avant l'élément HTML (en ignorant les commentaires HTML). Même sans SCRIPT, ajouter un élément HTML en dehors de l'élément HEAD (avant ou après celui-ci) n'est pas valide en HTML. Bien entendu, la validité HTML peut ne pas être une exigence pour vous, dans la mesure où cela fonctionne dans la plupart des navigateurs, et le changement de mode quirks mentionné vous donnera: sans la BODY, de nombreux navigateurs passeront en mode quirks, éventuellement en changeant la mise en page.

Je suppose que le fragment de script TAM est ajouté par un proxy ou un autre qui n'est pas en mesure d'analyser correctement la structure HTML de la page et d'insérer le <=> à la position correcte dans le <=> ou <=> de le document. Dans ce cas, l'ajout à la fin du document, bien que non valide en HTML, fonctionnera dans la plupart des navigateurs Web.

Cela pourrait cependant être la source de votre problème! Découvrez le & Quot; mode quirks & Quot; car cela dépend des paramètres de doctype. Étude complémentaire: http://www.quirksmode.org/ explication: vous pouvez basculer votre navigateur en mode compilant aux normes strictes (principalement IE) et en mode souple. Cela affectera grandement le rendu. Le réglage du répondeur aurait pu activer / désactiver cette fonction.

J'ai lu les spécifications W3 qui indiquent simplement qu’il existe 3 parties dans un document. La séquence est supposée et il n’ya pas d’instruction explicite interdisant, par exemple, un petit extrait de Js à l’avant.

Je comprends qu’il est possible de configurer TAM pour ajouter le js à la fin du document, mais cela m’empêche de le mettre au premier plan si cela peut poser des problèmes aussi évidents!

W3c (sur w3.org), sur une page intitulée html5 / syntax.html , dit & "un DOCTYPE est un préambule requis &"; ce que j’interprète comme signifiant que c’est nécessaire et que cela doit venir en premier.

Il indique également qu'il doit comporter les composants suivants dans cet ordre:

  1. Une chaîne qui ne correspond pas à la casse pour la chaîne <!DOCTYPE.
  2. Un ou plusieurs espaces.
  3. Une chaîne qui ne correspond pas à la casse pour la chaîne html.
  4. Éventuellement, une chaîne héritée DOCTYPE ou une chaîne DOCTYPE autorisée obsolète (définie ci-dessous).
  5. Zéro ou plusieurs espaces.
  6. Un caractère > (U + 003E).

Oui, le doctype doit être la première chose dans le document (à l'exception des commentaires). Vous devriez éviter d'insérer des scripts avant le doctype; les analyseurs conformes ne sont pas obligés de l'accepter. (Ils doivent accepter les scripts ajoutés après après le reste du document, s’il s’agit d’une alternative.)

À partir de la spécification HTML 5:

  

8.1 Rédaction de documents HTML

     

Cette section ne concerne que les documents, les outils de création et le balisage > générateurs. En particulier, il ne s’applique pas aux vérificateurs de conformité; > les vérificateurs de conformité doivent utiliser les exigences données dans la section suivante > (" analyse de documents HTML ").

     

Les documents doivent comprendre les parties suivantes, dans l'ordre indiqué:

     
      
  1. Facultativement, un seul " BOM " (U + FEFF) caractère.
  2.   
  3. N'importe quel nombre de commentaires et d'espaces.
  4.   
  5. UN DOCTYPE.
  6.   
  7. N'importe quel nombre de commentaires et d'espaces.
  8.   
  9. L'élément racine, sous la forme d'un élément html.
  10.   
  11. N'importe quel nombre de commentaires et d'espaces.
  12.   
  13. Les différents types de contenu mentionnés ci-dessus sont décrits dans les sections suivantes.
  14.   

Spécification HTML 4.01:

  

7 Structure globale d'un document HTML

     

Un document HTML 4 est composé de trois parties:

     
      
  1. une ligne contenant des informations sur la version HTML,
  2.   
  3. une section d'en-tête déclarative (délimitée par l'élément HEAD),
  4.   
  5. un corps qui contient le contenu réel du document. Le corps peut être implémenté par l’élément BODY ou l’élément FRAMESET.
  6.   
     

[...]

     

Un espace (espaces, lignes, lignes de tabulation et commentaires) peut apparaître avant ou après chaque section.

     

[...]

     

Un document HTML valide déclare la version de HTML utilisée dans le document. La déclaration de type de document nomme la définition de type de document (DTD) utilisée pour le document (voir [ISO8879]).

Ce n'est!! # 8217; n'est pas une étiquette, mais yup. Principalement parce que & # 8217; est le seul moyen de passer d’Internet Explorer (avant la version 8, je pense) en mode standard.

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