¿Se considera que el atributo 'nombre' está desactualizado para < a > etiquetas de anclaje?

StackOverflow https://stackoverflow.com/questions/608222

Pregunta

A Visual Studio no le gustan las etiquetas de anclaje en la página:

  

Validación (XHTML 1.0 Transitional):   El atributo 'nombre' es considerado   anticuado. Un constructo más nuevo es   recomendado.

Estoy usando los atributos de nombre de esta manera ...

<?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 una forma más moderna de hacer esto? ¿O es Visual Studio lleno de basura?

¿Fue útil?

Solución

Debes usar el atributo id en su lugar. Funciona de la misma manera, y no necesita un < a name = ... > artificial, sino simplemente

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

Otros consejos

los atributos de nombre están en desuso en XHTML 1.0 : puedes usar un atributo de identificación en el mismo Sin embargo, consulte Identificadores de fragmentos en Directrices de compatibilidad HTML de la especificación XHTML.

Así que simplemente puedes usar

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

Pero tenga en cuenta que la especificación 1.0 recomienda jugar de forma segura con algo como esto:

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

Sin embargo, su fragmento utiliza XHTML 1.1 , donde el atributo de nombre ha sido eliminado por completo de a y map elementos, por lo que solo puedes usar un id.

Creo que el enfoque moderno es usar el atributo id , que se evaluaría como un ancla. Por ejemplo, si has cambiado

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

a

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

Aún lo consideraría como page.html # one .

También puede vincular en un encabezado de sección:

Tabla de contenido

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

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

Creo que la forma correcta de hacerlo es < a id = " uno " >

Sí, está desactualizado. Debes reemplazar con el " id " atributo.

Página de citar w3schools:

  

" El atributo id reemplaza al nombre Attribute   HTML 4.01 define un atributo de nombre para los elementos a, applet, frame, iframe, img y map. En XHTML el atributo de nombre está en desuso. Utilice id en su lugar. "

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

nombre = los atributos son para etiquetar elementos en un formulario, y solo se pueden usar en < form > Elementos (input, textarea, select etc). Para todo lo demás, se usa ID =. Exactamente por qué la gente del W3C pensó que se necesitaban dos maneras diferentes de nombrar un elemento (con diferentes conjuntos de caracteres permitidos) no se conoce fácilmente.

Pero aquí http: //www.w3. org / TR / html4 / struct / links.html # h-12.2.3 Leí esto: " Algunos agentes de usuarios más antiguos no son compatibles con los anclajes creados con el atributo id. " ¿Y?

Hasta que < a name = " ... " > < / a > ya no es compatible con el estándar (X) HTML que está utilizando, y no solo está en desuso - puede ser más seguro usar tanto name como id en los anclajes que enlazan a una parte de la misma página. De la especificación XHTML 1 de W3C :

  

En XML, las referencias de URI RFC2396 que terminan con el fragmento   los identificadores de la forma " # foo " no se refieren a elementos con un atributo name = " foo " ; más bien,   se refieren a elementos con un atributo definido como de tipo ID, por ejemplo, el atributo id en HTML   4. Muchos clientes HTML existentes no admiten el uso de atributos de tipo ID de esta manera, por lo que son idénticos   se pueden suministrar valores para ambos atributos para garantizar el máximo de avance y retroceso   compatibilidad (por ejemplo, < a id = " foo " nombre = " foo " > ... < / a >) .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top