HTML ID的实际最大长度是多少?


88

HTML规范

ID和NAME令牌必须以字母([A-Za-z])开头,后可以跟任意数量的字母,数字([0-9]),连字符(“-”),下划线(“ _”) ,冒号(“:”)和句点(“。”)。

而且即使HTML 4 的SGML声明为NAMELEN使用值65536,它也会指出“避免固定限制”。

但可以肯定的是,浏览器,CSS实现和JavaScript工具包在支持的长度上必须有一些限制。在HTML / CSS / JS应用程序中可以安全使用的最小限制是多少?


3
感谢您和+1指出ID必须以字母开头。我过去曾使用过ID,例如'1','2','3','4','5'。我做了很多与调查相关的小部件和交互元素,并使用像这样的IDS来获得方便的“得分”属性和ID参考。今天,我试图使某些CSS应该可以正常工作。我什至把它通过了W3C验证程序,它并没有使我警惕这个问题……但是这篇文章确实做到了。现在,当我将id ='5'更改为'x5x'时,css可以工作了...现在,我只需要更改计分子例程即可删除x!再次感谢。
Ben A. Hilleli 2014年

Answers:


216

刚刚经过测试:1M个字符可在所有现代浏览器上使用:Chrome1,FF3,IE7,Konqueror3,Opera9,Safari3。

我怀疑更长的ID可能很难记住。


15
这个家伙已经完成了10个“百万”角色!stackoverflow.com/a/1496150/74585
马修·洛克

1
对不起。1M?一百万?
beliha

8
@phihag当我在多伦多学习CS时,讲师打趣说:“每个人当然都知道为什么1582年10月的公历中缺少10天”,我不得不问一位同事,他谦虚地看着我,说:由于采用了公历,所以,您从未上过小学吗?” 我没有 不在加拿大。我上了埃及的小学,然后学习了伊斯兰日历。SI前缀也一样:您可能会受益于西方教育,但我没有。但是,尽管如此,还是要感谢您的崇高态度。
beliha

2
@beliha可以肯定的是,至少在葡萄牙,我从未听说过1852年10月的公历缺少10天,我想我不是唯一的一个。我认为学校从来没有从我记忆中教过这一点,所以任何人期望每个人都知道这一点将是大胆的。
user7393973

1
@beliha我去了西方学校,甚至没有听说我们使用公历(至少不是这个名字),我们只是使用了标准日历术语。关于这10天的失落,我是从youtube中学到的。
Tinaira

15

对我来说,实际的限制是,在使用HTML / CSS的过程中,我可以将一个ID存储在脑海中的时间太长。

该限制通常在8到13个字符之间,具体取决于我工作了多长时间以及名称在元素上下文中是否有意义。


5
我还要补充一点,如果有必要,可以使用前缀扩展一个人的“内部缓冲区”。:-)
Ben Blank

12
这个问题仍然非常重要,因为在RIA中,ID通常是由代码生成的,并且为了唯一,可能会很长。例如:window_2_panel_12_group_6_label_2 _...
乔什(Josh)

3

有时我会得到很长的ID,但我会一致地命名它们以符合其确切目的。

例如...

<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之类的东西要容易得多,在这些地方您最终得到的ID是#doc,#bd,#yui-main等。


3
我经常做的就是为它们取个名字,所以先设置一个div id ='user',然后在其中分配三个div,即id ='user-stats',id ='user-inventory',id ='user-然后在用户统计信息中说我可能有5个div,id ='user-stats-strength',id ='user-stats-agility',id ='user-stats-defence',id ='user- stats-intellect',id ='user-stats-heath'等,我发现记住它们的ID非常有用,只要我保持命名约定,即-或_代表空格或camelCase。
Psytronic

2

如果这是一个学术性问题,那将非常有趣……但是就最佳实践而言,您不需要(也不想)将其扩展。如果您需要存储有关HTML元素的数据,最好将其放入DOM对象的属性中。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.