¿Se considera que el atributo 'nombre' está desactualizado para < a > etiquetas de anclaje?
-
03-07-2019 - |
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…</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?
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>
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. "
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 atributoname = " foo "
; más bien, se refieren a elementos con un atributo definido como de tipo ID, por ejemplo, el atributoid
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 >)
.