Que se passe-t-il si les balises meta sont présentes dans le corps du document?

Je travaille sur une application ASP et le code, le modèle et les fichiers sont organisés de manière à ne rien modifier en dehors de la balise body. Donc, je pense à insérer les balises meta à l’intérieur du corps – comme ceci:

    Default Title     
<meta name="description" content="">

Je me demande comment il est bon de mettre des balises META dans le corps d’un document HTML. Comment cela affecte-t-il:

  1. moteurs de recherche
  2. les navigateurs

Ceci est bien sûr invalide selon HTML4.01. Les balises META ne sont autorisées que dans HEAD (comme, par exemple, TITLE). En les plaçant dans un corps, vous créez essentiellement un balisage invalide.

D’après les tests superficiels, il semble que certains navigateurs (par exemple, Firefox 3.5 et Safari 4) placent ces éléments dans HEAD lors de la création d’un arbre de document. Ce n’est pas très surprenant: les navigateurs sont connus pour tolérer et essayer d’interpréter toutes sortes de balisages brisés.

Avoir un marquage invalide est rarement une bonne idée . Un traitement non standard par les navigateurs peut entraîner diverses incohérences de rendu (et comportementales) difficiles à épingler. Au lieu de compter sur le devinement du navigateur, il est préférable de suivre un standard.

Je ne sais pas comment les moteurs de recherche réagissent à une telle soupe, mais je ne risquerais pas d’expérimenter pour savoir 🙂 Peut-être qu’ils parsingnt uniquement la balise HEAD pour certaines informations et ignorent complètement vos balises contenues dans BODY. Ou peut-être considèrent-ils que ce sont des tentatives de jeu malveillantes et des pages de liste noire contenant un tel balisage. Qui sait.

La ligne du bas – évitez ceci chaque fois que possible.

L’essentiel est d’éviter cela chaque fois que possible lorsque le DOCTYPE l’interdit . Je pense que cela est définitivement permis en HTML5 et très utile dans les cas d’utilisation de microdonnées. Exemple: http://schema.org/Event

Je ne le ferais pas Ce n’est pas là que vont ces tags, et les moteurs de recherche peuvent le voir comme du spamming. Si vous pouvez réorganiser le gabarit, vous pouvez toujours append un contentplaceholder dans la section head. Je l’ai fait sortingvialement avec:

  

De cette façon, vous pouvez append le contenu de votre choix dans la section head de votre page:

    

Si votre objective est l’optimisation des moteurs de recherche, il est probablement judicieux de suivre les normes et de mettre toutes vos balises META dans . Cependant, en ce qui concerne le comportement du navigateur, si vous placez des balises dans votre elles fonctionneront toujours. J’ai décidé de tester ceci en utilisant plusieurs balises et des balises dans un document conforme aux normes.

Les résultats de mes tests:

Firefox 18, Firefox 3.6, Firefox Mobile, Chrome 24, Chrome pour mobile, Opera 12, IE6, IE8, IE10:

  • Toutes les balises du corps ont été traitées.
  • La première du document a été traitée, même si elle se trouvait dans le corps. Les balises ont été ignorées.
  • La première directive de rafraîchissement de méta a pris effet, impliquant que les deux ont été traitées.

IE9:

  • Comme ci-dessus, sauf que toutes les balises du corps ont été ignorées.
  • IE10 en mode IE9 Standards se comporte également comme ceci.
  • IE9 en mode IE8 Standards s’est comporté de la même manière que IE8, autorisant 1 dans le corps.

Alors, que se passe-t-il lorsque vous utilisez des balises meta dans le corps? Dans l’ensemble, ils semblent bien fonctionner. Les balises meta seront probablement traitées, donc si vous ne pouvez pas les mettre dans la tête, je ne me tracasserai pas trop.

Certaines balises META destinées aux moteurs de recherche ne seront pas respectées par les moteurs de recherche dans la section Corps de la page.

Par exemple, Google dit qu’il n’honorera pas un rel = canonique dans le corps de la page, mais seulement en tête de page. Voici ce que dit Matt Cutts de Google :

Nous n’autorisons pas rel = canonical dans le BODY (car comme je l’ai mentionné, les gens spamteraient cela),

Je vous dirais de l’utiliser. J’ai trouvé des balises META dans le corps sur différentes pages Web et elles figurent dans l’une des 10 meilleures recherches (sur Google). Cela montre, au moins pour moi, que les moteurs de recherche ne sont pas dérangés si vous avez utilisé cette approche.

Vous devez y aller s’il n’y a pas d’autre moyen.

J’ai mis des balises META dans le corps, mais c’est à cause de la technologie Microdata. Lorsque je n’ai pas un élément régulier avec l’info, que je dois décrire l’object en fonction du vocabulaire schema.org, j’ai défini une balise meta avec ce contenu. Je préfère le faire à la place, pour définir un élément avec display: none. La voie avec l’affichage: aucun ne peut causer plus de problèmes à la place de Google, à ma connaissance. Je suis d’accord que ce n’est pas la meilleure pratique, mais quand je valide mon document (HTML5), je passe la validation avec zéro erreur. J’ai aussi fait ce tour pour plusieurs projets et aucun d’entre eux n’a de problèmes avec Google ou d’autres moteurs de recherche. Même les microdonnées améliorent le classement des moteurs de recherche. Je ne sais pas exactement ce que vous voulez faire avec ces balises META dans le corps, car je n’ai pas vu de microdonnées dans votre code. Si vous en avez besoin pour cette approche, je pense que c’est ok, mais dans d’autres cas, les méta-éléments doivent être dans la section head!

Avoir la balise META Description dans les sites Web est une balise invalide, mais ce n’est pas un problème majeur, car les moteurs de recherche peuvent régulièrement trouver la balise où qu’elle se trouve. Mon site Web le fait, regardez mon HTML

http://cameras.specced.co.uk/compare/268/Canon_EOS_200D

Le META se trouve sur le site Web BODY, mais il a été indexé par Google et la description de la page a été définie comme le texte à cliquer dans les résultats de recherche Google.