He visto los siguientes métodos para poner código JavaScript en una <a>
etiqueta:
function DoSomething() { ... return false; }
<a href="javascript:;" onClick="return DoSomething();">link</a>
<a href="javascript:DoSomething();">link</a>
<a href="javascript:void(0);" onClick="return DoSomething();">link</a>
<a href="#" onClick="return DoSomething();">link</a>
Entiendo la idea de intentar poner una URL válida en lugar de solo código JavaScript, en caso de que el usuario no tenga JavaScript habilitado. Pero para el propósito de esta discusión, debo asumir que JavaScript está habilitado (no pueden iniciar sesión sin él).
Personalmente, me gusta la opción 2 ya que le permite ver qué se va a ejecutar, especialmente útil cuando se depura dónde se pasan parámetros a la función. Lo he usado bastante y no he encontrado problemas con el navegador.
He leído que la gente recomienda 4, porque le da al usuario un enlace real a seguir, pero en realidad, # no es "real". Irá absolutamente a ninguna parte.
¿Hay alguno que no sea compatible o sea realmente malo, cuando sabe que el usuario tiene habilitado JavaScript?
Pregunta relacionada: Href para enlaces JavaScript: "#" o "javascript: void (0)"? .