Una gran cantidad de confusión es en torno al uso de un-tags porque cruzan en navegador admite el: hover pseudo-css-selector ...
Por lo tanto, es a menudo evidente para utilizar un tag-a, ya que representaría de forma diferente según las diferentes etapas del mouse-hover ...
Algunos afirmarían que la funcionalidad incorporada en la: seudomarjeta hover no debería estar disponible en absoluto, ya que la intención del W3C es separar el contenido, visual presentación y funcionalidad en las tres partes de html dinámico; html, css y javascript.
Pero por ahora estamos atrapados con eso, y por el momento es funcional usar etiquetas a en muchas formas, ya que cumplen tareas de una manera simple, y es directo hacia adelante browser! -)
Pero eso significa que a veces tiene que desactivar el comportamiento predeterminado de esas etiquetas de enlace, y eso significa que tiene que hacer que el evento onclick return sea falso, cuando no tiene sentido cambiar el contenido del documento actual ...
Sin embargo, se pueden hacer muy buenos ejemplos del uso del descarte del comportamiento predeterminado, un ejemplo podría ser proporcionar una ventana emergente con ciertas propiedades incluso si el usuario ha desactivado el uso de javascript:
<a href="http://en.wikipedia.org/wiki/Css" target="_blank" onclick="window.open(this.href,'_blank','width=600,height=450,status=no');return false;">Show wikipedia css</a>
Upped. Si realmente está buscando la MEJOR solución, esta es. Debe desacoplar su HTML (presentación) de su JavaScript (lógica). Comience con un enlace normal y luego agregue el controlador de evento click luego. –
+1. Esta es la forma correcta de hacerlo. Lo único que agregaría es que si hay un error JS en su controlador onclick, no obtendrá el resultado falso, por lo que se seguirá el enlace. Para evitar eso, envuelva toda su función en un bloque try: "try {// hacer las cosas aquí} finally {return false;}" – nickf
Si hay un error en el controlador, a menudo querrá que se siga el enlace. "Hazlo en JS o vuelve al servidor" es mejor que "Hazlo en JS o cometa un error o vuelve al servidor" – Quentin