2009-02-24 6 views
67

Die HTML spec sagtWas ist eine praktische maximale Länge für HTML-ID?

ID und NAME-Token mit einem Buchstaben beginnen müssen ([A-Za-z]) und kann durch eine beliebige Anzahl von Buchstaben, Ziffern ([0-9]), Bindestrichen gefolgt werden ("-"), Unterstriche ("_"), Doppelpunkte (":") und Punkte (".").

Und obwohl die 10 von HTML 4 den Wert 65536 für NAMELEN verwendet, stellt es fest "Vermeiden Sie feste Grenzen."

Aber sicherlich Browser, CSS-Implementierungen und JavaScript-Toolkits müssen einige Grenzen für die Länge, die sie unterstützen. Was ist das kleinste Limit, das in einer HTML/CSS/JS-Anwendung sicher verwendet werden kann?

+2

Vielen Dank und +1 für das Hinweis auf diese IDs muss mit einem Brief beginnen. Ich habe IDs wie '1', '2', '3', '4', '5' in der Vergangenheit ohne Problem verwendet. Ich mache eine Menge von Umfrage bezogenen Widgets und interaktiven Elementen und benutze die IDS wie diese für ein bequemes "Score" -Attribut sowie ID-Referenz. Heute habe ich versucht, etwas CSS zu arbeiten, das wirklich hätte funktionieren sollen. Ich habe es sogar am W3C Validator vorbeigeführt und es hat mich nicht auf dieses Problem aufmerksam gemacht ... Aber dieser Post hat es getan. Und jetzt, als ich ID = '5' zu 'x5x' änderte, funktioniert das CSS ... Jetzt muss ich nur noch das Scoring-Unterprogramm ändern, um die X's zu entfernen! Danke nochmal. –

Antwort

170

Nur getestet: 1M Zeichen funktioniert auf jedem modernen Browser: Chrome1, FF3, IE7, Konqueror3, Opera9, Safari3.

Ich vermute, noch längere IDs könnten schwer zu merken sein.

+105

"Ich vermute, noch längere IDs könnten schwer zu merken sein." - LOL! – Josh

+12

Dieser Typ hat 10 "Millionen" Charaktere gemacht! http://stackoverflow.com/a/1496150/74585 –

+1

LOL, und wow, das scheint ein bisschen übertrieben zu sein. – rectangletangle

0

Wenn dies eine akademische Frage ist, ist es ziemlich interessant ... aber so weit wie Best Practices betroffen sind, sollten Sie nicht - oder wollen - diese ausstrecken. Wenn Sie Daten zu einem HTML-Element speichern müssen, ist es besser, sie in ein Attribut des DOM-Objekts einzufügen.

13

Eine praktische Grenze, für mich ist jedoch eine lange ID, die ich während der Zeit, in der ich mit dem HTML/CSS arbeite, in meinem Kopf speichern kann.

Diese Grenze liegt normalerweise zwischen 8 und 13 Zeichen, abhängig davon, wie lange ich gearbeitet habe und ob die Namen im Zusammenhang mit dem Element sinnvoll sind.

+4

Ich würde hinzufügen, dass es möglich sein kann, den "internen Puffer" durch Präfixe zu erweitern, falls erforderlich. :-) –

+0

Es ist sicherlich möglich. :) –

+9

Diese Frage ist immer noch sehr wichtig, weil mit RIAs oft IDs durch Code generiert werden, und um einzigartig zu sein, kann lang sein; als ein Beispiel: window_2_panel_12_group_6_label_2 _... – Josh

1

Manchmal werde ich mit sehr langen IDs enden, aber ich benenne sie konsistent, um ihren genauen Zweck zu erfüllen.

Zum Beispiel ...

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

Wie Sie sehen können, sind die Wähler gelegentlich ziemlich lang. Aber es ist so viel einfacher IMHO als mit etwas wie der YUI gates.css zu arbeiten, wo Sie mit IDs wie #doc, #bd, # yui-main, etc. enden.

+3

Was ich viel mache, ist, sie heirachisch zu nennen, also habe ich eine div id = 'user', dann kann ich drei divs haben, id = 'user-stats', id = 'user-inventory', id = 'user "Spells", dann sagen wir in User-Stats, dass ich 5 Divs haben könnte, id = 'Benutzer-Stats-Stärke', ID = 'Benutzer-Stats-Agilität', ID = 'Benutzer-Stats-Verteidigung', ID = 'Benutzer -stats-intellect ', id =' user-stats-heath 'usw. usw., die ich für sehr nützlich halte, um ihre IDs zu behalten, solange ich Namenskonventionen, dh, -'s oder _'s für Leerzeichen oder camelCase einhalte. – Psytronic

Verwandte Themen