Die am meisten hochgestimmte Antwort ist heute veraltet
Ich würde das genaue Gegenteil empfehlen, siehe Schritt für Schritt mit Begründung:
gut:
<a id="myLink" href="javascript:MyFunction();">link text</a>
Es kommt darauf an, könnte gut sein, denn Crawler folgen href-Zielen und wenn es irgendeinen sinnvollen Inhalt gibt, der von MyFunction()
(dynamischer Link), wird er eher verfolgt als beim Klick-Ereignis, das mehrere oder keine Zuhörer haben kann.
schlecht :
<a id="myLink" href="#" onclick="MyFunction();">link text</a>
#
bedeutet bedeutungsloser Link, Crawler sind oft nur an den ersten x Links interessiert, so dass es sie daran hindern kann, einigen sinnvollen Links später auf der Seite zu folgen.
schlechter:
<a id="myLink" href="#" onclick="MyFunction();return false;">link text</a>
Wie zuvor plus return false
verhindert, dass Sie dem Link folgen. Wenn andere Skripte einen weiteren Listener hinzufügen und das Ziel aktualisieren wollen (z. B. um über einen Proxy umzuleiten), können sie das nicht, ohne den Onclick zu ändern (okay, das ist nur ein kleiner Rückschlag, da solche Anwendungsfälle eher theoretisch sind).
das Schlimmste:
Verwenden Sie jQuery oder ein ähnliches Framework, um einen Onclick-Handler nach der ID des Elements anzuhängen.
$('#myLink').click(function(){ MyFunction(); return false; });
jQuery ist im Jahr 2020+ veraltet und sollten nicht in neuen Projekten verwendet werden .
Ereignisse in href
Der href-Attribut-Handler erhält nicht das Ereignisobjekt, so dass der Handler nicht implizit sieht, welcher Link die Quelle war. Sie können es in onclick Handler hinzufügen, die vor der href gefolgt wird gefeuert:
<a href="javascript:my_function(event2)" onclick="event2=event">
JS based link
</a>
<script>
function my_function(e) {
console.log(e.target); // the source of the click
if(something) location.href = ...; // dynamic link
}
</script>
7 Stimmen
Diese Frage wurde bereits früher erörtert: stackoverflow.com/questions/245868/
2 Stimmen
Y stackoverflow.com/questions/134845/