Skip to main content
Validación HTML

Atributo “href” sin un valor explícito encontrado. El atributo puede ser eliminado por IE7.

Acerca de este problema HTML

Por qué sucede esto

En HTML, ciertos atributos son booleanos y pueden aparecer sin un valor (por ejemplo, disabled, required). El atributo href no es uno de ellos — espera una URL válida, ruta o identificador de fragmento como su valor. Cuando un validador encuentra href sin valor o con un valor vacío, genera una advertencia porque el atributo se está usando de una manera que no se ajusta a la especificación.

Escribir <a href> produce un atributo sin valor. Escribir <a href=""> produce un atributo cuyo valor es una cadena vacía, que se resuelve a la URL de la página actual según las reglas de resolución de URL relativas. Ambas formas son problemáticas:

  • href sin un valor: La especificación HTML requiere que href contenga una URL válida. Un atributo sin valor es ambiguo y era eliminado activamente por IE7, lo que significa que el elemento perdería completamente su comportamiento de enlace en ese navegador.
  • href="": Aunque técnicamente se analiza como una URL relativa que apunta al documento actual, esto casi nunca es la intención del desarrollador. Causa que la página se recargue o desplace hacia arriba cuando se hace clic, lo cual es confuso para los usuarios y perjudicial para la accesibilidad.

El impacto

  • Accesibilidad: Los lectores de pantalla dependen del atributo href para identificar un elemento <a> como un enlace interactivo. Un valor faltante o vacío crea confusión — el lector de pantalla puede anunciarlo como un enlace pero no proporcionar destino, o puede no tratarlo como un enlace en absoluto.
  • Compatibilidad de navegadores: Como nota el mensaje del validador, IE7 eliminaría el atributo completamente, lo que significa que el elemento perdía su semántica de enlace y estilo. Aunque IE7 ya no se usa comúnmente, los atributos sin valor aún pueden causar problemas de casos límite en analizadores, rastreadores y herramientas automatizadas.
  • Cumplimiento de estándares: HTML válido asegura renderizado y comportamiento consistente entre navegadores, tecnologías asistivas y rastreadores de motores de búsqueda.

Cómo solucionarlo

La solución depende de tu intención:

  1. Si el elemento debe enlazar a algún lugar, proporciona una URL real: href="https://example.com" o href="/about".
  2. Si el elemento es un enlace marcador de posición (por ejemplo, durante el desarrollo o para acciones impulsadas por JavaScript), usa href="#" y prevén la navegación predeterminada con JavaScript.
  3. Si el elemento no necesita ser un enlace en absoluto, usa un <button> para acciones interactivas o un <span> para texto no interactivo. Esta es a menudo la opción más semánticamente correcta.

Ejemplos

❌ Incorrecto: href sin un valor

<a href>Haz clic aquí</a>

Esto activa la advertencia de validación. El atributo no tiene valor, lo cual es inválido para href.

❌ Incorrecto: href con una cadena vacía

<a href="">Haz clic aquí</a>

Esto se resuelve a la URL de la página actual, probablemente causando una recarga de página no intencionada.

✅ Correcto: Proporciona una URL real

<a href="https://example.com">Visita Example</a>

✅ Correcto: Usa un fragmento como marcador de posición

<a href="#" onclick="doSomething(); return false;">Realizar acción</a>

El return false previene que la página se desplace hacia arriba. Un enfoque moderno mejor usa event.preventDefault():

<a href="#" id="action-link">Realizar acción</a>
<script>
  document.getElementById("action-link").addEventListener("click", function (e) {
    e.preventDefault();
    doSomething();
  });
</script>

✅ Correcto: Usa un <button> para acciones

Si el elemento activa una acción de JavaScript en lugar de navegar a algún lugar, un <button> es la opción más semánticamente apropiada:

<button type="button" onclick="doSomething();">Realizar acción</button>

Los botones son nativamente enfocables, accesibles desde el teclado, y comunican claramente la intención interactiva a las tecnologías asistivas — no se necesita href.

✅ Correcto: Usa un <span> para texto no interactivo

Si el elemento es puramente visual y no debería ser interactivo en absoluto:

<span class="label">No es un enlace</span>

Esto elimina cualquier expectativa de interactividad tanto para el navegador como para el usuario.

Encuentra problemas como este automáticamente

Rocket Validator escanea miles de páginas en segundos, detectando problemas de HTML en todo tu sitio web.

Ayúdanos a mejorar nuestras guías

¿Te ha sido útil esta guía?

¿Listo para validar tus sitios?
Inicia tu prueba gratuita hoy.