html - página - ¿Es segura una etiqueta de anclaje sin el atributo href?
href html ejemplos (9)
¿Está bien usar una etiqueta de anclaje sin incluir el atributo href
y, en cambio, usar un controlador de eventos de clic de JavaScript? Así que omitiría el href
completamente, ni siquiera lo tendría vacío ( href=""
).
Desde una perspectiva de accesibilidad, <a>
sin un href no es tabulable, todos los enlaces deben ser tabulables, así que agregue un tabindex = ''0 "si no tiene un href.
En HTML5, usar un elemento a sin un atributo href
es válido. Se considera un "hipervínculo de marcador de posición".
Ejemplo:
<a>previous</a>
Busque el "hipervínculo del marcador de posición" en la página de referencia de la etiqueta de anclaje w3c: https://www.w3.org/TR/2016/REC-html51-20161101/textlevel-semantics.html#the-a-element .
Y también se menciona en la wiki aquí: https://www.w3.org/wiki/Elements/a
Un enlace de marcador de posición es para los casos en los que desea utilizar un elemento de anclaje, pero no tener que navegar por ningún lado. Esto es útil para marcar la página actual en un menú de navegación o ruta de navegación. (El enfoque anterior habría sido utilizar una etiqueta de extensión o una etiqueta de ancla con una clase llamada "activa" o "actual" para personalizarla y JavaScript para cancelar la navegación).
Un enlace de marcador de posición también es útil en los casos en los que desea establecer dinámicamente el destino del enlace a través de JavaScript en tiempo de ejecución. Simplemente establece el valor del atributo href, y la etiqueta de anclaje se puede hacer clic.
Ver también:
En algunos navegadores, tendrá problemas si no le está dando una etiqueta href. Te sugiero que escribas tu código algo como esto:
<a href="#" onclick="yourcode();return false;">Link</a>
puede reemplazar yourcode () con su propia función o lógica, pero recuerde agregar add false; Declaración al final.
Está bien, pero al mismo tiempo puede hacer que algunos navegadores se vuelvan lentos.
http://webdesignfan.com/yslow-tutorial-part-2-of-3-reducing-server-calls/
Mi consejo es usar <a href="#"> </a>
Si estás usando JQuery, recuerda usar también:
.click(function(event){
event.preventDefault();
// Click code here...
});
La etiqueta <a>
sin el "href" puede ser útil cuando se usan menús de varios niveles y usted necesita expandir el siguiente nivel pero no quiere que la etiqueta del menú sea un enlace activo. Nunca he tenido ningún problema al usarlo de esa manera.
La etiqueta está bien para usar sin un atributo href. Al contrario de muchas de las respuestas aquí, en realidad hay razones estándar para crear un ancla cuando no hay href. Semánticamente, "a" significa un ancla o un enlace. Si lo usas para cualquier cosa que siga ese significado, entonces estás bien.
Un uso estándar de la etiqueta a sin un href es crear enlaces con nombre. Esto le permite usar un ancla con nombre = blah y luego puede crear un ancla con href = # blah para vincular a la sección nombrada de la página actual. Sin embargo, esto ha quedado en desuso porque también puede usar los ID de la misma manera. Como ejemplo, podría usar una etiqueta de encabezado con id = header y luego podría tener un ancla apuntando a href = # header.
Mi punto, sin embargo, no es sugerir el uso de la propiedad de nombre. Solo para proporcionar un caso de uso en el que no necesite un href y, por lo tanto, razonar por qué no es necesario.
Pude hacer este trabajo:
<a id="dumb-button" href="#" onclick="return false;">Link</a>
e ignora el click. Luego uso jQuery para capturar el clic del "botón tonto" y para activar mi código (ocultar algunos divs / mostrar un div).
Respuesta corta: No.
Respuesta larga:
Primero, sin un atributo href, no será un enlace. Si no es un enlace, entonces no será accesible el teclado (o el interruptor de respiración, o cualquier otro dispositivo de entrada no basado en puntero) (a menos que use las características HTML 5 de tabindex
que no son universalmente compatibles). Es muy raro que sea apropiado que un control no tenga acceso al teclado.
Segundo. Debe tener una alternativa para cuando el JavaScript no se ejecute (debido a que el servidor tardó en cargarse lentamente, se interrumpió la conexión a Internet (por ejemplo, la señal móvil en un tren en movimiento), JS está apagado, etc.).
Hacer uso de mejora progresiva por JS discreta.
Si tiene que usar href para la compatibilidad hacia atrás, también puede usar
<a href="javascript:void(0)">link</a>
en lugar de #, si no quieres usar el atributo