Domanda

A Visual Studio non piacciono i tag di ancoraggio nella pagina:

  

Convalida (XHTML 1.0 Transitional):   L'attributo 'nome' è considerato   obsolete. Un costrutto più recente è   consigliato.

Sto usando gli attributi name in questo modo & # 8230;

<?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>

Esiste davvero un modo più moderno di farlo? O Visual Studio è pieno di schifezze?

È stato utile?

Soluzione

Dovresti invece usare l'attributo id . Funziona allo stesso modo e non hai bisogno di un < a name = ... > artificiale, ma semplicemente

<h2 id="one">Section One</h2>

Altri suggerimenti

gli attributi del nome sono deprecati in XHTML 1.0 - puoi utilizzare un attributo id nello stesso comunque, vedi Identificatori di frammenti in Linee guida per la compatibilità HTML delle specifiche XHTML.

Quindi puoi semplicemente usare

<h2><a id="one">Section One</a></h2>

Ma nota che le specifiche 1.0 raccomandano di giocare in sicurezza con qualcosa del genere:

<h2><a name="one" id="one">Section One</a></h2>

Tuttavia, il tuo frammento utilizza XHTML 1.1 , dove l'attributo name è stato completamente rimosso da a e map elements - quindi puoi usare solo un id.

Credo che l'approccio moderno sia usare l'attributo id , che verrebbe valutato come un'ancora. Ad esempio, se hai cambiato

<h2><a name="one">Section One</a></h2>

a

<h2><a id="one">Section One</a></h2>

Lo indirizzeresti comunque come page.html # one .

Puoi anche collegare un'intestazione di sezione:

Sommario

<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>

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

Credo che il modo corretto di farlo sia < a id = " one " >

Sì, è obsoleto. Devi sostituirlo con l '"id" attributo.

Citando la pagina w3schools:

  

" L'attributo id sostituisce il nome attributo   HTML 4.01 definisce un attributo name per gli elementi a, applet, frame, iframe, img e map. In XHTML l'attributo name è deprecato. Usa invece id. "

http://www.w3schools.com/Xhtml/xhtml_syntax.asp

Gli attributi

??name = servono per etichettare gli elementi in un modulo e possono essere usati solo su < form > elementi (input, textarea, select etc). Per tutto il resto, viene utilizzato ID =. Non è noto perché la gente del W3C pensasse che fossero necessari due modi diversi di nominare un elemento (con diversi set di caratteri consentiti).

Ma qui http: //www.w3. org / TR / html4 / struct / links.html # h-12.2.3 Ho letto questo: " Alcuni agenti utente meno recenti non supportano gli ancoraggi creati con l'attributo id. " Quindi?

Fino a quando < a name = " ... " > < / a > non è più supportato dallo standard (X) HTML che stai utilizzando - e non è solo obsoleto - potrebbe essere più sicuro usare sia name che id su ancore che si collegano a una parte della stessa pagina. Dalla specifica XHTML 1 del W3C :

  

In XML, riferimenti URI RFC2396 che terminano con un frammento   gli identificatori del modulo " # foo " non si riferiscono ad elementi con un attributo name = " foo " ; piuttosto,   si riferiscono ad elementi con un attributo definito come di tipo ID, ad esempio l'attributo id in HTML   4. Molti client HTML esistenti non supportano l'utilizzo degli attributi di tipo ID in questo modo, quindi identici   i valori possono essere forniti per entrambi questi attributi per garantire il massimo in avanti e all'indietro   compatibilità (ad es. < a id = " foo " name = " foo " > ... < / a >) .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top