Ist es in Ordnung, ein Ankertag ohne das href
Attribut zu verwenden und stattdessen einen JavaScript-Klickereignishandler zu verwenden? Also würde ich das href
komplett weglassen , es nicht einmal leer haben ( href=""
).
Ist es in Ordnung, ein Ankertag ohne das href
Attribut zu verwenden und stattdessen einen JavaScript-Klickereignishandler zu verwenden? Also würde ich das href
komplett weglassen , es nicht einmal leer haben ( href=""
).
Antworten:
In HTML5 ist die Verwendung eines a
Elements ohne href
Attribut gültig. Es wird als "Platzhalter-Hyperlink" betrachtet.
Beispiel:
<a>previous</a>
Suchen Sie auf der Referenzseite des w3c-Ankertags nach "Platzhalter-Hyperlink": https://www.w3.org/TR/2016/REC-html51-20161101/textlevel-semantics.html#the-a-element .
Und es wird auch im Wiki hier erwähnt: https://www.w3.org/wiki/Elements/a
Ein Platzhalter-Link ist für Fälle vorgesehen, in denen Sie ein Ankerelement verwenden möchten, es jedoch nirgendwo navigieren lassen möchten. Dies ist praktisch, um die aktuelle Seite in einem Navigationsmenü oder einem Breadcrumb-Trail zu markieren. (Der alte Ansatz wäre gewesen, entweder ein span-Tag oder ein Ankertag mit einer Klasse namens "active" oder "current" zu verwenden, um es zu formatieren, und JavaScript, um die Navigation abzubrechen.)
Ein Platzhalter-Link ist auch nützlich, wenn Sie das Ziel des Links zur Laufzeit dynamisch über JavaScript festlegen möchten. Sie legen einfach den Wert des href-Attributs fest und das Ankertag kann angeklickt werden.
Siehe auch:
href
der cursor: pointer
Stil nicht automatisch zum Element hinzugefügt wird.
Es ist in Ordnung, kann aber gleichzeitig dazu führen, dass einige Browser langsam werden.
http://webdesignfan.com/yslow-tutorial-part-2-of-3-reducing-server-calls/
Mein Rat ist die Verwendung von <a href="#"> </a>
Wenn Sie JQuery verwenden, denken Sie daran, auch Folgendes zu verwenden:
.click(function(event){
event.preventDefault();
// Click code here...
});
Kurze Antwort: Nein.
Lange Antwort:
Erstens ist es ohne ein href-Attribut kein Link. Wenn es sich nicht um einen Link handelt, kann nicht auf die Tastatur (oder den Atemschalter oder ein anderes nicht auf Zeigern basierendes Eingabegerät) zugegriffen werden (es sei denn, Sie verwenden HTML 5-Funktionen vontabindex
die nicht allgemein unterstützt werden). Es ist sehr selten, dass ein Steuerelement keinen Tastaturzugriff hat.
Zweite. Sie sollten eine Alternative haben, wenn das JavaScript nicht ausgeführt wird (da es nur langsam vom Server geladen wurde, eine Internetverbindung unterbrochen wurde (z. B. mobiles Signal in einem fahrenden Zug), JS ausgeschaltet ist usw. usw.).
Nutzen Sie die progressive Verbesserung durch unauffälliges JS.
href
obligatorisch (es sei denn, es war ein benannter Anker. In diesem Fall ergab Tabindex keinen Sinn). Die Verwendung von tabindex
, um der Tab-Reihenfolge nicht fokussierbare Elemente hinzuzufügen, ist eine neue Innovation in HTML 5.
a
Tag ohne href
Attribut zu haben.
Wenn Sie href für die Abwärtskompatibilität verwenden müssen, können Sie auch verwenden
<a href="javascript:void(0)">link</a>
anstelle von #, wenn Sie das Attribut nicht verwenden möchten
Das Tag kann ohne href-Attribut verwendet werden. Im Gegensatz zu vielen Antworten hier gibt es tatsächlich Standardgründe für das Erstellen eines Ankers, wenn kein href vorhanden ist. Semantisch bedeutet "a" einen Anker oder eine Verbindung. Wenn Sie es für etwas verwenden, das dieser Bedeutung folgt, ist alles in Ordnung.
Eine Standardverwendung des a-Tags ohne href besteht darin, benannte Links zu erstellen. Auf diese Weise können Sie einen Anker mit name = blah verwenden und später einen Anker mit href = # blah erstellen, um auf den benannten Abschnitt der aktuellen Seite zu verlinken. Dies ist jedoch veraltet, da Sie auf die gleiche Weise auch IDs verwenden können. Als Beispiel könnten Sie ein Header-Tag mit id = header verwenden und später einen Anker haben, der auf href = # header zeigt.
Mein Punkt ist jedoch nicht, die Verwendung der Eigenschaft name vorzuschlagen. Nur um einen Anwendungsfall bereitzustellen, in dem Sie keine href benötigen, und daher zu begründen, warum dies nicht erforderlich ist.
href
Attribut für ein <a>
Element wegzulassen , das als interaktives Element verwendet wird (dh als Link). Wie Sie bereits erwähnt haben, ist es ohne href
Attribut ganz einfach ... kein Link, nur ein Anker, was eine ganz andere Sache ist.
Aus Sicht der Barrierefreiheit <a>
ohne href ist nicht tabulatorfähig. Alle Links sollten tabulatorfähig sein. Fügen Sie daher einen tabindex = '0 "hinzu, wenn Sie keine href haben.
Das <a>
Tag ohne "href" kann nützlich sein, wenn Sie mehrstufige Menüs verwenden. Sie müssen die nächste Ebene erweitern, möchten jedoch nicht, dass diese Menübezeichnung ein aktiver Link ist. Ich hatte noch nie Probleme damit.
In einigen Browsern treten Probleme auf, wenn Sie kein href-Attribut angeben. Ich schlage vor, dass Sie Ihren Code so schreiben:
<a href="#" onclick="yourcode();return false;">Link</a>
Sie können Ihren Code () durch Ihre eigene Funktion oder Logik ersetzen, aber denken Sie daran, return false hinzuzufügen. Aussage am Ende.
#
für die Indexseite. Für einige meiner Navigationsleisten-Links möchte ich keine Route auslösen, zu #
der dies geschieht, wenn Sie sie a href="#"
selbst verwenden. Wenn Sie verwenden, wird <a href="#" onclick="return false;"
die Route nicht ausgelöst, aber das Klickereignis sprudelt immer noch zu meinem Handler (der DOM-Ereignisse verwendet, die über jQuery und Backbone.Radio verknüpft sind). Danke @ shashwat13 :)