Yo uso javascript:void(0)
.
Tres razones Fomentar el uso de #
un equipo de desarrolladores inevitablemente lleva a algunos a usar el valor de retorno de la función llamada así:
function doSomething() {
//Some code
return false;
}
Pero luego se olvidan de usar return doSomething()
en el onclick y solo lo usan doSomething()
.
Una segunda razón para evitar #
es que la final return false;
no se ejecutará si la función llamada arroja un error. Por lo tanto, los desarrolladores también deben recordar manejar cualquier error adecuadamente en la función llamada.
Una tercera razón es que hay casos en los onclick
que la propiedad del evento se asigna dinámicamente. Prefiero poder llamar a una función o asignarla dinámicamente sin tener que codificar la función específicamente para un método de conexión u otro. Por lo tanto, mi onclick
(o en cualquier cosa) en el marcado HTML se ve así:
onclick="someFunc.call(this)"
O
onclick="someFunc.apply(this, arguments)"
El uso javascript:void(0)
evita todos los dolores de cabeza anteriores, y no he encontrado ningún ejemplo de un inconveniente.
Entonces, si eres un desarrollador solitario, puedes elegir claramente, pero si trabajas en equipo tienes que decir:
Use href="#"
, asegúrese de que onclick
siempre contenga return false;
al final, que cualquier función llamada no arroje un error y si asocia una función dinámicamente a la onclick
propiedad, asegúrese de que, además de no arrojar un error, regrese false
.
O
Utilizar href="javascript:void(0)"
El segundo es claramente mucho más fácil de comunicar.
<a href="javascript:void(0)" onclick="myJsFunc();">
tiene absolutamente ningún sentido. Si debe usar eljavascript:
protocolo psuedo, no necesita elonclick
atributo también.<a href="javascript:myJsFunc();">
hará bien.myJsFunc()
tiene un valor de retorno, su página se romperá. jsfiddle.net/jAd9G usted todavía tiene que utilizarvoid
de este modo:<a href="javascript:void myJsFunc();">
. Pero entonces, el comportamiento aún sería diferente. Invocar el enlace a través del menú contextual no activa elclick
evento.<a href="javascript:;" onclick="myEvent()"
?javascript:;
es mucho más rápido de escribir quejavascript:void(0)
<a>
etiqueta si lo que quieres hacer es NO abrir otra página a través de la función del navegador nativo, sino tener alguna 'acción' de JavaScript que se activará? Simplemente usando unaspan
etiqueta con una clase dejs-trigger
probablemente mucho mejor ". ¿O me estoy perdiendo algo?