Qual "href" valor devo usar para links JavaScript, "#" ou "javascript:void(0)"?

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);

Comentários (8)

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>.

Veja aqui https://stackoverflow.com/a/45465728/2803344

Comentários (12)

Don'não perca de vista o fato de que sua URL pode ser necessária -- o onclick é disparado antes que a referência seja seguida, então às vezes você precisará processar algo do lado do cliente antes de navegar para fora da página.

Comentários (0)