845 Stimmen

Soll ich HTML-Anker mit "name" oder "id" erstellen?

Wenn man sich auf einen Teil einer Webseite mit dem " http://example.com/#foo " Methode, sollte man die

<h1><a name="foo"/>Foo Title</h1>

o

<h1 id="foo">Foo Title</h1>

Beide funktionieren, aber sind sie gleichwertig, oder gibt es semantische Unterschiede?

2 Stimmen

Der Link sollte eigentlich lauten http://example.com#foo (also ohne das / vor #)

87 Stimmen

Eigentlich, http://example.com#foo y http://example.com/#foo sind gleichwertig, wie in einem der RFCs über URIs definiert.

1 Stimmen

Bitte überprüfen Sie diese Antwort: stackoverflow.com/a/69869066/2457251

15voto

mikemaccana Punkte 93077

Achtung für JavaScript-Benutzer: alle IDs werden zu globalen Variablen unter Fenster .

<h1 id="foo">Foo Title</h1>

Ich habe gerade das JS global erstellt:

window.foo

Der Wert von window.foo wird die HTMLElement für die h1 .

Wenn Sie nicht garantieren können, dass alle Werte, die in id Attribute sicher sind, können Sie es vorziehen, sich an name :

<h1 name="foo">Foo Title</h1>

12 Stimmen

Die gute Nachricht ist, dass Sie die Funktionen, die in window . Zum Beispiel, <div id="open"></div> überschreibt nicht die Funktion window.open .

1 Stimmen

Warum sollten Sie garantieren, dass alle in id-Attributen verwendeten Werte sicher sind?

1 Stimmen

Artikel über dieses Missgeschick: css-tricks.com/

9voto

Spikolynn Punkte 3799

Die ID-Methode wird in älteren Browsern nicht funktionieren, die Anker-Name-Methode wird in neueren HTML-Versionen veraltet sein... Ich würde mich für id entscheiden.

3 Stimmen

Haben Sie eine Quelle für diese Behauptungen? Verstehen Sie mich nicht falsch, ich bin nur allgemein daran interessiert.

12 Stimmen

Das wirft kein Licht auf "funktioniert nicht auf älteren Browsern". - Um welche Browser handelt es sich, abgesehen von Netscape 4?

3 Stimmen

Ich habe versucht, die id in einem div zu verwenden, und es funktioniert sogar im IE 7. Konnte nicht testen, in IE 6 obwohl... aber wer verwendet IE 6 heutzutage...

9voto

erickson Punkte 256579

Es gibt keinen semantischen Unterschied; der Trend in den Normen geht in Richtung der Verwendung von id statt name . Es gibt jedoch Unterschiede, die dazu führen können, dass man Folgendes bevorzugt name in einigen Fällen. Die HTML 4.01-Spezifikation bietet die folgenden Hinweise :

Utilice id ou name ? Die Autoren sollten bei der Entscheidung über die Verwendung folgender Punkte berücksichtigen id ou name für einen Ankernamen:

  • Das id-Attribut kann mehr als nur ein Ankername sein (z. B. ein Stylesheet-Selektor, ein Verarbeitungsbezeichner usw.).
  • Einige ältere User Agents unterstützen keine Anker, die mit dem Attribut id erstellt wurden.
  • Das Attribut name ermöglicht umfangreichere Ankernamen (mit Entitäten).

14 Stimmen

Um das klarzustellen: Wenn sie von "älteren Benutzer-Agenten" sprechen, meinen sie WIRKLICH alte Benutzer-Agenten. Darüber würde ich mir keine Sorgen machen.

1 Stimmen

HTML5 erlaubt auch "reiche" IDs. Hat jemand Versionsnummern von Browsern mit einem Marktanteil von mehr als 0,1 %, die keine id-verankerten Fragmente verarbeiten können? - Oder ist der Dinosaurier Netscape 4.7 tatsächlich der am weitesten verbreitete?

7 Stimmen

FWIW, ich konnte nicht bekommen id Anker in Safari für iOS 5 funktionieren, also nicht nur in Browsern, die '09 schon "richtig alt" waren. Ich musste hinzufügen name s, um meine Website auf dem iPad richtig zum Laufen zu bringen. Möglicherweise wurde dies inzwischen behoben, ich besitze keine iOS 6-Geräte, um dies zu überprüfen.

5voto

JustinCB Punkte 473

In html 5 wird die id="" Attribut definiert einen eindeutigen Bezeichner für ein Element, das auch ein Anker für einen Fragment-Link ist. In früheren HTML-Standards wurde das name="" Attribut des <a> Element definiert einen Anker für einen Fragment-Link. Ich empfehle etwas wie:
<a name="foo" id="foo"></a><h1>Foo Title</h1>
Da die Unterstützung für die id="" Attribut ist ein wenig lückenhaft (obwohl die neuesten Versionen aller wichtigen Browser es unterstützen, sind die Versionen, die es nicht unterstützen, nicht älter als ein paar Jahre [und es ist am besten, etwas nicht zu zerstören, wenn es keinen guten Grund dafür gibt]). Es ist kompatibel und stilisiert nicht, was auch immer in dem verlinkten Element ist, denn das schließende </a> ist immer noch außerhalb des Elements, aber es ist immer noch in allen aktuellen Standards gültig.

Stellen Sie sicher, dass die name="" y id="" Attribute der <a> Element sind identisch.

2 Stimmen

Nicht alles, was HTML verwendet, ist ein Browser. Ich verwende eine Java-Bibliothek, die Informationen in einem Fenster mit HTML anzeigt. Das ist die einzige Methode, die funktioniert. Es ist die name Attribut an einem Anker-Tag, das erforderlich war; das Setzen von Attributen an einem hN o span hat nicht funktioniert.

3voto

maximus Punkte 165

Ich habe eine Webseite, die aus einer Reihe von vertikal gestapelten Div-Containern besteht, die im Format identisch sind und sich nur in der Seriennummer unterscheiden. Ich wollte den Namensanker oben in jedem div ausblenden. Die wirtschaftlichste Lösung bestand darin, den Anker als id in das öffnende div-Tag einzufügen, d. h,

<div id="[serial number]" class="topic_wrapper">

CodeJaeger.com

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.

Powered by:

X