Frage
Visual Studio nicht wie On-Page-Anker-Tags:
Validation (XHTML 1.0): Attribut ‚name‘ wird als veraltet. Ein neueres Konstrukt empfohlen.
Ich verwende name
Attribute auf diese Weise ...
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemalocation="http://www.w3.org/MarkUp/SCHEMA/xhtml11.xsd" xml:lang="en">
...
<body>
...
<p>On this page…</p>
<ul>
<li><a href="#one">Section One</a></li>
...
</ul>
...
<h2><a name="one">Section One</a></h2>
...
</body>
</html>
Gibt es wirklich eine mehr moderne Art und Weise, dies zu tun? Oder ist Visual Studio voller Mist?
Lösung
Sie sollten das id
Attribut verwenden statt. Funktioniert auf die gleiche Art und Weise, und Sie keine artifical <a name=...>
brauchen, sondern einfach
<h2 id="one">Section One</h2>
Andere Tipps
name-Attribute werden in XHTML veraltet 1.0 - Sie ein id-Attribut in der gleichen verwenden können obwohl Weise Fragment Identifikatoren in der HTML Kompatibilitätsrichtlinien der XHTML spec.
So können Sie einfach verwenden
<h2><a id="one">Section One</a></h2>
Beachten Sie aber, dass die 1.0-Spezifikation empfiehlt wie diese es sicher mit etwas spielen:
<h2><a name="one" id="one">Section One</a></h2>
Allerdings verwendet Ihre Fragment XHTML 1.1 , wobei der Name Attribut vollständig entfernt von a
und map
Elemente - so können Sie nur eine ID verwenden.
Ich glaube, dass der moderne Ansatz ist es, das id
Attribut zu verwenden, die als Anker bewertet werden würden. Zum Beispiel, wenn Sie geändert
<h2><a name="one">Section One</a></h2>
<h2><a id="one">Section One</a></h2>
Sie würden immer noch als page.html#one
Adresse.
Sie können auch Link auf einem Abschnitt Header:
Inhaltsverzeichnis
<P>
<A href="#section1">Introduction</A><BR>
<A href="#section2">Some background</A><BR>
<A href="#section2.1">On a more personal note</A><BR>
...the rest of the table of contents...
...the document body...
<H2 id="section1">Introduction</H2>
...section 1...
<H2 id="section2">Some background</H2>
...section 2...
<H3 id="section2.1">On a more personal note</H3>
...section 2.1...
[...]
</P>
Ja, es ist veraltet. Sie sollten mit dem Attribut „id“ ersetzen.
Zitiert w3schools Seite:
" Das id-Attribut ersetzt den Namen Attribut 4.01 HTML definiert einen Namen Attribut für die Elemente a, Applet, Rahmen, iframe, img und Karte. In XHTML ist das Attribut name veraltet. Verwenden Sie id statt. "
name = Attribute sind für Kennzeichnungselemente in einer Form, und können nur auf
Aber hier http: //www.w3. org / TR / html4 / Struktur / links.html # h-12.2.3 ich diese Zeilen lesen: „Einige ältere Benutzerprogramme Anker unterstützen nicht mit dem id-Attribut erstellt“ So?
Bis <a name="..."></a>
nicht mehr unterstützt wird durch die (X) HTML-Standard Sie verwenden - und nicht nur veraltet - kann es sein, sicherste sowohl name
und id
auf Anker auf einen Teil der gleichen Seite Verknüpfung zu verwenden. Von der XHTML 1 spec des W3C:
In XML URI-Referenzen RFC2396 diesem Zweck mit dem Fragment Identifikatoren der Form
"#foo"
auf Elemente mit einem Attributname="foo"
nicht beziehen; lieber, sie beziehen sich auf Elemente mit einem Attribut definiert vom Typ ID sein, beispielsweise das Attributid
in HTML 4. Viele bestehende HTML-Clients unterstützen nicht die Verwendung von ID-Typ-Attribute auf diese Weise, so identisch Werte können für diese beiden Attribute geliefert werden maximal nach vorne zu gewährleisten und rückwärts Kompatibilität (beispielsweise<a id="foo" name="foo">...</a>)
.