Uno de nuestros desarrolladores web utiliza el siguiente html como marcador de posición para diseñar una lista desplegable.
<a href="" class="arrow"></a>
¿Se considera válida esta etiqueta de anclaje?
Como no hay un valor href, aparece como roto en algunos de nuestros informes de verificación de enlaces.
Respuestas:
Aunque esta pregunta ya está respondida ( tl; dr: sí, un
href
valor 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
href
atributo 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 usa RFC 2396 , donde dice en la sección 4.2. Referencias del mismo documento (énfasis en negrita mío):
RFC 2396 está obsoleto por RFC 3986 (que actualmente es el estándar URI de IETF ), que esencialmente dice lo mismo .
HTML5
HTML5 utiliza ( URL válida potencialmente rodeada de espacios → URL válida ) la especificación de URL del W3C , que ha sido descontinuada. El estándar URL de WHATWG se debe utilizar en su lugar (consulte la última sección).
HTML 5.1
HTML 5.1 utiliza ( URL válida potencialmente rodeada de espacios → URL válida ) URL estándar de WHATWG (consulte la siguiente sección).
WHATWG HTML
El HTML de WHATWG usa ( URL válida potencialmente rodeada de espacios ) la definición de cadena URL válida del Estándar URL de WHATWG , donde dice que puede ser una cadena de URL relativa con fragmento , que debe ser al menos una cadena de URL relativa , que puede ser una cadena URL relativa a la ruta relativa sin esquema , que es una cadena URL relativa a la ruta que no comienza con una cadena de esquema seguida por
:
, y su definición dice (énfasis en negrita mío):fuente
Es válido.
Sin embargo, la práctica estándar es usar
href="#"
o algunas veceshref="javascript:;"
.fuente
href="#"
, el foco se mueve a la parte superior de la página en IE, así que creo quehref="javascript:;"
es mejorComo 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 cuando, por ejemplo, se abotona).href=""
recarga la páginahref="javascript:;"
no parece tener ningún problema (aparte de verse desordenado y sin sentido), ¿alguien sabe de alguno?fuente
Si bien puede ser HTML completamente válido no incluir un href, especialmente con un controlador onclick, hay algunas cosas a tener en cuenta: no podrá enfocarse en el teclado sin tener un valor de tabindex establecido. Además, esto será inaccesible para el software del lector de pantalla que usa 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 índice de tabulación.
Entonces, aunque lo siguiente puede ser completamente válido:
Es mucho mejor agregar explícitamente un atributo href de efecto nulo
Para 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.
fuente
href
interferirá con las interfaces de accesibilidad.href
valor en algo más que una ruta relativa / absoluta causará problemas con el lector de pantalla. Evite usar un símbolo de hash / libra como solución para este problema, ya que no está destinado a esto. Los lectores de pantalla pueden (actualmente VoiceOver lo hace) anunciar que su enlace es un identificador de fragmento (enlace a algún lugar de la página actual) y también es válido desde un punto de vista estándar. ver w3.org/2001/tag/2011/01/HashInURI-20110115#NakedHashEl borrador HTML5 actual también permite omitir el atributo href por completo.
Para responder a su pregunta: Sí, es válido.
fuente
<a>
elemento sinhref
está diseñado directamente en algunos navegadores. Por ejemplo, los estilos ": hover" no funcionan en Chrome (y otras cosas raras)<a>
etiqueta sin unhref
representa algo más , no un enlace (tradicionalmente un ancla). Además, hay una diferencia entre un atributo opcional y un atributo que puede estar vacío.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 ancla para la página actual.
fuente
<a href></a>
→ Atributo href sin un valor explícito visto. El atributo puede ser eliminado por IE7.Si bien el validador de W3 puede no quejarse de un
href
atributo vacío , el Borrador de trabajo HTML5 actual especifica: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 entenderlo, sin embargo, en ninguna parte se 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 HTML5 continúa:
Esto significa que simplemente podemos omitir el
href
atributo por completo:Si su intención es que estos elementos
href
sin código requieran la interacción dela
teclado, tendrá que seguir la ruta normal de asignación derole
ytabindex
junto con sus controladores habituales de clic / tecla:fuente
href
hace que no sea un hipervínculo, lo que hace que laonclick
funcionalidad sea inaccesible para los usuarios del teclado.Una palabra de precaución:
En mi experiencia, omitir el
href
atributo causa problemas de accesibilidad ya que la navegación del teclado lo ignorará y nunca lo enfocará como lo hará cuando href esté presente. Incluir manualmente su elemento en el índice tabin es una forma de evitarlo.fuente
es válido pero como UpTheCreek dijo 'Hay algunos inconvenientes en cada enfoque'
si está llamando a ajax a través de una etiqueta, deje href = "" de esta manera, la página se volverá a cargar y el código de ajax nunca se llamará ...
acabo de recibir este pensamiento sería bueno compartir
fuente
Intenta hacerlo en su
<a href="#" class="arrow">
lugar. (Tenga en cuenta el#
carácter agudo ).fuente