Acerca de este problema HTML
El atributo target especifica dónde debe abrirse un documento enlazado. Cuando el validador encuentra target="", reporta un error porque la especificación HTML requiere que los nombres de contexto de navegación tengan al menos un carácter. Una cadena vacía no es un nombre de contexto de navegación válido y no tiene un comportamiento definido, lo que significa que los navegadores pueden manejarlo de manera inconsistente.
Este problema surge comúnmente cuando un valor target se genera dinámicamente por un CMS, motor de plantillas o JavaScript y el valor termina siendo vacío. También puede ocurrir cuando un desarrollador agrega el atributo con la intención de completarlo después, pero se olvida de hacerlo.
Establecer target como una cadena vacía es problemático por varias razones:
- Cumplimiento de estándares: La especificación HTML de WHATWG requiere explícitamente que los nombres de contexto de navegación válidos sean cadenas no vacías. Un valor vacío viola esta regla.
-
Comportamiento impredecible: Los navegadores pueden interpretar un
targetvacío de manera diferente — algunos pueden tratarlo como_self, otros pueden comportarse de forma inesperada. Esto hace que tu sitio sea más difícil de probar y mantener. -
Preocupaciones de accesibilidad: Los lectores de pantalla y las tecnologías de asistencia pueden anunciar el atributo
targeto usarlo para informar a los usuarios sobre el comportamiento del enlace. Un valor vacío no proporciona información significativa.
Para solucionarlo, elige uno de los siguientes enfoques:
-
Elimina el atributo si quieres el comportamiento predeterminado (abrir en el mismo contexto de navegación, equivalente a
_self). -
Establece una palabra clave válida como
_blank,_self,_parento_top. -
Establece un nombre personalizado si quieres que múltiples enlaces compartan el mismo contexto de navegación (p. ej.,
target="externalWindow").
Ejemplos
❌ Inválido: atributo target vacío
<a href="https://example.com" target="">Visitar Example</a>
Esto desencadena el error de validación porque el valor target es una cadena vacía.
✅ Corregido: eliminar target completamente
Si quieres que el enlace se abra en el contexto de navegación actual (el predeterminado), simplemente elimina el atributo:
<a href="https://example.com">Visitar Example</a>
✅ Corregido: usar _blank para abrir en una nueva pestaña
<a href="https://example.com" target="_blank" rel="noopener">Visitar Example</a>
Nota la adición de rel="noopener" — esta es una buena práctica de seguridad al usar target="_blank", ya que evita que la página abierta acceda a la propiedad window.opener.
✅ Corregido: usar _self explícitamente
Si quieres ser explícito sobre abrir en el mismo contexto:
<a href="https://example.com" target="_self">Visitar Example</a>
✅ Corregido: usar un nombre de contexto de navegación personalizado
Puedes usar un nombre personalizado para que múltiples enlaces reutilicen la misma pestaña o ventana:
<a href="https://example.com" target="externalWindow">Example</a>
<a href="https://example.org" target="externalWindow">Example Org</a>
Ambos enlaces se abrirán en el mismo contexto de navegación llamado externalWindow. Si aún no existe, el navegador lo crea; los clics posteriores lo reutilizan.
Plantillas dinámicas
Si tu valor target proviene de una plantilla o CMS, asegúrate de que el atributo se renderice condicionalmente en lugar de mostrarse con un valor vacío. Por ejemplo, en un lenguaje de plantillas:
<!-- En lugar de siempre mostrar target -->
<a href="https://example.com" target="">Visitar</a>
<!-- Solo incluir target cuando existe un valor -->
<a href="https://example.com" target="_blank" rel="noopener">Visitar</a>
En la lógica de tu plantilla, omite condicionalmente el atributo target completamente cuando no se proporciona ningún valor, en lugar de renderizarlo como una cadena vacía.
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: