2010-06-06 13 views
6

He estado trabajando con una nueva instalación del software wiki "MoinMoin". Como yo estaba jugando con él, escribiendo páginas de prueba sobre todo al azar, he creado un enlace con un fragmentoURL semántica de "identificador de fragmento" para documentos HTML

blah blah see also [[SomeStuff#whatever|some other stuff about whatever]] 

Entonces yo tenía que encontrar la manera de crear el ancla para que "sea cual sea" identificador de fragmento. No recuerdo tener que hacer eso con MediaWiki, así que tuve que cavar a su alrededor, pero finalmente me encontré con que MoinMoin tiene un "ancla" macro:

== Whatever == 
<<Anchor(whatever)>> 

mirando el HTML generado, que se sorprendió al ver una etiqueta <span> vacía con un valor "id" de "lo que sea". Esperaba que fuera una etiqueta <a> con un atributo de "nombre" de "lo que sea". Busqué y encontré la fuente, y hay un comentario que dice que lo cambiaron de una etiqueta <a> para evitar algunos problemas de IE con las secciones <pre>. Esto me confundió — no por lo de IE, sino porque me pareció que su "solución" había dejado completamente roto el mecanismo de anclaje.

Sin embargo, para mi sorpresa, otras pruebas indicaron que funcionó bien. Escribí una página de prueba con etiquetas 300 <span>, todas con valores "id", y además me sorprendí cuando Firefox se comportó exactamente como lo hubiera esperado si hubiera usado etiquetas <a>. También funcionó cuando cambié todas las etiquetas <span> a <em>.

Por lo tanto, para este momento, o estás tan sorprendido como yo, o estás pensando "¿cómo puede alguien tan tonto tener tantos puntos de reputación?" Si está en la segunda categoría, ¿es realmente el caso que he estado escribiendo en HTML durante 15 años ahora — un lote de HTML — y de alguna manera no recuerdo que los navegadores usan el fragmento HTML para encontrar cualquier tipo de elemento de con una "id" coincidente?

estado de la mente: soplado

Respuesta

4

Bueno HTML 4.01 es bastante claro ...

12.2.3 Anchors with the id attribute 

The id attribute may be used to create an anchor at the start tag of any element 
(including the A element). 

This example illustrates the use of the id attribute to position an anchor in an 
H2 element. The anchor is linked to via the A element. 

You may read more about this in <A href="#section2">Section Two</A>. 
...later in the document 
<H2 id="section2">Section Two</H2> 
...later in the document 
<P>Please refer to <A href="#section2">Section Two</A> above 
for more details. 

Si te sirve de consuelo, no estás solo. Alguien comentó otra respuesta mía recientemente, diciendo lo mismo.

Comenzó con HTML 4, por lo que si aprendió su HTML antes de 1998/9, el cambio no fue importante en comparación con los otros cambios y, por lo tanto, no es lo más fácil de notar. Realmente no comencé a aprender HTML hasta 2001, así que HTML 4 fue donde comencé.

+0

OK, bueno, eso lo aclara! Gracias. ¡Y sí, aprendí HTML hace bastante tiempo y realmente no he vuelto a estudiar las minucias desde entonces para cosas que creía entender completamente! – Pointy

1

No sabía que esto tampoco. Es oficial, sin embargo. Desde el HTML 4.01 spec:

Destino anclas en documentos HTML pueden ser especificadas por el elemento A (nombrarlo con el atributo de nombre), o por cualquier otro elemento (nombre con el atributo id).

Wikipedia también lo sabía:

En aplicaciones HTML, http://www.foo.org/foo.html#bar se refiere al elemento con el atributo id que tiene la barra de valor (es decir, id = "bar") en el documento identificado por el URI http://www.foo.org/foo.html, que suele ser la ubicación desde la que se obtendría el documento a través de Internet. El atributo de nombre en desuso también se puede usar para este fin de la misma manera.

Cuestiones relacionadas