JavaScript-funktion i href vs. onclick

Jag vill köra en enkel JavaScript-funktion vid ett klick utan omdirigering.

Finns det någon skillnad eller fördel mellan att lägga JavaScript-anropet i attributet href (som här:

<a href="javascript:my_function();window.print();">....</a>

) jämfört med att lägga det i attributet onclick (binda det till onclick-händelsen)?

Lösning

Att placera onclick i href skulle förolämpa dem som tror starkt på att skilja innehåll från beteende/handling. Argumentet är att html-innehållet ska vara fokuserat enbart på innehållet, inte på presentation eller beteende.

Den typiska vägen nuförtiden är att använda ett javascriptbibliotek (t.ex. jquery) och skapa en händelsehanterare med hjälp av det biblioteket. Det skulle se ut ungefär så här:

$('a').click( function(e) {e.preventDefault(); /*your_code_here;*/ return false; } );
Kommentarer (6)

Dessutom visas href i webbläsarens statusfält och onclick visas inte. Jag tror inte att det är användarvänligt att visa javascriptkoden där.

Kommentarer (0)

Personligen tycker jag att det är irriterande att lägga in javascript-anrop i HREF-taggarna. Jag brukar inte bry mig om huruvida något är en javascript-länk eller inte, och vill ofta öppna saker i ett nytt fönster. När jag försöker göra detta med en av dessa typer av länkar får jag en tom sida med ingenting på den och javascript i min positionsfältet. Detta kan dock undvikas lite genom att använda en onlick.

Kommentarer (0)