J'utilise javascript:void(0)
.
Trois raisons. Encourager l'utilisation de #
parmi une équipe de développeurs conduit inévitablement à ce que certains utilisent la valeur de retour de la fonction appelée comme ceci :
function doSomething() {
//Some code
return false;
}
Mais ensuite ils oublient d'utiliser return doSomething()
dans l'onclick et utiliser simplement doSomething()
.
Une deuxième raison d'éviter #
est que la finale return false;
ne s'exécutera pas si la fonction appelée déclenche une erreur. Par conséquent, les développeurs doivent également se souvenir de traiter toute erreur de manière appropriée dans la fonction appelée.
Une troisième raison est qu'il y a des cas où le onclick
est attribuée dynamiquement. Je préfère pouvoir appeler une fonction ou l'assigner dynamiquement sans avoir à coder la fonction spécifiquement pour une méthode d'attachement ou une autre. D'où mon onclick
(ou sur quoi que ce soit) dans le balisage HTML ressemblent à ceci :
onclick="someFunc.call(this)"
OU
onclick="someFunc.apply(this, arguments)"
Utilisation de javascript:void(0)
évite tous les maux de tête ci-dessus, et je n'ai trouvé aucun exemple d'inconvénient.
Ainsi, si vous êtes un développeur solitaire, vous pouvez clairement faire votre propre choix, mais si vous travaillez en équipe, vous devez faire l'un ou l'autre :
Utilisez href="#"
assurez-vous que onclick
contient toujours return false;
à la fin, que toute fonction appelée ne lève pas d'erreur et que si vous attachez une fonction dynamiquement à la balise onclick
s'assure qu'en plus de ne pas lancer une erreur, elle renvoie false
.
OU
Utilisez href="javascript:void(0)"
La seconde est clairement beaucoup plus facile à communiquer.