html – ID属性可以以冒号开头吗?

html – ID属性可以以冒号开头吗?,第1张

概述为纯粹的学术目的查看Gmail的来源,我遇到了这个. <input id=":3f4" name="attach" type="checkbox" value="13777be311c96bab_13777be311c96bab_0.1_-1" checked=""> 神奇的奇迹,大多数元素都有以下开头的ID: 我一直认为ID属性的定义是这样的. ID an 为纯粹的学术目的查看Gmail的来源,我遇到了这个.

<input ID=":3f4"     name="attach"     type="checkBox"     value="13777be311c96bab_13777be311c96bab_0.1_-1"     checked="">

神奇的奇迹,大多数元素都有以下开头的ID:
我一直认为ID属性的定义是这样的.

ID and name tokens must begin with a letter ([A-Za-z]) and may be
followed by any number of letters,digits ([0-9]),hyphens (“-“),
underscores (“_”),colons (“:”),and periods (“.”).

或者我错过了什么新东西?我的意思是用HTML5可以吗?

解决方法 容许

最新的工作草案允许它:http://www.w3.org/TR/html-markup/datatypes.html#common.data.id

Any string,with the following restrictions:
– must be at least one character long
– must not contain any space characters

该规范还指出:

PrevIoUs versions of HTML placed greater restrictions on the content
of ID values (for example,they dID not permit ID values to begin with
a number).

您引用的定义出现在HTML 4 spec中.

有一个widely-visited SO thread访问了一些关于ID的注意事项(主要是从HTML 4的角度来看).

合理

在考虑了更多之后,我意识到这里有两个好问题:

为什么规范允许这个?

可以包含任何字符的ID都有可能破坏各种事物,例如css选择器(如果没有使用正确的转义),Sizzle(jquery使用)模式匹配,服务器ID(例如ASP.Net Web表单使用)和从模型属性生成的ID(例如可以使用MVC模式生成的ID).

抛开所有这些事情,我认为HTML 5的一个关键目标是不创建非绝对必要的限制(这是xhtml的缺点).仅仅因为没有确定某个目的但并不意味着它不会在未来.

尽管有许多东西不起作用,但某些东西工作正常,例如document.getElementByID(“:foo”)

http://jsfiddle.net/Xjast/

与大多数事情一样,开发人员应该了解他或她正在使用的工具.

为什么Google会这样做?

显然,除非您是Gmail小组的成员,否则无法做出最终答案.但是,Google大大减少并混淆了他们的代码;他们还管理着大量的脚本,这表明定义明确的惯例.

这是另一个想法.如果Google正在利用css选择器需要转义某些字符这一事实会怎样?这将大大减少电子邮件消息中包含的内容的意外重新设置.

总结

以上是内存溢出为你收集整理的html – ID属性可以以冒号开头吗?全部内容,希望文章能够帮你解决html – ID属性可以以冒号开头吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1084009.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存