<a href="javascript:void(0)" id="loginlink">login</a>
Ich habe solche href
s, aber ich weiß nicht, was das genau bedeutet.
<a href="javascript:void(0)" id="loginlink">login</a>
Ich habe solche href
s, aber ich weiß nicht, was das genau bedeutet.
El
void
Operator wertet die angegebene Ausdruck aus und gibt dannundefined
.El
void
Operator wird oft nur verwendet verwendet, um dieundefined
primitiv Wert, in der Regel mit "void(0)
" (die ist gleichbedeutend mit "void 0
"). In diesen Fällen wird die globale Variableundefined
kann stattdessen verwendet werden (vorausgesetzt, es hat nicht einem Nicht-Standardwert zugewiesen wurde Wert zugewiesen wurde).
Eine Erklärung finden Sie hier: void
Betreiber .
Der Grund, warum Sie dies mit dem href
einer Verbindung ist, dass normalerweise eine javascript:
URL leitet den Browser zu einer Klartextversion des Ergebnisses der Auswertung dieses JavaScript um. Wenn das Ergebnis jedoch undefined
dann bleibt der Browser auf der gleichen Seite. void(0)
ist nur ein kurzes und einfaches Skript, das folgende Ergebnisse liefert undefined
.
Abgesehen von der technischen Antwort, javascript:void
bedeutet, dass der Autor etwas Falsches tut.
Es gibt keinen guten Grund für die Verwendung einer javascript:
Pseudo-URL(*). In der Praxis wird dies zu Verwirrung oder Fehlern führen, wenn jemand Dinge wie "Lesezeichen-Link", "Link in einer neuen Registerkarte öffnen" usw. versucht. Das passiert ziemlich oft, da sich die Leute an den Mittelklick-für-neue-Registerkarte gewöhnt haben: Es sieht aus wie ein Link, man will ihn in einer neuen Registerkarte lesen, aber es stellt sich heraus, dass es gar kein echter Link ist und unerwünschte Ergebnisse wie eine leere Seite oder einen JS-Fehler liefert, wenn man mit der Mitte klickt.
<a href="#">
ist eine gängige Alternative, die wohl weniger schlecht ist. Sie müssen jedoch bedenken, dass return false
von Ihrem onclick
Ereignisbehandlungsroutine, um zu verhindern, dass der Link verfolgt wird und an den oberen Rand der Seite gescrollt wird.
In einigen Fällen gibt es vielleicht einen tatsächlich nützlichen Ort, auf den der Link verweisen könnte. Wenn Sie z. B. ein Steuerelement haben, auf das Sie klicken können, um ein zuvor verborgenes Fenster zu öffnen <div id="foo">
zu verwenden, ist es sinnvoll <a href="#foo">
um sie zu verlinken. Oder wenn es eine nicht-JavaScript-basierte Möglichkeit gibt, das Gleiche zu tun (z. B. "thispage.php?show=foo", die foo von Anfang an sichtbar macht), können Sie einen Link darauf setzen.
Andernfalls, wenn ein Link nur auf ein Skript verweist, ist er nicht wirklich ein Link und sollte nicht als solcher gekennzeichnet werden. Der übliche Ansatz wäre, die onclick
zu einer <span>
, <div>
oder ein <a>
ohne einen href
und gestalten Sie es so, dass Sie es anklicken können. Das hat StackOverflow [zum Zeitpunkt der Erstellung dieses Artikels getan; jetzt verwendet es href="#"
].
Der Nachteil dabei ist, dass Sie die Tastatursteuerung verlieren, da Sie nicht mit der Tabulatortaste auf ein span/div/bare-a wechseln oder es mit der Leertaste aktivieren können. Ob dies tatsächlich ein Nachteil ist, hängt davon ab, welche Art von Aktion das Element ausführen soll. Mit einigem Aufwand können Sie versuchen, die Interaktivität mit der Tastatur zu imitieren, indem Sie ein tabIndex
auf das Element und wartet auf einen Leertastendruck. Aber es wird nie zu 100 % das tatsächliche Browserverhalten reproduzieren, nicht zuletzt, weil verschiedene Browser unterschiedlich auf die Tastatur reagieren können (ganz zu schweigen von nicht-visuellen Browsern).
Wenn Sie wirklich ein Element wollen, das kein Link ist, aber ganz normal mit der Maus oder der Tastatur aktiviert werden kann, dann brauchen Sie ein <button type="button">
(oder <input type="button">
ist für einfache textliche Inhalte ebenso gut geeignet). Sie können jederzeit CSS verwenden, um es so umzugestalten, dass es mehr wie ein Link als ein Button aussieht, wenn Sie wollen. Aber da sie sich wie eine Schaltfläche verhält, sollten Sie sie wirklich so kennzeichnen.
(*: jedenfalls bei der Erstellung von Websites. Offensichtlich sind sie für Bookmarklets nützlich. javascript:
Pseudo-URLs sind eine konzeptionelle Bizarrheit: ein Locator, der nicht auf einen Ort zeigt, sondern stattdessen aktiven Code innerhalb des aktuellen Ortes aufruft. Sie haben sowohl bei Browsern als auch bei Webanwendungen massive Sicherheitsprobleme verursacht und hätten von Netscape nie erfunden werden dürfen).
Das bedeutet, dass es nichts bewirken wird. Es ist ein Versuch, dass der Link nirgendwo hinführt. Aber das ist nicht der richtige Weg.
Sie sollten eigentlich nur return false
im onclick
Ereignis, etwa so:
<a href="#" onclick="return false;">hello</a>
In der Regel wird es verwendet, wenn der Link irgendetwas mit JavaScript zu tun hat. Wie das Absenden eines AJAX-Formulars oder das Austauschen eines Bildes, oder was auch immer. In diesem Fall geben Sie einfach die Funktion, die aufgerufen wird, zurück false
.
Wenn Sie Ihre Website wirklich toll gestalten wollen, müssen Sie in der Regel einen Link einfügen, der dieselbe Aktion ausführt, wenn die Person, die die Website aufruft, kein JavaScript ausführen will.
<a href="backup_page_displaying_image.aspx"
onclick="return coolImageDisplayFunction();">hello</a>
Es handelt sich um eine sehr beliebte Methode zum Hinzufügen von JavaScript-Funktionen zu HTML-Links.
Zum Beispiel: die [Print]
Links, die Sie auf vielen Webseiten sehen, sind so geschrieben:
<a href="javascript:void(0)" onclick="callPrintFunction()">Print</a>
Warum brauchen wir href
während onclick
allein die Arbeit erledigen kann? Denn wenn die Nutzer mit dem Mauszeiger über den Text "Drucken" fahren, wenn es keine href
ändert sich der Cursor in ein Caret (ꕯ) anstelle eines Zeigers (
Es gibt eine riesig Unterschied im Verhalten von #
gegen javascript:void(0);
.
#
blättert man zum Anfang der Seite, aber javascript:void(0);
nicht.
Dies ist sehr wichtig, wenn Sie dynamische Seiten programmieren, da der Benutzer nicht zum Anfang zurückkehren möchte, wenn er auf einen Link auf der Seite klickt.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.