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&hellip;</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?

War es hilfreich?

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>

Quelle: http://www.w3.org/TR /REC-html40/struct/links.html

Ich glaube, die richtige Art und Weise ist es

zu tun

name = Attribute sind für Kennzeichnungselemente in einer Form, und können nur auf

-Elemente verwendet werden (Eingabe, Textfeld, wählen usw.). Für alles andere, ID = verwendet. Warum genau die W3C Leute gedacht, zwei verschiedene Arten eines Elements Benennung (mit verschiedenen Sätzen von zulässigen Zeichen) benötigt wurden, ist nicht ohne weiteres bekannt.

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 Attribut name="foo" nicht beziehen; lieber,   sie beziehen sich auf Elemente mit einem Attribut definiert vom Typ ID sein, beispielsweise das Attribut id 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>).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top