Jakou hodnotu "href" mám použít pro odkazy v JavaScriptu, "#" nebo "javascript:void(0)"?

Následují dva způsoby vytvoření odkazu, jehož jediným účelem je spuštění kódu JavaScriptu. Který z nich je lepší z hlediska funkčnosti, rychlosti načítání stránky, validace atd.?

function myJsFunc() {
    alert("myJsFunc");
}
<a href="#" onclick="myJsFunc();">Run JavaScript Code</a>

nebo

function myJsFunc() {
    alert("myJsFunc");
}
 <a href="javascript:void(0)" onclick="myJsFunc();">Run JavaScript Code</a>

'#' vrátí uživatele zpět na začátek stránky, takže obvykle používám void(0).

javascript:; se také chová jako javascript:void(0);

Komentáře (8)

První z nich, ideálně se skutečným odkazem pro případ, že má uživatel vypnutý JavaScript. Jen se ujistěte, že vrací false, aby nedošlo k vyvolání události kliknutí, pokud se JavaScript spustí.

<a href="#" onclick="myJsFunc(); return false;">Link</a>

Pokud používáte Angular2, funguje tento způsob:

<a [routerLink]="" (click)="passTheSalt()">Click me</a>.

Viz zde https://stackoverflow.com/a/45465728/2803344

Komentáře (12)

Nezapomínejte na to, že vaše adresa URL může být nutná - funkce onclick se spustí dříve, než následuje odkaz, takže někdy budete muset zpracovat něco na straně klienta předtím, než přejdete mimo stránku.

Komentáře (0)