Какова максимальная максимальная длина для идентификатора HTML?

спецификация HTML говорит

Идентификаторы ID и NAME должны начинаться с буквы ([A-Za-z]), за которой может следовать любое число букв, цифр ([0-9]), дефис ( "-" ), подчеркивания ( "_" ), двоеточия ( ":" ) и периоды ( "." ).

И даже если объявление SGML HTML 4 использует значение 65536 для NAMELEN, оно отмечает "Избегайте фиксированных пределов".

Но, безусловно, браузеры, реализации CSS и инструментарий JavaScript должны иметь некоторые ограничения на длину, которую они поддерживают. Каков самый маленький такой предел, который можно безопасно использовать в приложении HTML/CSS/JS?

Ответ 1

Только что протестировано: символы 1M работают в каждом современном браузере: Chrome1, FF3, IE7, Konqueror3, Opera9, Safari3.

Я подозреваю, что даже более длинные идентификаторы могут быть трудно запомнить.

Ответ 2

Практический предел для меня, однако, длинный идентификатор, который я могу хранить в голове во время работы с HTML/CSS.

Этот предел обычно составляет от 8 до 13 символов, в зависимости от того, как долго я работаю, и если имена имеют смысл в контексте элемента.

Ответ 3

Иногда я получаю очень длинные идентификаторы, но я назову их последовательно, чтобы соответствовать их конкретной цели.

Например...

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

Как вы можете видеть, селектора иногда довольно длинны. Но это намного проще ИМХО, чем работа с чем-то вроде YUI grids.css, где вы получаете идентификаторы, такие как #doc, #bd, # yui-main и т.д.

Ответ 4

Если это академический вопрос, это довольно интересно... но что касается лучших практик, вам не нужно - или хотеть - растянуть их. Если вам нужно хранить данные об элементе HTML, лучше поместить его в атрибут объекта DOM.