Css 谷歌';s疯狂的ID和类命名约定
我只是在玩Firebug和编辑Gmail的CSS文件,我想编辑一个按钮,但该按钮的div ID是Css 谷歌';s疯狂的ID和类命名约定,css,gmail,Css,Gmail,我只是在玩Firebug和编辑Gmail的CSS文件,我想编辑一个按钮,但该按钮的div ID是:rj。我相当肯定CSS不允许冒号,尤其是以ID和类名开头。我猜这是一种高级的诡计。我不确定每个用户是否都是这样,但是FWIW,ID是页面顶部的“搜索邮件”按钮的ID 有人知道他们在做什么以及他们是如何做的吗?谷歌只有一个浏览器,所以如果他们想创建一个像firefox一样跨浏览器兼容的web应用程序,他们必须遵循与其他所有web开发人员相同的标准和规则。也就是说,大多数现代浏览器在解析html时都非常
:rj
。我相当肯定CSS不允许冒号,尤其是以ID和类名开头。我猜这是一种高级的诡计。我不确定每个用户是否都是这样,但是FWIW,ID是页面顶部的“搜索邮件”按钮的ID
有人知道他们在做什么以及他们是如何做的吗?谷歌只有一个浏览器,所以如果他们想创建一个像firefox一样跨浏览器兼容的web应用程序,他们必须遵循与其他所有web开发人员相同的标准和规则。也就是说,大多数现代浏览器在解析html时都非常宽松,因此,虽然您的示例不是正确的html,并且可能无法验证,但不会产生明显的负面影响 id过去对所允许的内容非常严格,对类来说就不那么严格了。然而,HTML5减少了对ID值的许多限制 以下是一篇关于HTML5中允许ID和类的内容的文章: 这足以让你头疼 编辑:
为了回答您关于谷歌为什么使用看似随机的ID的更多问题,我相信他们使用的ID和类对程序员来说是非常有意义的。是的,我也有同样的想法,但我找不到理由来证明这一点。为什么他们愿意让一些潜在的浏览器不兼容?这是一个值得权衡的问题。HTML标准允许id值中使用冒号,但id的第一个字符必须是字母。一个更好的问题可能是他们为什么要这样做?毕竟,谷歌以其干净且符合标准的代码而闻名(不仅仅是HTML,我还听说了他们的C++的优秀之处),所以他们忽视标准肯定有一个很好的理由。很可能所有这些疯狂的名字都是由工具生成的,而不是开发人员实际使用的。谷歌也以优化而闻名,从数百万人下载的内容中删减一个字节可以真正节省成本。他们可能还选择了这些名称,使普通开发者难以访问这些元素,从而阻止自动化。例如,
document.getElementById(“:ri”)
不返回任何结果,并且在调用EvaluatePath(document,“//div[包含(@id,concat(“:”,“ri”)])”)
或任何其他选择器时,在此处使用XPATH代码:,也不返回任何结果。