A seguir estão dois métodos para construir um link que tem o único propósito de executar código JavaScript. Qual é melhor, em termos de funcionalidade, velocidade de carregamento da página, fins de validação, etc.?
function myJsFunc() {
alert("myJsFunc");
}
<a href="#" onclick="myJsFunc();">Run JavaScript Code</a>
ou
function myJsFunc() {
alert("myJsFunc");
}
<a href="javascript:void(0)" onclick="myJsFunc();">Run JavaScript Code</a>
'#'
irá levar o usuário de volta ao topo da página, então eu normalmente vou com void(0)
.
javascript:;
também se comporta como javascript:void(0);
O primeiro, idealmente com um link real a seguir no caso do usuário ter o JavaScript desativado. Apenas certifique-se de retornar falso para evitar que o evento do clique dispare se o JavaScript for executado.
<a href="#" onclick="myJsFunc(); return false;">Link</a>
Se você usar Angular2, este caminho funciona:
<a [routerLink]="" (click)="passTheSalt()">Click me</a>
.