¿Cuál es una longitud máxima práctica para la identificación HTML?

88

La especificación HTML dice

Los tokens de ID y NAME deben comenzar con una letra ([A-Za-z]) y pueden ir seguidos de cualquier número de letras, dígitos ([0-9]), guiones ("-"), guiones bajos ("_") , dos puntos (":") y puntos (".").

Y aunque la declaración SGML de HTML 4 usa el valor 65536 para NAMELEN, señala "Evite límites fijos".

Pero seguramente los navegadores, las implementaciones de CSS y los kits de herramientas de JavaScript deben tener algunos límites en la longitud que admiten. ¿Cuál es el límite más pequeño que es seguro de usar en una aplicación HTML / CSS / JS?

PAUSA del sistema
fuente
3
Gracias y +1 por señalar que las identificaciones deben comenzar con una letra. He usado ID como '1', '2', '3', '4', '5' en el pasado sin problemas. Hago muchos widgets y elementos interactivos relacionados con la encuesta y el uso de IDS como este lo convierte en un atributo conveniente de 'puntuación', así como una referencia de ID. Hoy estaba tratando de hacer funcionar CSS que realmente debería haber funcionado. Incluso lo pasé por el validador W3C y no me alertó sobre este problema ... Pero esta publicación lo hizo. Y ahora, cuando cambié id = '5' a 'x5x', el CSS funciona ... ¡Ahora solo tengo que cambiar la subrutina de puntuación para quitar las x! Gracias de nuevo.
Ben A. Hilleli

Respuestas:

217

Recién probado: 1 millón de caracteres funciona en todos los navegadores modernos: Chrome1, FF3, IE7, Konqueror3, Opera9, Safari3.

Sospecho que incluso las identificaciones más largas podrían volverse difíciles de recordar.

Phihag
fuente
15
¡Este tipo ha hecho 10 "millones" de personajes! stackoverflow.com/a/1496150/74585
Matthew Lock
1
Lo siento. 1M? ¿Como en 1 millón?
beliha
8
@phihag Cuando estudié informática en Toronto, y el instructor dijo en broma que "todos, por supuesto, saben por qué faltan 10 días en el calendario gregoriano en octubre de 1582", tuve que preguntarle a un colega, que me miró condescendiente y dijo " Debido a la adopción del Calendario Gregoriano, ¿qué, nunca fuiste a la escuela primaria? " No lo había hecho. No en Canadá. Fui a la escuela primaria en Egipto y aprendí sobre el Calendario Islámico. Lo mismo ocurre con los prefijos SI: puede que tengas el beneficio de la educación occidental, yo no. Pero gracias por la actitud condescendiente de todos modos.
beliha
2
@beliha Estoy bastante seguro de que al menos aquí en Portugal nunca escuché que al calendario gregoriano le faltan 10 días en octubre de 1582, y supongo que no soy el único. No creo que la escuela haya enseñado eso nunca por lo que puedo recordar, por lo que sería audaz que cualquiera esperara que todos lo sepan.
user7393973
1
@beliha Fui a la escuela occidental y ni siquiera aprendí que usamos el calendario gregoriano (no al menos con este nombre), solo usamos el término estándar del calendario. y sobre estos 10 días perdidos, lo aprendí de youtube.
Tinaira
15

Un límite práctico, para mí, es cuánto tiempo puedo almacenar en mi cabeza durante el tiempo que trabajo con HTML / CSS.

Este límite suele estar entre 8 y 13 caracteres, dependiendo de cuánto tiempo haya estado trabajando y si los nombres tienen sentido en el contexto del elemento.

Nick Presta
fuente
5
Yo agregaría que es posible extender el "búfer interno" de uno usando prefijos, si es necesario. :-)
Ben Blank
12
Esta pregunta sigue siendo muy importante, porque con los RIA, a menudo, los ID se generan mediante código y, para ser únicos, pueden ser largos; como ejemplo: window_2_panel_12_group_6_label_2 _...
Josh
3

A veces termino con identificaciones muy largas, pero las nombro consistentemente para que coincidan con su propósito exacto.

Por ejemplo...

<div id="page">
    <div id="primary-content"></div>
    <div id="secondary-content"></div>
    <div id="search-form-and-primary-nav-wrapper">
        <form id="search-form"></form>
        <ul id="primary-nav">
            <li id="primary-nav-about-us"></li>
        </ul>
    </div>
    <a id="logo"><img /></a>
</div><!-- /#page -->

Como puede ver, los selectores ocasionalmente son bastante largos. Pero es mucho más fácil en mi humilde opinión que trabajar con algo como YUI grids.css donde terminas con ID como #doc, #bd, # yui-main, etc.

Mark Hurd
fuente
3
Lo que hago mucho es nombrarlos heirachicamente, entonces tengo un div id = 'user', luego dentro de eso puedo tener tres divs, id = 'user-stats', id = 'user-Inventory', id = 'user- hechizos ', luego di dentro de las estadísticas de usuario que podría tener 5 divs, id =' user-stats-Strength ', id =' user-stats-agility ', id =' user-stats-defense ', id =' user- stats-intellect ', id =' user-stats-heath ', etc., que me parece muy útil para recordar sus identificadores, siempre que mantenga las convenciones de nomenclatura, es decir, -'s o _'s para espacios o camelCase.
Psytronic
2

Si esta es una pregunta académica, es bastante interesante ... pero en lo que respecta a las mejores prácticas, no debería necesitar, o querer, estirarlas. Si necesita almacenar datos sobre un elemento HTML, es mejor ponerlo en un atributo del objeto DOM.

Matt Howell
fuente