Qual è una lunghezza massima pratica per l'ID HTML?


88

La specifica HTML dice

I token ID e NAME devono iniziare con una lettera ([A-Za-z]) e possono essere seguiti da qualsiasi numero di lettere, cifre ([0-9]), trattini ("-"), trattini bassi ("_") , due punti (":") e punti (".").

E anche se la dichiarazione SGML di HTML 4 usa il valore 65536 per NAMELEN, nota "Evita limiti fissi".

Ma sicuramente i browser, le implementazioni CSS e i toolkit JavaScript devono avere dei limiti sulla lunghezza che supportano. Qual è il limite più piccolo che è sicuro utilizzare in un'applicazione HTML / CSS / JS?


3
Grazie e +1 per aver sottolineato che gli ID devono iniziare con una lettera. In passato ho utilizzato ID come "1", "2", "3", "4", "5" senza problemi. Faccio un sacco di widget relativi ai sondaggi e di elementi interattivi e utilizzo l'IDS come questo per un comodo attributo di "punteggio" e per l'ID di riferimento. Oggi stavo cercando di far funzionare alcuni CSS che avrebbero dovuto funzionare davvero. L'ho persino eseguito oltre il validatore W3C e non mi ha avvisato di questo problema ... Ma questo post sì. E ora quando ho cambiato id = '5' in 'x5x' il CSS funziona ... Ora devo solo cambiare la subroutine di punteggio per rimuovere le x! Grazie ancora.
Ben A. Hilleli

Risposte:


216

Appena testato: 1 milione di caratteri funziona su tutti i browser moderni: Chrome1, FF3, IE7, Konqueror3, Opera9, Safari3.

Sospetto che ID ancora più lunghi potrebbero diventare difficili da ricordare.


15
Questo ragazzo ha fatto 10 "milioni" di personaggi! stackoverflow.com/a/1496150/74585
Matthew Lock

1
Mi dispiace. 1 M? Come in 1 milione?
beliha

8
@phihag Quando ho studiato scienze informatiche a Toronto, e l'istruttore ha scherzato dicendo che "tutti ovviamente sanno perché mancano 10 giorni nel calendario gregoriano nell'ottobre del 1582", ho dovuto chiedere a un collega, che mi ha guardato con condiscendenza e ha detto " A causa dell'adozione del calendario gregoriano, cosa, non sei mai andato alle elementari? " Non l'ho fatto. Non in Canada. Sono andato alla scuola elementare in Egitto e invece ho imparato a conoscere il calendario islamico. Stessa cosa con i prefissi SI: potresti avere il vantaggio dell'istruzione occidentale, io no. Ma grazie per l'atteggiamento condiscendente comunque.
beliha

2
@beliha Sono abbastanza sicuro che almeno qui in Portogallo non ho mai sentito dire che mancano 10 giorni al calendario gregoriano nell'ottobre del 1582, e immagino di non essere l'unico. Non credo che la scuola l'abbia mai insegnato da quello che posso ricordare, quindi sarebbe audace per chiunque aspettarsi che tutti lo sappiano.
user7393973

1
@beliha Sono andato alla scuola occidentale e non ho nemmeno imparato che usiamo il calendario gregoriano (non almeno con questo nome), abbiamo solo usato il termine del calendario standard. e su questi 10 giorni mancanti, l'ho imparato da youtube.
Tinaira

15

Un limite pratico, per me, è comunque un ID lungo che posso memorizzare nella mia testa durante il tempo in cui lavoro con l'HTML / CSS.

Questo limite è solitamente compreso tra 8 e 13 caratteri, a seconda di quanto tempo ho lavorato e se i nomi hanno senso nel contesto dell'elemento.


5
Aggiungerei che potrebbe essere possibile estendere il proprio "buffer interno" usando i prefissi, se necessario. :-)
Ben Blank

12
Questa domanda è ancora molto importante, perché con le RIA, spesso gli ID vengono generati dal codice e, per essere univoci, possono essere lunghi; ad esempio: window_2_panel_12_group_6_label_2 _...
Josh

3

A volte mi ritroverò con ID molto lunghi, ma li nomino in modo coerente per corrispondere al loro scopo esatto.

Per esempio...

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

Come puoi vedere, i selettori sono occasionalmente piuttosto lunghi. Ma è molto più facile IMHO che lavorare con qualcosa come YUI grids.css dove finisci con ID come #doc, #bd, # yui-main, ecc.


3
Quello che faccio spesso è nominarli in modo gerarchico, quindi avere un div id = 'user', quindi all'interno di questo potrei avere tre div, id = 'user-stats', id = 'user-Inventory', id = 'user- incantesimi ', quindi dire in user-stats potrei avere 5 div, id =' user-stats-strength ', id =' user-stats-agility ', id =' user-stats-defence ', id =' user- stats-intellect ', id =' user-stats-heath 'etc etc, che trovo molto utile per ricordare i loro id, fintanto che mantengo le convenzioni di denominazione, cioè, -'s o _'s per spazi o camelCase.
Psytronic

2

Se questa è una domanda accademica, è piuttosto interessante ... ma per quanto riguarda le migliori pratiche, non dovresti aver bisogno di - o volerlo - allungarle. Se è necessario memorizzare dati su un elemento HTML, è meglio inserirli in un attributo sull'oggetto DOM.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.