Acerca de este problema HTML
Este error es engañoso a primera vista porque la etiqueta <meta> en cuestión a menudo está perfectamente bien formada. El problema real suele estar arriba de la etiqueta <meta> — un elemento que no pertenece en <head> (como <img>, <div>, <p>, u otro contenido de flujo) ha sido colocado allí. Cuando el analizador HTML encuentra tal elemento dentro de <head>, cierra implícitamente el <head> y abre el <body>. A partir de ese punto, cualquier etiqueta <meta> posterior está ahora técnicamente dentro del <body>, donde el atributo name en <meta> no está permitido.
En otros casos, el error también puede ocurrir cuando una etiqueta <meta name="..."> se coloca explícitamente dentro de <body>, o cuando un error tipográfico o una etiqueta mal formada anteriormente en el documento rompe la estructura esperada del documento.
Esto es importante por varias razones. Los motores de búsqueda y las plataformas de redes sociales dependen de que las etiquetas <meta> estén en el <head> para extraer descripciones de páginas, datos de Open Graph y otros metadatos. Si la estructura del documento está rota y las etiquetas <meta> terminan en el <body>, estos metadatos pueden ser ignorados completamente. Además, elementos como <img> dentro del <head> no se renderizarán como se espera, y la estructura general del documento será inválida, potencialmente causando comportamiento impredecible en todos los navegadores.
Cómo solucionarlo
-
Busca arriba de la etiqueta
<meta>marcada. Encuentra cualquier elemento en el<head>que no pertenezca allí — los culpables comunes incluyen<img>,<div>,<span>,<p>,<a>, o<section>. -
Mueve el elemento problemático al
<body>donde pertenece. -
Si la etiqueta
<meta>en sí está en el<body>, muévela al<head>. -
Verifica etiquetas mal formadas arriba del
<meta>— una etiqueta sin cerrar o un error tipográfico puede romper la comprensión de la estructura del documento por parte del analizador.
Solo ciertos elementos están permitidos dentro de <head>: <title>, <meta>, <link>, <style>, <script>, <noscript>, <base>, y <template>.
Ejemplos
Un elemento inválido en <head> rompe el contexto
La etiqueta <img> no está permitida dentro de <head>. El analizador cierra implícitamente <head> cuando la encuentra, por lo que la etiqueta <meta> que sigue termina en <body>:
<!DOCTYPE html>
<html lang="en">
<head>
<title>My Page</title>
<img src="photo.jpg" alt="A smiling cat">
<meta name="description" content="A page about cats">
</head>
<body>
<p>Welcome!</p>
</body>
</html>
Mueve el <img> al <body> para solucionar el problema:
<!DOCTYPE html>
<html lang="en">
<head>
<title>My Page</title>
<meta name="description" content="A page about cats">
</head>
<body>
<img src="photo.jpg" alt="A smiling cat">
<p>Welcome!</p>
</body>
</html>
Una etiqueta <meta> colocada accidentalmente en <body>
<!DOCTYPE html>
<html lang="en">
<head>
<title>My Page</title>
</head>
<body>
<meta name="author" content="Jane Doe">
<p>Hello world</p>
</body>
</html>
Mueve la etiqueta <meta> al <head>:
<!DOCTYPE html>
<html lang="en">
<head>
<title>My Page</title>
<meta name="author" content="Jane Doe">
</head>
<body>
<p>Hello world</p>
</body>
</html>
Una etiqueta mal formada interrumpe el <head>
Un > de cierre faltante en una etiqueta <link> puede confundir al analizador, causando que los elementos posteriores sean malinterpretados:
<!DOCTYPE html>
<html lang="en">
<head>
<title>My Page</title>
<link rel="stylesheet" href="style.css"
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<p>Content</p>
</body>
</html>
Cierra la etiqueta <link> correctamente:
<!DOCTYPE html>
<html lang="en">
<head>
<title>My Page</title>
<link rel="stylesheet" href="style.css">
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<p>Content</p>
</body>
</html>
Encuentra problemas como este automáticamente
Rocket Validator escanea miles de páginas en segundos, detectando problemas de HTML en todo tu sitio web.
Más información: