tag link img imagen etiqueta ejemplos html href

html - link - ¿Es válido un href vacío?



html link tag (10)

Aunque esta pregunta ya está respondida ( tl; dr: sí, un valor de href vacío es válido), ninguna de las respuestas existentes hace referencia a las especificaciones relevantes.

Una cadena vacía no puede ser un URI. Sin embargo, el atributo href no solo toma los URI como valor, sino también las referencias de URI. Una cadena vacía puede ser una referencia de URI.

HTML 4.01

HTML 4.01 uses RFC 2396 , donde dice en la sección 4.2. Referencias del mismo documento (énfasis en negrita):

Una referencia de URI que no contiene un URI es una referencia al documento actual. En otras palabras, una referencia de URI vacía dentro de un documento se interpreta como una referencia al comienzo de ese documento , y una referencia que contiene solo un identificador de fragmento es una referencia al fragmento identificado de ese documento.

RFC 2396 está obsoleto por RFC 3986 (que actualmente es el estándar URI de IETF ), que básicamente dice lo mismo .

HTML5

uses HTML5 ( URL válida potencialmente rodeada de espaciosURL válida ) Especificación de URL de W3C , que se ha suspendido. El estándar de URL de WHATWG se debe usar en su lugar (ver la última sección).

HTML 5.1

uses HTML 5.1 ( URL válida potencialmente rodeada de espaciosURL válida ) Estándar de URL de WHATWG (ver la siguiente sección).

WHATWG HTML

El HTML de WHATWG uses ( URL válida potencialmente rodeada de espacios ) la definición de cadena de URL válida del Estándar de URL de WHATWG , donde dice que puede ser una cadena relativa-URL-con-fragmento , que al menos debe ser una cadena de URL relativa , que puede ser una cadena path-relative-scheme-less-URL , que es una cadena path-relative-URL que no comienza con una cadena de esquema seguida de : y su definición dice (negrita, énfasis mío):

Una cadena path-relative-URL debe ser cero o más cadenas de URL-path-segment, separadas entre sí por U + 002F (/), y no comenzar por U + 002F (/).

Uno de nuestros desarrolladores web usa el siguiente html como marcador de posición para diseñar una lista desplegable.

<a href="" class="arrow"></a>

¿Es esta etiqueta de ancla considerada válida?

Como no hay valor href, aparece como roto en algunos de nuestros informes de corrector de enlaces.


Como otros han dicho, es válido.

Sin embargo, hay algunos inconvenientes en cada enfoque:

href="#" agrega una entrada adicional al historial del navegador (lo cual es molesto, por ejemplo, al retroceder).

href="" vuelve a cargar la página

href="javascript:;" no parece tener ningún problema (aparte de parecer desordenado y sin sentido) - ¿Alguien sabe de alguno?


De hecho, puede dejarlo vacío (el validador W3 no se queja).

Llevando la idea un paso más allá: omita el = "". La ventaja de esto es que el enlace no se trata como un anclaje a la página actual.

<a href>sth</a>



Es válido.

Sin embargo, la práctica estándar es usar href="#" o a veces href="javascript:;" .


Intenta hacer <a href="#" class="arrow"> en <a href="#" class="arrow"> lugar. (Tenga en cuenta el carácter nítido # ).


Mientras que el validador de W3 no puede quejarse sobre un atributo href vacío, el borrador de trabajo actual de HTML5 especifica:

El atributo href en a y los elementos de area deben tener un valor que sea una URL válida potencialmente rodeada de espacios.

Una URL válida es una URL que cumple con el estándar de URL . Ahora el estándar de URL es un poco confuso para entender, sin embargo, en ninguna parte indica que una URL puede ser una cadena vacía.

... lo que significa que una cadena vacía no es una URL válida.

Sin embargo, el borrador de trabajo de HTML5 indica:

Nota: El atributo href en a y los elementos de area no son necesarios ; cuando esos elementos no tienen atributos href , no crean hipervínculos.

Esto significa que simplemente podemos omitir el atributo href completo:

<a class="arrow"></a>


Si bien es posible que HTML sea completamente válido para no incluir un href, especialmente con un manejador onclick, hay algunas cosas a tener en cuenta: no se podrá enfocar con el teclado sin tener un valor de tabindex establecido. Además, esto será inaccesible para el software lector de pantalla que utiliza Internet Explorer, ya que IE informará a través de las interfaces de accesibilidad que cualquier elemento de anclaje sin un atributo href no puede enfocarse, independientemente de si se ha establecido el tabindex.

Entonces, si bien lo siguiente puede ser completamente válido:

<a class="arrow">Link content</a>

Es mucho mejor agregar explícitamente un atributo href de efecto nulo

<a href="javascript:void(0);" class="arrow">Link content</a>

Para obtener un soporte completo de todos los usuarios, si está utilizando la clase con CSS para representar una imagen, también debe incluir algo de contenido de texto, como el atributo de título, para proporcionar una descripción textual de lo que está sucediendo.

<a href="javascript:void(0);" class="arrow" title="Go to linked content">Link content</a>


Una palabra de precaución:

En mi experiencia, omitir el atributo href causa problemas de accesibilidad ya que la navegación por el teclado lo ignorará y nunca lo enfocará como lo haría cuando href esté presente. Incluir manualmente su elemento en el tabindex es una forma de evitarlo.


es válido, pero como UpTheCreek dijo ''Hay algunas desventajas en cada enfoque''

si llamas a ajax a través de una etiqueta, deja href = "" de esta manera, la página se volverá a cargar y el código ajax nunca se llamará ...

Acabo de recibir este pensamiento sería bueno compartir