Frage Was bedeutet "javascript: void (0)"?


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

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


1029
2017-08-18 05:20


Ursprung


Antworten:


Das void Der Operator wertet das Gegebene aus   Ausdruck und kehrt dann zurück undefined.

Das void Betreiber wird oft nur verwendet   um das zu erhalten undefined Primitive   Wert, in der Regel mit "void(0)" (welche   ist äquivalent zu "void 0"). In diesen   Fälle, die globale Variable undefined   kann stattdessen verwendet werden (vorausgesetzt, es hat   nicht einem Nicht-Standard zugewiesen   Wert).

Eine Erklärung wird hier gegeben: void Operator.

Der Grund, warum Sie dies mit dem tun möchten href eines Links ist das normalerweise, a javascript: Die URL leitet den Browser zu einer reinen Textversion des Ergebnisses der Bewertung des JavaScript um. Aber wenn das Ergebnis ist undefined, dann bleibt der Browser auf der gleichen Seite. void(0) ist nur ein kurzes und einfaches Skript, das ausgewertet wird undefined.


793
2017-08-18 05:23



Neben der technischen Antwort, javascript:void bedeutet der Autor tut es falsch.

Es gibt keinen guten Grund, ein javascript: Pseudo-URL (*). In der Praxis führt dies zu Verwirrung oder Fehlern, wenn jemand Dinge wie "Verknüpfung mit Lesezeichen", "Verknüpfung in einer neuen Registerkarte öffnen" usw. versucht. Das passiert ziemlich viel, jetzt haben sich Leute an den mittleren Klick-für-neu-Tab gewöhnt: Es sieht wie ein Link aus, Sie möchten es in einem neuen Tab lesen, aber es stellt sich heraus, dass es kein echter Link ist. und gibt unerwünschte Ergebnisse wie eine leere Seite oder einen JS-Fehler, wenn Sie mit der mittleren Maustaste klicken.

<a href="#"> ist eine gebräuchliche Alternative, die möglicherweise weniger schlecht ist. Allerdings müssen Sie daran denken return false von deiner onclick Event-Handler, um zu verhindern, dass die Verbindung verfolgt wird und bis zum Anfang der Seite gescrollt wird.

In einigen Fällen kann es einen nützlichen Ort geben, auf den der Link verweisen kann. Wenn Sie zum Beispiel ein Steuerelement haben, können Sie darauf klicken, um ein zuvor verborgenes Element zu öffnen <div id="foo">Es macht Sinn, es zu benutzen <a href="#foo"> verlinken. Oder wenn es eine Nicht-JavaScript-Möglichkeit gibt, dasselbe zu tun (zum Beispiel "thispage.php? Show = foo", das foo zuerst sichtbar macht), können Sie darauf verlinken.

Andernfalls, wenn ein Link nur auf ein Skript verweist, handelt es sich nicht wirklich um einen Link und sollte nicht als solcher markiert werden. Der übliche Ansatz wäre, das hinzuzufügen onclick zu einem <span>, <div>oder <a> ohne ein href und style es in irgendeiner Weise, um zu verdeutlichen, dass du darauf klicken kannst. Dies ist, was StackOverflow [zum Zeitpunkt des Schreibens tat; jetzt benutzt es href="#"].

Der Nachteil dabei ist, dass Sie die Kontrolle über die Tastatur verlieren, da Sie nicht auf einen Bereich / div / bare-a zugreifen oder ihn mit Leerzeichen aktivieren können. Ob dies tatsächlich ein Nachteil ist, hängt davon ab, welche Art von Aktion das Element ausführen soll. Sie können mit einiger Mühe versuchen, die Interaktion der Tastatur nachzuahmen, indem Sie ein hinzufügen tabIndex zu dem Element und lauschte auf einen Space-Tastendruck. Aber es wird niemals das wahre Verhalten des Browsers zu 100% reproduzieren, nicht zuletzt deshalb, weil verschiedene Browser auf die Tastatur anders reagieren können (ganz zu schweigen von nicht-visuellen Browsern).

Wenn Sie wirklich ein Element wollen, das kein Link ist, aber normal mit Maus oder Tastatur aktiviert werden kann, dann ist das was Sie wollen <button type="button"> (oder <input type="button"> ist genauso gut, für einfache textuelle Inhalte). Sie können CSS immer verwenden, um es neu zu gestalten, so dass es mehr wie ein Link als eine Schaltfläche aussieht, wenn Sie möchten. Aber da es sich wie ein Knopf verhält, sollten Sie es so richtig markieren.

(*: in der Website-Erstellung sowieso. Offensichtlich sind sie nützlich für Bookmarklets. javascript: Pseudo-URLs sind eine konzeptuelle Bizarrheit: Ein Locator, der nicht auf einen Ort verweist, sondern aktiven Code innerhalb des aktuellen Standorts aufruft. Sie haben massive Sicherheitsprobleme sowohl für Browser als auch für Webapps verursacht und sollten niemals von Netscape erfunden worden sein.)


368
2017-08-18 10:50



Es bedeutet, dass es nichts tun wird. Es ist ein Versuch, den Link nicht irgendwo "navigieren" zu lassen. Aber es ist nicht der richtige Weg.

Du solltest eigentlich nur return false in dem onclick Ereignis, so:

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

Normalerweise wird es verwendet, wenn der Link ein "JavaScript-y" -Ding ausführt. Wie ein AJAX-Formular posten oder ein Bild austauschen oder was auch immer. In diesem Fall machen Sie einfach jede Funktion, die als Rückgabe bezeichnet wird false.

Um Ihre Website jedoch wirklich genial zu gestalten, fügen Sie in der Regel einen Link ein, der die gleiche Aktion ausführt, wenn die Person, die sie besucht, keine JavaScript-Funktion ausführt.

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

102
2017-08-18 05:21



Es gibt einen RIESIGEN Unterschied im Verhalten von "#" vs javascript: void

"#" scrollt Sie zum Anfang der Seite während "javascript: void (0);" nicht.

Dies ist sehr wichtig, wenn Sie dynamische Seiten codieren. Der Benutzer möchte nicht zurück nach oben gehen, nur weil er auf einen Link auf der Seite geklickt hat.


57
2017-08-18 08:25



Es wird sehr häufig verwendet, um JavaScript-Funktionen zum HTML-Link hinzuzufügen, z [Print] Link, den Sie auf vielen Webseiten sehen. Code ist wie:

<a href="javascript:void(0)" onclick="call print function">Print</a>

Warum brauchen wir 'href' während 'onclick' alleine kann die Arbeit erledigen? Denn wenn wir das weglassen 'href'Wenn sich der Benutzer mit dem Mauszeiger über den Text "Drucken" bewegt, ändert sich der Cursor in "I". Haben 'href' Lassen Sie den Cursor so aussehen, als wäre es ein Hyperlink: eine zeigende Hand.

PS: Es gibt zwei Methoden: 1. href="javascript:void(0);" und 2. href="#" - Beide haben den gleichen Effekt. Aber die erste erfordert, dass JavaScript im Webbrowser aktiviert wird, während die zweite nicht aktiviert ist. Die zweite scheint also kompatibler zu sein.


46
2018-01-14 07:17



Sie sollten immer eine href auf Ihrem haben ein Stichworte. Das Aufrufen einer JavaScript-Funktion, die 'undefined' zurückgibt, funktioniert problemlos. Das wird auch mit '#' verlinkt.

Anchor - Tags im Internet Explorer 6 ohne href erhalten keine a:hover Stil angewendet.

Ja, es ist schrecklich und ein kleines Verbrechen gegen die Menschlichkeit, aber andererseits ist es Internet Explorer 6 im Allgemeinen.

Ich hoffe das hilft.

Internet Explorer 6 ist tatsächlich ein großes Verbrechen gegen die Menschlichkeit.


35
2017-08-18 05:25



Das void Der Operator wertet den angegebenen Ausdruck aus und gibt dann undefined zurück. Es vermeidet das Aktualisieren der Seite.


13
2017-07-24 13:47



void ist ein Operator, der verwendet wird, um a zurückzugeben undefined Wert, so dass der Browser keine neue Seite laden kann.

Webbrowser versuchen, die URL als URL zu verwenden und zu laden, es sei denn, es handelt sich um eine JavaScript-Funktion, die null zurückgibt. Zum Beispiel, wenn wir auf einen Link wie diesen klicken:

<a href="javascript: alert('Hello World')">Click Me</a>

Dann wird eine Warnmeldung angezeigt, ohne dass eine neue Seite geladen wird alert ist eine Funktion, die einen Nullwert zurückgibt. Dies bedeutet, dass der Browser, wenn er versucht, eine neue Seite zu laden, null anzeigt und nichts zu laden hat.

Eine wichtige Anmerkung zum Void-Operator ist, dass er einen Wert erfordert und nicht selbst verwendet werden kann. Wir sollten es so benutzen:

<a href="javascript: void(0)">I am a useless link</a>

13
2018-03-15 07:34



Es ist erwähnenswert, dass Sie manchmal void 0 sehen, wenn Sie nach undefiniert suchen, einfach weil es weniger Zeichen benötigt.

Beispielsweise:

something === undefined

gegen

something === void 0

Einige Minimierungsmethoden ersetzen undefined mit void 0 aus diesem Grund.


12
2017-11-10 06:32



Benutzung von javascript:void(0) bedeutet, dass der HTML-Autor das Ankerelement anstelle des Schaltflächenelements missbraucht.

Anchor-Tags werden oft mit dem onclick-Ereignis zum Erstellen missbraucht   Pseudo-Buttons durch Setzen von href auf "#" oder "javascript: void (0)" auf   Verhindern Sie, dass die Seite aktualisiert wird. Diese Werte führen zu unerwarteten Ergebnissen   Verhalten beim Kopieren / Ziehen von Links, Öffnen von Links in einem neuen   Tabs / Windows, Lesezeichen, und wenn JavaScript noch heruntergeladen wird,   Fehler behoben oder deaktiviert Dies vermittelt auch falsche Semantiken   Hilfstechnologien (z. B. Bildschirmleser). In diesen Fällen ist es   empfohlen, a zu verwenden <button> stattdessen. Im Allgemeinen solltest du nur verwenden   ein Anker für die Navigation mit einer richtigen URL.

Quelle: MDNs <a> Seite.


10
2017-10-04 22:43



Um dieses Konzept zu verstehen, sollte man zuerst den void-Operator in JavaScript verstehen.

Die Syntax für den Void-Operator lautet: void «expr» was auswertet und zurückgibt undefiniert.

Wenn Sie void als Funktion implementieren, sieht es folgendermaßen aus:

function myVoid(expr) {
    return undefined;
}

Dieser Void-Operator hat eine wichtige Verwendung: - das Ergebnis eines Ausdrucks zu verwerfen.

In einigen Situationen ist es wichtig, im Gegensatz zum Ergebnis eines Ausdrucks undefined zurückzugeben. Dann kann void verwendet werden, um dieses Ergebnis zu verwerfen. Eine solche Situation betrifft javascript: URLs, die für Links vermieden werden sollten, aber für Bookmarklets nützlich sind. Wenn Sie eine dieser URLs besuchen, ersetzen viele Browser das aktuelle Dokument durch das Ergebnis der Bewertung des URLs "content", aber nur dann, wenn das Ergebnis nicht undefiniert ist. Wenn Sie also ein neues Fenster öffnen möchten, ohne den aktuell angezeigten Inhalt zu ändern, können Sie Folgendes tun:

javascript:void window.open("http://example.com/")

9
2017-08-02 09:16