Was bedeutet "javascript:void(0)"?

<a href="javascript:void(0)" id="loginlink">login</a>

Ich habe solche hrefs schon oft gesehen, aber ich weiß nicht, was das genau bedeutet.

Lösung

Der Operator "void" wertet den angegebenen Ausdruck aus und gibt dann "undefiniert" zurück.

Der void-Operator wird oft nur benutzt um den primitiven Wert "undefiniert" zu erhalten Wert zu erhalten, gewöhnlich mit "void(0)" (was äquivalent zu "void 0" ist). In diesen Fällen kann die globale Variable undefined stattdessen verwendet werden (vorausgesetzt, sie wurde nicht einem Nicht-Standardwert zugewiesen wurde Wert zugewiesen wurde).

Eine Erklärung finden Sie hier: Void-Operator.

Der Grund, warum Sie dies mit dem href eines Links tun wollen, ist, dass normalerweise eine javascript:-URL den Browser zu einer Klartextversion des Ergebnisses der Auswertung dieses Javascripts umleitet. Aber wenn das Ergebnis undefined ist, dann bleibt der Browser auf der gleichen Seite. void(0) ist nur ein kurzes und einfaches Skript, das zu undefined ausgewertet wird.

Kommentare (26)

Das bedeutet, dass er nichts tut. Es ist ein Versuch, den Link nirgendwohin zu 'navigieren'. Aber das ist nicht der richtige Weg.

Sie sollten eigentlich nur "false" im "onclick"-Ereignis zurückgeben, etwa so:

<a href="#" onclick="return false;">hello</a>

Normalerweise wird dies verwendet, wenn der Link irgendetwas "JavaScript-mäßiges" macht. Wie das Absenden eines AJAX-Formulars oder das Austauschen eines Bildes, oder was auch immer. In diesem Fall sorgt man einfach dafür, dass die aufgerufene Funktion false zurückgibt.

Wenn Sie Ihre Website wirklich toll machen wollen, fügen Sie in der Regel einen Link ein, der die gleiche Aktion ausführt, wenn die Person, die ihn aufruft, kein JavaScript ausführt.

<a href="backup_page_displaying_image.aspx"
   onclick="return coolImageDisplayFunction();">hello</a>
Kommentare (17)

Sie sollten immer eine href auf Ihre a Tags haben. Der Aufruf einer JavaScript-Funktion, die 'undefiniert' zurückgibt, reicht völlig aus. Das Gleiche gilt für die Verknüpfung mit '#'.

Anker-Tags in Internet Explorer 6 ohne eine href bekommen nicht den "a:hover"-Stil angewendet.

Ja, das ist schrecklich und ein kleines Verbrechen gegen die Menschheit, aber das ist Internet Explorer 6 im Allgemeinen auch.

Ich hoffe, das hilft.

Internet Explorer 6 ist eigentlich ein großes Verbrechen gegen die Menschheit.

Kommentare (0)