Acerca de este problema HTML
El atributo name en elementos <a> se usaba históricamente para crear anclas nombradas — objetivos de fragmento que podían ser enlazados con href="#nombreAncla". En HTML moderno (el estándar vivo de WHATWG), el atributo name en <a> se considera obsoleto para este propósito. El atributo id es ahora la forma estándar de crear objetivos de fragmento, y puede colocarse en cualquier elemento, no solo en etiquetas <a>.
Independientemente de si usas name o id, el valor debe ser una cadena no vacía. El validador de W3C aplica esta regla porque un identificador vacío no sirve ningún propósito funcional — no puede ser referenciado por un enlace de fragmento, no puede ser objetivo de JavaScript, y crea marcado inválido. Los navegadores pueden ignorarlo silenciosamente, pero contamina el DOM y señala un probable error en el código.
Los atributos name vacíos aparecen a menudo en contenido migrado de plataformas CMS más antiguas o editores WYSIWYG que insertaban anclas de marcador de posición como <a name=""></a>. También pueden resultar de sistemas de plantillas donde una variable destinada a poblar el atributo se resolvió como una cadena vacía.
Por qué es importante
-
Cumplimiento de estándares: Tanto el estándar vivo HTML de WHATWG como la especificación HTML de W3C requieren que los atributos tipo identificador (
id,name) no deben ser cadenas vacías. - Accesibilidad: Los lectores de pantalla y tecnologías de asistencia pueden intentar procesar anclas nombradas. Los identificadores vacíos crean ruido sin proporcionar ningún valor de navegación.
-
Funcionalidad: Un
nameoidvacío no puede ser usado como objetivo de fragmento, por lo que el elemento es efectivamente inútil como destino de enlace.
Cómo solucionarlo
- Eliminar el elemento completamente si el ancla vacía no sirve ningún propósito — esta es la solución más común.
-
Reemplazar
nameconidy proporcionar un valor significativo y no vacío si necesitas un objetivo de fragmento. -
Mover el
ida un elemento semántico cercano en lugar de usar una etiqueta<a>vacía independiente. Por ejemplo, coloca eliddirectamente en un encabezado, sección o párrafo. -
Asegurar la unicidad — cada valor de
iden un documento debe ser único.
Ejemplos
❌ El atributo name vacío desencadena el error
<a name=""></a>
<h2>Introduction</h2>
<p>Welcome to the guide.</p>
❌ name vacío generado por una plantilla
<a name=""></a>
<p>This anchor was meant to be a target but the value is missing.</p>
<a href="#">Jump to section</a>
✅ Eliminar el ancla vacía si es innecesaria
<h2>Introduction</h2>
<p>Welcome to the guide.</p>
✅ Usar id en el elemento objetivo directamente
<h2 id="introduction">Introduction</h2>
<p>Welcome to the guide.</p>
<!-- Link to the section from elsewhere -->
<a href="#introduction">Go to Introduction</a>
✅ Usar id en un ancla independiente si es necesario
Si necesitas un punto de ancla preciso que no corresponda a un elemento existente, usa una etiqueta <a> con un id válido y no vacío:
<a id="section-start"></a>
<p>This paragraph follows the anchor point.</p>
<a href="#section-start">Jump to section start</a>
✅ Migrar name heredado a id
Si tu código existente usa el atributo obsoleto name con un valor válido, actualízalo para usar id en su lugar:
<!-- Before (obsolete but was valid in HTML4) -->
<a name="contact"></a>
<!-- After (modern HTML) -->
<a id="contact"></a>
<!-- Even better: put the id on a semantic element -->
<h2 id="contact">Contact Us</h2>
Encuentra problemas como este automáticamente
Rocket Validator escanea miles de páginas en segundos, detectando problemas de HTML en todo tu sitio web.