Im Folgenden finden Sie zwei Methoden zum Erstellen eines Links, der ausschließlich zum Ausführen von JavaScript-Code dient. Was ist besser in Bezug auf Funktionalität, Seitenladegeschwindigkeit, Validierungszwecke usw.?
function myJsFunc() {
alert("myJsFunc");
}
<a href="#" onclick="myJsFunc();">Run JavaScript Code</a>
oder
function myJsFunc() {
alert("myJsFunc");
}
<a href="javascript:void(0)" onclick="myJsFunc();">Run JavaScript Code</a>
javascript
html
performance
optimization
href
Peter Mortensen
quelle
quelle
<a href="javascript:void(0)" onclick="myJsFunc();">
macht absolut keinen Sinn. Wenn Sie müssen die Verwendungjavascript:
psuedo-Protokoll, brauchen Sie nicht dasonclick
Attribut als auch.<a href="javascript:myJsFunc();">
wird gut tun.myJsFunc()
ein Rückgabewert vorliegt , wird Ihre Seite unterbrochen . jsfiddle.net/jAd9G Sie müssten immer nochvoid
so verwenden :<a href="javascript:void myJsFunc();">
. Aber dann würde sich das Verhalten immer noch unterscheiden. Das Aufrufen des Links über das Kontextmenü löst dasclick
Ereignis nicht aus.<a href="javascript:;" onclick="myEvent()"
?javascript:;
ist viel schneller zu tippen alsjavascript:void(0)
<a>
Tag verwenden, wenn Sie NICHT eine andere Seite über die native Browserfunktion öffnen möchten, sondern eine Javascript-Aktion auslösen möchten? Verwenden Sie einfach einspan
Tag mit einer Klasse vonjs-trigger
wäre wohl viel besser ". Oder fehlt mir etwas?Antworten:
Ich benutze
javascript:void(0)
.Drei Gründe. Die Förderung der Verwendung
#
in einem Entwicklerteam führt zwangsläufig dazu, dass einige den Rückgabewert der so genannten Funktion verwenden:Aber dann vergessen sie,
return doSomething()
im Onclick zu verwenden und nur zu verwendendoSomething()
.Ein zweiter Grund zur Vermeidung
#
ist, dass das Finalereturn false;
nicht ausgeführt wird, wenn die aufgerufene Funktion einen Fehler auslöst. Daher müssen die Entwickler auch daran denken, Fehler in der aufgerufenen Funktion angemessen zu behandeln.Ein dritter Grund ist, dass es Fälle gibt, in denen die
onclick
Ereigniseigenschaft dynamisch zugewiesen wird. Ich bevorzuge es, eine Funktion aufrufen oder dynamisch zuweisen zu können, ohne die Funktion speziell für die eine oder andere Anhangsmethode codieren zu müssen. Daheronclick
sieht mein (oder irgendetwas anderes) HTML-Markup folgendermaßen aus:ODER
Die Verwendung
javascript:void(0)
vermeidet alle oben genannten Kopfschmerzen, und ich habe keine Beispiele für einen Nachteil gefunden.Wenn Sie ein Einzelentwickler sind, können Sie eindeutig Ihre eigene Wahl treffen. Wenn Sie jedoch als Team arbeiten, müssen Sie Folgendes angeben:
Verwenden Sie
href="#"
, stellen Sie sicher , dass am Endeonclick
immer enthalten istreturn false;
, dass eine aufgerufene Funktion keinen Fehler auslöst. Wenn Sie eine Funktion dynamisch an dieonclick
Eigenschaft anhängen, stellen Sie sicher, dass sie nicht nur einen Fehler auslöst, sondern auch zurückgibtfalse
.ODER
Verwenden
href="javascript:void(0)"
Der zweite ist eindeutig viel einfacher zu kommunizieren.
quelle
href="javascript:void(0)"
Methode verwendenjavascript:
sollte als schlechte Praxis, aufdringlich und nicht als würdevolle Herabstufung angesehen werden.event.preventDefault()
genau dazu dienen, das Standardverhalten zu verhindern (wie in diesem Fall an den Anfang der Seite zu springen) und es ohne all diereturn false;
Verrücktheit besser zu machen .javascript:void(0)
Verstößt gegen die Inhaltssicherheitsrichtlinie auf CSP-fähigen HTTPS-Seiten. Eine Möglichkeit wäre dann,href='#'
undevent.preventDefault()
im Handler zu verwenden, aber ich mag das nicht so sehr. Vielleicht können Sie eine Konvention festlegenhref='#void'
und sicherstellen, dass kein Element auf der Seite vorhanden istid="void"
. Auf diese Weise wird durch Klicken auf einen Link zu einem nicht vorhandenen Anker die Seite nicht gescrollt.href
. Dies würde in jQuery gemacht werden mit:$('a[href="#"]').click(function(e) { e.preventDefault ? e.preventDefault() : e.returnValue = false; });
Weder.
Wenn Sie eine sinnvolle URL haben können, verwenden Sie diese als HREF. Der Onclick wird nicht ausgelöst, wenn jemand mit der mittleren Maustaste auf Ihren Link klickt, um einen neuen Tab zu öffnen, oder wenn JavaScript deaktiviert ist.
Wenn dies nicht möglich ist, sollten Sie mindestens das Ankertag mit JavaScript und den entsprechenden Klickereignishandlern in das Dokument einfügen.
Mir ist klar, dass dies nicht immer möglich ist, aber meiner Meinung nach sollte es bei der Entwicklung einer öffentlichen Website angestrebt werden.
Schauen Sie sich Unauffälliges JavaScript und Progressive Enhancement (beide Wikipedia) an.
quelle
javascript:
oder#
beiden schlechten Praktiken und nicht zu fördern. Schöne Artikel übrigens.<button>
zu sein. Aber einverstanden: Es sollte wahrscheinlich nicht speziell ein<a>
Ort sein, zu dem es einen geeigneten Link gibt.Tun
<a href="#" onclick="myJsFunc();">Link</a>
oder<a href="javascript:void(0)" onclick="myJsFunc();">Link</a>
was auch immer, das einonclick
Attribut enthält - war vor fünf Jahren in Ordnung, obwohl es jetzt eine schlechte Praxis sein kann. Hier ist der Grund:Es fördert die Praxis von aufdringlichem JavaScript - das sich als schwierig zu warten und schwer zu skalieren herausgestellt hat. Mehr dazu in Unauffälligem JavaScript .
Sie verbringen Ihre Zeit damit, unglaublich übermäßig ausführlichen Code zu schreiben - was Ihrer Codebasis nur sehr wenig (wenn überhaupt) zugute kommt.
Es gibt jetzt bessere, einfachere und wartbarere und skalierbarere Möglichkeiten, um das gewünschte Ergebnis zu erzielen.
Der unauffällige JavaScript-Weg
Hab einfach überhaupt kein
href
Attribut! Bei einem guten CSS-Reset wird der fehlende Standardcursorstil behoben, sodass dies kein Problem darstellt. Fügen Sie dann Ihre JavaScript-Funktionalität mithilfe eleganter und unauffälliger Best Practices hinzu, die besser zu warten sind, da Ihre JavaScript-Logik in JavaScript und nicht in Ihrem Markup verbleibt. Dies ist wichtig, wenn Sie mit der Entwicklung umfangreicher JavaScript-Anwendungen beginnen, in die Ihre Logik aufgeteilt werden muss Blackbox-Komponenten und Vorlagen. Mehr dazu in der JavaScript-Anwendungsarchitektur in großem MaßstabEinfaches Codebeispiel
Ein Blackboxed Backbone.js Beispiel
Ein skalierbares Beispiel für eine Backbox.js- Komponente mit Blackbox finden Sie in diesem funktionierenden Beispiel für jsfiddle hier . Beachten Sie, wie wir unauffällige JavaScript-Praktiken verwenden und in einer winzigen Menge Code eine Komponente haben, die ohne Nebenwirkungen oder Konflikte zwischen den verschiedenen Komponenteninstanzen mehrmals auf der Seite wiederholt werden kann. Tolle!
Anmerkungen
Wenn Sie das
href
Attribut für dasa
Element weglassen, kann das Element nicht über dietab
Tastaturnavigation aufgerufen werden. Wenn Sie möchten, dass auf diese Elemente über dentab
Schlüssel zugegriffen werden kann, können Sie dastabindex
Attribut festlegen oderbutton
stattdessen Elemente verwenden. Sie können Schaltflächenelemente einfach so gestalten, dass sie wie normale Links aussehen, wie in der Antwort von Tracker1 erwähnt .Das Weglassen des
href
Attributs für dasa
Element führt dazu, dass Internet Explorer 6 und Internet Explorer 7 dasa:hover
Styling nicht übernehmen . Aus diesem Grund haben wira.hover
stattdessen einen einfachen JavaScript-Shim hinzugefügt, um dies zu erreichen . Was vollkommen in Ordnung ist, als ob Sie kein href-Attribut und keine anmutige Verschlechterung haben, dann funktioniert Ihr Link sowieso nicht - und Sie haben größere Probleme, über die Sie sich Sorgen machen müssen.Wenn Sie möchten, dass Ihre Aktion weiterhin mit deaktiviertem JavaScript funktioniert, verwenden Sie ein
a
Element mit einemhref
Attribut, das auf eine URL verweist, die die Aktion manuell ausführt, anstatt über eine Ajax-Anforderung oder was auch immer der richtige Weg sein sollte. Wenn Sie dies tun, möchten Sie sicherstellen, dass Sieevent.preventDefault()
bei Ihrem Klick einen Aufruf ausführen, um sicherzustellen, dass beim Klicken auf die Schaltfläche nicht der Link folgt. Diese Option wird als würdevolle Verschlechterung bezeichnet.quelle
button
hier vorgeschlagene Ansatz im Link-Stil wird durch den unvermeidbaren aktiven Zustand "3d" in IE9 und niedriger beeinträchtigt .javascript:void(0)
. Das ist die pragmatische Antwort und die einzig vernünftige Antwort in der realen Welt.'#'
bringt den Benutzer zurück zum Anfang der Seite, also gehe ich normalerweise mitvoid(0)
.javascript:;
verhält sich auch wiejavascript:void(0);
quelle
#
oder#something
werden Sie zu diesem Anker nimmt auf der Basis href Seite statt auf der aktuellen Seite.#!
) macht den Trick, aber es ist definitiv eine schlechte Übung.Ich würde ehrlich gesagt auch nicht vorschlagen. Ich würde ein
<button></button>
für dieses Verhalten stilisiertes verwenden .Auf diese Weise können Sie Ihren Onclick zuweisen. Ich schlage auch vor, über ein Skript zu binden und nicht das
onclick
Attribut auf dem Element-Tag zu verwenden. Das einzige Problem ist der Pseudo-3D-Texteffekt in älteren IEs, der nicht deaktiviert werden kann.Wenn Sie ein A-Element verwenden MÜSSEN , verwenden Sie es
javascript:void(0);
aus den bereits genannten Gründen.HINWEIS: Sie können das
0
durch eine Zeichenfolge ersetzen, diejavascript:void('Delete record 123')
als zusätzlicher Indikator dienen kann, der anzeigt, was der Klick tatsächlich bewirkt.quelle
<button>
sonderninput type=button
stattdessen?<clickable>
Element. Oder<clickabletim>
wenn Sie es vorziehen. Leider kann es für Tastaturbenutzer schwierig sein, das Element zu fokussieren, wenn ein nicht standardmäßiges Tag oder ein einfaches Div verwendet wird.button
. Und IE9 verliert glücklicherweise schnell Marktanteile, und der aktive 1px-Effekt sollte uns nicht daran hindern, semantisches Markup zu verwenden.<a>
ist ein Link, der Sie irgendwohin schicken soll, für Aktionen, die wir haben<button>
.Die erste, idealerweise mit einem echten Link, falls der Benutzer JavaScript deaktiviert hat. Stellen Sie einfach sicher, dass false zurückgegeben wird, um zu verhindern, dass das Klickereignis ausgelöst wird, wenn JavaScript ausgeführt wird.
Wenn Sie Angular2 verwenden, funktioniert dies folgendermaßen:
<a [routerLink]="" (click)="passTheSalt()">Click me</a>
.Siehe hier https://stackoverflow.com/a/45465728/2803344
quelle
Weder wenn du mich fragst;
Wenn Ihr "Link" ausschließlich dazu dient, JavaScript-Code auszuführen, gilt er nicht als Link. eher ein Textstück mit einer daran gekoppelten JavaScript-Funktion. Ich würde empfehlen, eine zu verwenden
<span>
Tag mit einemonclick handler
angehängten und einigen grundlegenden CSS zu verwenden, um einen Link zu imitieren. Links werden für die Navigation erstellt. Wenn Ihr JavaScript-Code nicht für die Navigation vorgesehen ist, sollte er kein<a>
Tag sein.Beispiel:
quelle
<span>
s sollen nichts tun .<A>
nchors und<buttons>
werden dafür verwendet!buttons
ist hier eine bessere Wahl, während die Verwendung von aspan
nicht der Fall ist.Idealerweise würden Sie dies tun:
Oder, noch besser, Sie hätten den Standard-Aktionslink im HTML-Code und würden das onclick-Ereignis nach dem Rendern des DOM unauffällig über JavaScript zum Element hinzufügen, um sicherzustellen, dass Sie es nicht tun, wenn JavaScript nicht vorhanden / verwendet ist Lassen Sie Ihren Code von nutzlosen Ereignishandlern durchsuchen und möglicherweise Ihren tatsächlichen Inhalt verschleiern (oder zumindest davon ablenken).
quelle
Die Verwendung
#
macht nur einige lustige Bewegungen, daher würde ich die Verwendung empfehlen,#self
wenn Sie beim Schreiben von sparen möchtenJavaScript bla, bla,
.quelle
#self
für benannte Tags verwenden und das nervige Browserverhalten vermeiden können , wenn Sie zum Seitenanfang springen. Vielen Dank.#self
scheint es nichts Besonderes zu sein. Jede Fragmentkennung, die nicht mit dem Namen oder der ID eines Elements im Dokument übereinstimmt (und nicht leer oder "oben" ist), sollte den gleichen Effekt haben.#void
im anderen Kommentar eine Konvention zu etablieren, die aber#self
genauso kurz und leicht zu merken ist. Alles ist besser als#
Ich benutze folgendes
stattdessen
quelle
javascript:
(kein Semikolon), weil es in der Statusleiste beim Schweben am saubersten aussieht.javascript:void('Do foo')
da void unabhängig davon undefiniert zurückgibt, gibt es dem Benutzer einen Indikator dafür, was das Klicken bewirkt. WoDo foo
kann seinDelete record X
oder was auch immer du magst.Ich stimme den Vorschlägen an anderer Stelle zu, wonach Sie die reguläre URL im
href
Attribut verwenden und dann bei einem Klick eine JavaScript-Funktion aufrufen sollten. Der Fehler ist, dass siereturn false
nach dem Anruf automatisch hinzufügen .Das Problem bei diesem Ansatz ist, dass der Link nicht mehr angeklickt werden kann, wenn die Funktion nicht funktioniert oder wenn ein Problem auftritt. Das Onclick-Ereignis wird immer zurückgegeben
false
, sodass die normale URL nicht aufgerufen wird.Es gibt eine sehr einfache Lösung. Lassen Sie die Funktion zurückkehren
true
wenn sie ordnungsgemäß funktioniert. Verwenden Sie dann den zurückgegebenen Wert, um zu bestimmen, ob der Klick abgebrochen werden soll oder nicht:JavaScript
HTML
Beachten Sie, dass ich das Ergebnis der
doSomething()
Funktion negiere . Wenn es funktioniert, wird es zurückkehrentrue
, also wird es negiert (false
) und daspath/to/some/URL
wird nicht aufgerufen. Wenn die Funktion zurückgegeben wirdfalse
(z. B. unterstützt der Browser nichts, was in der Funktion verwendet wird, oder wenn etwas anderes schief geht), wird sie negierttrue
undpath/to/some/URL
aufgerufen.quelle
#
ist besser alsjavascript:anything
, aber das Folgende ist noch besser:HTML:
JavaScript:
Sie sollten immer nach einer angemessenen Verschlechterung streben (für den Fall, dass der Benutzer kein JavaScript aktiviert hat ... und wenn es mit Spezifikationen und Budget ausgestattet ist). Es wird auch als schlechte Form angesehen, JavaScript-Attribute und -Protokolle direkt in HTML zu verwenden.
quelle
click
auf Links aktiviert werden ...Ich empfehle , mit einem
<button>
Element statt, vor allem wenn das Steuerelement eine Änderung der Daten bewirken soll. (So etwas wie ein POST.)Es ist sogar noch besser, wenn Sie die Elemente unauffällig injizieren, eine Art progressive Verbesserung. (Siehe diesen Kommentar .)
quelle
.btn
Schaltflächen und Links genau gleich aussehen lässt.button
auch kein # in die URL ein und zeigt diea
href nicht als Javascript an:;Sofern Sie den Link nicht mit JavaScript schreiben (damit Sie wissen, dass er im Browser aktiviert ist), sollten Sie idealerweise einen geeigneten Link für Personen bereitstellen, die mit deaktiviertem JavaScript surfen, und dann die Standardaktion des Links in Ihrem Onclick verhindern Event-Handler. Auf diese Weise führen Benutzer mit aktiviertem JavaScript die Funktion aus und Benutzer mit deaktiviertem JavaScript springen zu einer geeigneten Seite (oder Position auf derselben Seite), anstatt nur auf den Link zu klicken und nichts zu tun.
quelle
Auf jeden Fall ist hash (
#
) besser, weil es in JavaScript ein Pseudoschema ist:Natürlich ist "#" mit einem Onclick-Handler, der Standardaktionen verhindert, [viel] besser. Darüber hinaus ist ein Link, der ausschließlich dazu dient, JavaScript auszuführen, nicht wirklich "ein Link", es sei denn, Sie senden einen Benutzer an einen vernünftigen Anker auf der Seite (nur # wird nach oben gesendet), wenn etwas schief geht. Sie können einfach das Erscheinungsbild der Verknüpfung mit dem Stylesheet simulieren und href überhaupt vergessen.
In Bezug auf den Vorschlag von Cowgod, insbesondere dies:
...href="javascript_required.html" onclick="...
Dies ist ein guter Ansatz, unterscheidet jedoch nicht zwischen den Szenarien "JavaScript deaktiviert" und "Onclick schlägt fehl".quelle
Ich gehe normalerweise für
Es ist kürzer als Javascript: void (0) und macht dasselbe.
quelle
Ich würde ... benutzen:
Gründe dafür:
href
einfachen Suchmaschinen es brauchen. Wenn Sie etwas anderes verwenden (z. B. eine Zeichenfolge), kann dies dazu führen, dass a404 not found
Fehler führen.return false;
springt die Seite nicht nach oben oder bricht dieback
Schaltfläche.quelle
Ich wähle "Verwenden"
javascript:void(0)
, da dies das Klicken mit der rechten Maustaste verhindern könnte, um das Inhaltsmenü zu öffnen. Istjavascript:;
aber kürzer und macht das gleiche.quelle
Also, wenn Sie einige JavaScript Dinge mit tun
<a />
Tag und wenn Sie setzenhref="#"
auch, können Sie hinzufügen return false am Ende der Veranstaltung (im Fall von Inline - Ereignisbindung) wie:Oder Sie können das href- Attribut mit JavaScript wie folgt ändern :
oder
Aber semantisch sind alle oben genannten Wege, um dies zu erreichen, falsch (es funktioniert jedoch gut) . Wenn kein Element zum Navigieren auf der Seite erstellt wurde und mit dem einige JavaScript-Elemente verknüpft sind, sollte es kein Element sein
<a>
Tag sein.Sie können
<button />
stattdessen einfach a verwenden, um Dinge oder andere Elemente wie b, span oder was auch immer nach Ihren Wünschen zu tun, zu tun, da Sie Ereignisse zu allen Elementen hinzufügen dürfen.So gibt es einen Vorteil zu nutzen
<a href="#">
. Sie erhalten dabei standardmäßig den Cursorzeiger für dieses Elementa href="#"
. Dafür denke ich, dass Sie CSS dafür verwenden können,cursor:pointer;
was auch dieses Problem löst.Und am Ende, wenn Sie das Ereignis aus dem JavaScript-Code selbst binden, können Sie dies tun
event.preventDefault()
, wenn Sie ein<a>
Tag verwenden. Wenn Sie jedoch kein<a>
Tag dafür verwenden, erhalten Sie einen Vorteil, den Sie nicht haben. Ich muss das nicht tun.Wenn Sie sehen, ist es besser, kein Tag für solche Dinge zu verwenden.
quelle
Verwenden Sie Links nicht ausschließlich zum Ausführen von JavaScript.
Bei Verwendung von href = "#" wird die Seite nach oben verschoben. Die Verwendung von void (0) führt zu Navigationsproblemen im Browser.
Verwenden Sie stattdessen ein anderes Element als einen Link:
Und gestalten Sie es mit CSS:
quelle
span
Element nicht, da es sich um ein nicht fokussierbares Element handelt. Deshalb brauchen Sie einen Knopf.tabindex="0"
es der Spanne hinzufügen . Die Verwendung der Schaltfläche ist jedoch besser, da Sie die gewünschte Funktionalität kostenlos erhalten. Um den Zugriff über einen Bereich zu ermöglichen, müssen Sie nicht nur einen Klick-Handler anhängen, sondern auch einen Tastatur-Event-Handler, der nach Drücken der Leertaste oder Eingabetaste sucht und dann den normalen Klick-Handler auslöst. Sie möchten auch den zweiten CSS-Selektor.funcActuator:hover, .funcActuator:focus
so ändern, dass die Tatsache, dass das Element den Fokus hat, offensichtlich ist.Es wäre besser, jQuery zu verwenden.
und lassen Sie beide
href="#"
und weghref="javascript:void(0)"
.Das Anker-Tag-Markup ist wie folgt
Einfach genug!
quelle
Wenn Sie AngularJS verwenden , können Sie Folgendes verwenden:
Welches wird nichts tun.
In Ergänzung
false
mit JavaScript zurückkehrenquelle
Wenn dies nicht der
href
Fall ist, gibt es möglicherweise keinen Grund, ein Ankertag zu verwenden.Sie können fast jedem Element Ereignisse (Klicken, Schweben usw.) hinzufügen. Warum also nicht einfach ein
span
oder ein verwendendiv
?Und für Benutzer mit deaktiviertem JavaScript: Wenn es keinen Fallback gibt (z. B. eine Alternative
href
), sollten sie dieses Element zumindest überhaupt nicht sehen und damit interagieren können, unabhängig davon, ob es sich um ein<a>
oder ein<span>
Tag handelt.quelle
Normalerweise sollten Sie immer einen Fallback-Link haben, um sicherzustellen, dass Clients mit deaktiviertem JavaScript noch einige Funktionen haben. Dieses Konzept wird als unauffälliges JavaScript bezeichnet.
Beispiel ... Angenommen, Sie haben den folgenden Suchlink:
Sie können immer Folgendes tun:
Auf diese Weise werden Personen mit deaktiviertem JavaScript angesprochen,
search.php
während Ihre Betrachter mit JavaScript Ihre erweiterten Funktionen anzeigen.quelle
Ich persönlich benutze sie in Kombination. Zum Beispiel:
HTML
mit ein bisschen jQuery
oder
Aber ich benutze das nur, um zu verhindern, dass die Seite nach oben springt, wenn der Benutzer auf einen leeren Anker klickt. Ich benutze selten onClick und andere
on
Ereignisse direkt in HTML.Mein Vorschlag wäre, ein
<span>
Element mit demclass
Attribut anstelle eines Ankers zu verwenden. Zum Beispiel:Weisen Sie die Funktion dann
.link
mit einem Skript zu, das in den Textkörper und kurz vor dem</body>
Tag oder in ein externes JavaScript-Dokument eingeschlossen ist.* Hinweis: Verwenden Sie für dynamisch erstellte Elemente:
Verwenden Sie für dynamisch erstellte Elemente, die mit dynamisch erstellten Elementen erstellt werden, Folgendes:
Anschließend können Sie das span-Element so gestalten, dass es mit ein wenig CSS wie ein Anker aussieht:
Hier ist ein jsFiddle- Beispiel von oben.
quelle
Je nachdem, was Sie erreichen möchten, können Sie den Onclick vergessen und einfach die href verwenden:
Es geht um die Notwendigkeit, false zurückzugeben. Ich mag die
#
Option nicht, weil sie, wie erwähnt, den Benutzer an den Anfang der Seite bringt. Wenn Sie den Benutzer an einen anderen Ort senden müssen, wenn JavaScript nicht aktiviert ist (was bei mir selten vorkommt, aber eine sehr gute Idee ist), funktioniert die von Steve vorgeschlagene Methode hervorragend.Zuletzt können Sie verwenden,
javascript:void(0)
wenn Sie nicht möchten, dass jemand irgendwohin geht, und wenn Sie keine JavaScript-Funktion aufrufen möchten. Es funktioniert hervorragend, wenn Sie ein Bild haben, mit dem ein Mouseover-Ereignis stattfinden soll, auf das der Benutzer jedoch nicht klicken kann.quelle
Wenn ich mehrere Faux-Links habe, gebe ich ihnen lieber eine Klasse von "No-Link".
Dann füge ich in jQuery den folgenden Code hinzu:
Und für den HTML-Code ist der Link einfach
Ich mag es nicht, Hash-Tags zu verwenden, es sei denn, sie werden für Anker verwendet, und ich mache das oben genannte nur, wenn ich mehr als zwei Faux-Links habe, sonst gehe ich mit Javascript: void (0).
Normalerweise vermeide ich es, überhaupt keinen Link zu verwenden, und wickle einfach etwas in einen Zeitraum ein und verwende dies, um JavaScript-Code wie ein Popup oder eine Inhaltsoffenbarung zu aktivieren.
quelle
Ich glaube, Sie präsentieren eine falsche Zweiteilung. Dies sind nicht die einzigen beiden Optionen.
Ich stimme Herrn D4V360 zu, der vorgeschlagen hat, dass Sie, obwohl Sie das Ankertag verwenden, hier keinen wirklichen Anker haben. Alles, was Sie haben, ist ein spezieller Abschnitt eines Dokuments, der sich etwas anders verhalten sollte. Ein
<span>
Tag ist weitaus geeigneter.quelle
a
durch ein ersetzenspan
möchten, müssen Sie daran denken, es über die Tastatur fokussierbar zu machen.Ich habe beide in Google Chrome mit den Entwicklertools ausprobiert, und das
id="#"
dauerte 0,32 Sekunden. Während diejavascript:void(0)
Methode nur 0,18 Sekunden dauerte. Also in Google Chrome,javascript:void(0)
funktioniert besser und schneller.quelle
Grundsätzlich paraphrasiere ich diesen praktischen Artikel mit progressiver Verbesserung . Die kurze Antwort lautet, dass Sie niemals verwenden
javascript:void(0);
oder es#
sei denn, Ihre Benutzeroberfläche hat bereits gefolgert, dass JavaScript aktiviert ist. In diesem Fall sollten Sie verwendenjavascript:void(0);
. Verwenden Sie span auch nicht als Links, da dies zunächst semantisch falsch ist.Die Verwendung von SEO- freundlichen URL-Routen in Ihrer Anwendung, wie z. B. / Home / Action / Parameters, ist ebenfalls eine gute Vorgehensweise. Wenn Sie einen Link zu einer Seite haben, die zuerst ohne JavaScript funktioniert, können Sie die Erfahrung danach verbessern. Verwenden Sie einen echten Link zu einer Arbeitsseite und fügen Sie dann ein Onlick-Ereignis hinzu, um die Präsentation zu verbessern.
Hier ist ein Beispiel. Home / ChangePicture ist ein funktionierender Link zu einem Formular auf einer Seite mit Benutzeroberfläche und Standard-HTML-Senden-Schaltflächen. Es sieht jedoch besser aus, wenn es in einen modalen Dialog mit jQueryUI-Schaltflächen eingefügt wird. In beiden Fällen funktioniert dies je nach Browser, der die erste mobile Entwicklung erfüllt.
quelle