Ich habe die folgenden href gesehen, die von Zeit zu Zeit auf Webseiten verwendet werden. Ich verstehe jedoch nicht, was dies zu tun versucht oder welche Technik. Kann jemand bitte näher darauf eingehen?
<a href="javascript:;"></a>
javascript
John Livermore
quelle
quelle
javascript:
Schema dort verwenden , wo es nicht verwendet werden sollte (onclick="javascript:…"
)Antworten:
Ein
<a>
Element ist ungültiges HTML, es sei denn, es hat entweder einhref
oder einname
Attribut.Wenn Sie möchten, dass es korrekt als Link gerendert wird (z. B. unterstrichen, Handzeiger usw.), geschieht dies nur, wenn es ein
href
Attribut hat.Code wie dieser wird daher manchmal verwendet, um einen Link zu erstellen, ohne jedoch eine tatsächliche URL im
href
Attribut angeben zu müssen. Der Entwickler wollte offensichtlich, dass der Link selbst nichts tut, und dies war der einfachste Weg, den er kannte.Wahrscheinlich hat er an anderer Stelle einen Javascript-Ereigniscode, der ausgelöst wird, wenn auf den Link geklickt wird, und genau das möchte er tatsächlich tun, aber er möchte, dass er wie ein normaler
<a>
Tag-Link aussieht .Einige Entwickler verwenden
href='#'
für den gleichen Zweck, aber dies führt dazu, dass der Browser an den Anfang der Seite springt, was möglicherweise nicht erwünscht ist. Und er konnte die href nicht einfach leer lassen, dahref=''
es sich um einen Link zurück zur aktuellen Seite handelt (dh, dies führt zu einer Seitenaktualisierung).Es gibt Wege, um diese Dinge zu umgehen. Die Verwendung eines leeren Teils des Javascript-Codes in
href
ist eine davon, und obwohl dies nicht die beste Lösung ist, funktioniert es.quelle
return false;
oderevent.preventDefault()
diehref
Aktion niemals aufgerufen wird, sodass Sie dort etwas Vernünftigeres einfügen können.<a>
ohnehref
odername
ist nicht ungültig; Dies kann einfach mit einem Validator überprüft werden.#
Fragment enthält , wird dieses niemals an den Webserver (oder daher an die Firewall) gesendet. Es wird nur intern vom Browser verwendet. In diesem Fall führt das Klicken auf einen mit<a href="#">
... gekennzeichneten Link</a>
nicht dazu, dass Ihr Browser HTTP-Anforderungen an eine beliebige Stelle sendet. Alles, was es tun wird, ist zum Anfang der Seite zu scrollen.Anstatt den Link zum Verschieben von Seiten (oder Ankern) zu verwenden, werden mit dieser Methode grundsätzlich JavaScript-Funktionen gestartet.
Durch Klicken auf den Link wird die Warnung ausgelöst.
quelle
Es gibt verschiedene Mechanismen, um zu vermeiden, dass eine Verbindung ihr Ziel erreicht. Der aus der Frage ist nicht sehr intuitiv.
Eine sauberere Option ist die Verwendung ,
href="#no"
wo#no
ein nicht definierte Anker im Dokument.Sie können einen semantischeren Namen wie #disable oder #action verwenden, um die Lesbarkeit zu verbessern.
Vorteile des Ansatzes:
Nachteile:
Da das
<a>
Element nicht als Link fungiert, ist in diesen Fällen die beste Option, kein<a>
Element, sondern a zu verwenden<div>
und den gewünschten linkartigen Stil bereitzustellen.quelle
ist nur eine Abkürzung für:
quelle
Auf diese Weise kann ein Link beim Klicken absolut nichts bewirken (es sei denn, Javascript-Ereignisse sind daran gebunden).
Es ist eine Möglichkeit, Javascript auszuführen, anstatt einem Link zu folgen:
Wenn kein Javascript ausgeführt werden kann (wie in Ihrem Beispiel), wird nichts ausgeführt.
quelle
Beachten Sie dies:
quelle
javascript:
teilt dem Browser mit, dass er Javascript-Code schreiben wirdquelle
Alter Thread, aber ich dachte nur, dass der Grund, warum Entwickler dieses Konstrukt verwenden, nicht darin besteht, einen toten Link zu erstellen, sondern weil Javascript-URLs aus irgendeinem Grund Verweise auf das aktive HTML-Element nicht korrekt übergeben.
zB
handler_function(this.id)
funktioniertonClick
aber nicht als Javascript URL.Daher haben Sie die Wahl zwischen dem Schreiben von pedantisch standardkonformem Code, bei dem Sie den Aufruf für jeden Hyperlink manuell anpassen müssen, oder leicht nicht standardisiertem Code, der einmal geschrieben und überall verwendet werden kann.
quelle
Daher wird es verwendet, um js-Codes innerhalb von
href
anstelle von Ereignis-Listenern zu schreibenonclick
und#
Linkshref
zu vermeiden , uma
Tags für HTML gültig zu machen .Ich hatte eine Untersuchung darüber, wie man
javascript:
innerhalb vonhref
Attributen verwendet.Über diesen Code können Sie dort sogar js-Codes schreiben, anstatt nur Funktionen aufzurufen.
Getestet in Chrome Version 68.0.3440.106 (Official Build) (64-Bit)
Getestet in Firefox Quantom 61.0.1 (64-Bit)
quelle
Der beste Weg, um einen Link immer richtig zu rendern, ist mit dem CSS wie folgt:
Man sollte vermeiden, unnötige Dinge zu befolgen, wie im Thread erwähnt.
quelle