Pergunta

O Visual Studio não gosta de tags âncora na página:

Validação (XHTML 1.0 Transicional):Atributo 'Nome' é considerado desatualizado.Uma construção mais recente é recomendada.

estou a usar name atributos desta forma…

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

Existe realmente uma maneira mais moderna de fazer isso?Ou o Visual Studio está cheio de porcaria?

Foi útil?

Solução

Você deve usar o id atributo em vez disso. Funciona da mesma maneira, e você não precisa de um artificial <a name=...>, mas simplesmente

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

Outras dicas

atributos de nome são preteridos em Xhtml 1.0 - Você pode usar um atributo de identificação da mesma maneira, veja Identificadores de fragmentos no Diretrizes de compatibilidade HTML da especificação xhtml.

Então você pode simplesmente usar

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

Mas observe que a especificação 1.0 recomenda tocá -lo seguro com algo assim:

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

No entanto, seu fragmento usa XHTML 1.1, onde o atributo de nome foi totalmente removido a partir de a e map Elementos - para que você possa usar apenas um ID.

Eu acredito que a abordagem moderna é usar o id atributo, que seria avaliado como uma âncora. Por exemplo, se você mudou

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

para

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

Você ainda abordaria como page.html#one.

Você também pode vincular um cabeçalho de seção:

Índice

<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

Eu acredito que a maneira correta de fazer isso é

Sim, está desatualizado. Você deve substituir pelo atributo "id".

Citando a página W3Schools:

"O atributo ID substitui o atributo de nome HTML 4.01 define um atributo de nome para os elementos A, applet, quadro, iframe, img e mapa. Em xhtml, o atributo de nome está preguiçoso. Use ID em vez disso."

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

Os atributos name= servem para rotular elementos em um formulário e só podem ser usados ​​em elementos <form> (input, textarea, select etc).Para todo o resto, ID= é usado.Não se sabe exatamente por que o pessoal do W3C pensava que eram necessárias duas maneiras diferentes de nomear um elemento (com diferentes conjuntos de caracteres permitidos).

Mas aqui http://www.w3.org/tr/html4/struct/links.html#h-12.2.3 Eu li o seguinte: "Alguns agentes de usuários mais antigos não suportam âncoras criadas com o atributo ID". Então?

Até <a name="..."></a> não é mais suportado pelo padrão HTML (x) que você está usando-e não apenas depreciado-pode ser mais seguro usar os dois name e id nas âncoras que ligam a uma parte da mesma página. De Especificação XHTML 1 do W3C:

Em XML, URI-Referências RFC2396 esse fim com identificadores de fragmentos da forma "#foo" Não se refira a elementos com um atributo name="foo"; Em vez disso, eles se referem a elementos com um atributo definido para ser do tipo ID, por exemplo, o id Atributo no HTML 4. Muitos clientes HTML existentes não suportam o uso de atributos do tipo ID dessa maneira; portanto, valores idênticos podem ser fornecidos para ambos os dois atributos para garantir a compatibilidade máxima para frente e para trás (por exemplo,, por exemplo, <a id="foo" name="foo">...</a>).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top