Яка практична максимальна довжина для ідентифікатора HTML?


88

Специфікація HTML говорить

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

І навіть незважаючи на те, що в декларації SGML HTML 4 використовується значення 65536 для NAMELEN, у ньому зазначається "Уникайте фіксованих обмежень".

Але, безсумнівно, браузери, реалізації CSS та набори інструментів JavaScript повинні мати певні обмеження щодо довжини, яку вони підтримують. Яка найменша така межа, яку безпечно використовувати в програмі HTML / CSS / JS?


3
Дякую та +1 за вказівку, що посвідчення особи повинні починатися з листа. Раніше я без проблем використовував ідентифікатори, такі як '1', '2', '3', '4', '5'. Я роблю багато віджетів та інтерактивних елементів, пов’язаних з опитуванням, і використовую подібні IDS для зручного атрибута „score”, а також посилання на ID. Сьогодні я намагався налагодити якийсь CSS, який справді повинен був би працювати. Я навіть пропустив його повз валідатор W3C, і він не попередив мене про цю проблему ... Але ця публікація про це. І тепер, коли я змінив id = '5' на 'x5x', css працює ... Тепер мені просто потрібно змінити підпрограму підрахунку балів, щоб позбавити х! Знову Thx.
Ben A. Hilleli

Відповіді:


216

Щойно перевірено: 1 мільйон символів працює у всіх сучасних браузерах: Chrome1, FF3, IE7, Konqueror3, Opera9, Safari3.

Я підозрюю, що навіть довші посвідчення можуть стати важко запам’ятатими.


15
Цей хлопець зробив 10 "мільйонів" символів! stackoverflow.com/a/1496150/74585
Метью Лок,

1
Вибачте. 1 млн? Як у 1 мільйон?
беліга

8
@phihag Коли я вивчав CS в Торонто, і викладач сказав, що "всі, звичайно, знають, чому в григоріанському календарі в жовтні 1582 року не вистачає 10 днів", мені довелося попросити колегу, який поблажливо подивився на мене і сказав " Через прийняття Григоріанського календаря, що, ви ніколи не ходили в початкову школу? " Я не мав. Не в Канаді. Я ходив до початкової школи в Єгипті і натомість дізнався про ісламський календар. Те саме з префіксами СІ: можливо, ви скористалися перевагою західної освіти, я ні. Але все ж дякую за поблажливе ставлення.
беліха

2
@beliha Цілком впевнений, що принаймні тут, у Португалії, я ніколи не чув, щоб у григоріанському календарі пропало 10 днів у жовтні 1582 року, і я здогадуюсь, що я не єдиний. Я не думаю, що школа ніколи цього не навчила з того, що я пам’ятаю, тому було б сміливо для кожного очікувати, що всі це знають.
user7393973

1
@beliha Я ходив до західної школи і навіть не дізнався, що ми використовуємо григоріанський календар (принаймні під цією назвою), ми просто використовували стандартний термін календаря. і про ці 10 зниклих днів я дізнався про це з YouTube.
Тінайра

15

Практичним обмеженням для мене є, однак, довгий ідентифікатор, який я можу зберігати в голові під час роботи з HTML / CSS.

Це обмеження зазвичай становить від 8 до 13 символів, залежно від того, скільки часу я працюю, і від того, чи імена мають сенс у контексті елемента.


5
Я б додав, що, можливо, можливо буде розширити власний "внутрішній буфер" за допомогою префіксів, якщо це необхідно. :-)
Бен Бланк

12
Це питання все ще дуже важливе, оскільки з RIA часто ідентифікатори генеруються кодом, і для того, щоб бути унікальними, може бути довгим; як приклад: window_2_panel_12_group_6_label_2 _...
Джош

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

Як бачите, селектори часом бувають досить довгими. Але набагато простіше IMHO, ніж працювати з чимось на зразок YUI grids.css, де ви отримуєте ідентифікатори, такі як #doc, #bd, # yui-main тощо.


3
Я багато роблю, називаючи їх ірахічно, тому маю div id = 'user', тоді в цьому я можу мати три divs, id = 'user-stats', id = 'user-inventory', id = 'user- заклинання ', а потім скажіть у статистиці користувача, що у мене може бути 5 divs, id =' user-stats-strength ', id =' user-stats-agility ', id =' user-stats-defence ', id =' user- stats-intellect ', id =' user-stats-heath 'тощо та ін., які, на мою думку, є дуже корисними для запам’ятовування їх ідентифікаторів, доки я дотримуюсь конвенцій про імена, тобто -s чи _ для пробілів або camelCase.
Psytronic

2

Якщо це академічне питання, це досить цікаво ... але, що стосується найкращих практик, вам не потрібно - або хотіти - розтягувати їх. Якщо вам потрібно зберегти дані про елемент HTML, краще помістити їх в атрибут об’єкта DOM.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.