Chrome 63+会在输入类型密码和非唯一ID时抛出[DOM]错误

Arn*_*osh 15 html html5 dom google-chrome

从Chrome 63,引发以下错误:

[DOM]找到2个具有非唯一ID的元素#a :(更多信息:https://goo.gl/9p2vKq)

https://jsfiddle.net/arnabgh/jz186qxe/

<input type="password">
<input id="a">
<input id="a">
Run Code Online (Sandbox Code Playgroud)

从Chrome 63开始,使用输入类型密码时是否有任何特殊验证?

Bol*_*ock 21

就在这里; 这就是你看到那条消息的原因.但我怀疑这不是你真正要求的.

如果你的问题是,为什么 Chrome浏览器已经开始显示这个消息,我的猜测是,由于需要密码的形式倾向于传送敏感信息(即密码),在需要密码形式中的任何错误,应立即提请开发者的关注.在设计和实施密码表格时应该更加小心.

错误消息链接到的文档(我不能假设您已阅读,因为您在问题中未对其进行确认)有一个关于编写符合标准的HTML的小节,其中重新声明了唯一ID规则:

遵循HTML准则

Web浏览器的设计考虑了HTML规范,反对它可能会导致网页出现意外问题.这意味着:

元素id属性应该是唯一的:没有两个元素应该具有相同的元素id.

(为什么这个规则是唯一一个有人猜测的规则;看起来他们打算在将来增加更多规则,但是他们只用这一条规则推出一个文件并称之为好的,这仍然很奇怪.)

似乎没有办法禁用此消息,但由于它不会阻止页面工作超出重复ID的范围(并且它们也没有),如果您无法更正非您自己可以安全地忽略它.

  • @Alexander Goncharov:我很同情这种困境,但我不代表Google,Chrome团队或任何标准机构; 如果你想表达对这个决定的不同意见,请与他们一起讨论,不要[仅仅因为它不是你想要听到的而投下我的答案](https://en.wikipedia.org/wiki/Shooting_the_messenger).此外,我确实说过你可以忽略这个警告,因为它不会破坏你的页面,而不是重复的ID已经存在,所以如果你没有看到需要修复它们,你为什么要让警告打扰你呢许多? (6认同)
  • 有时很难观察唯一的 id。例如,评论小部件带有 id,绑定到 css 和 js。很快有人希望在一页上有两个注释小部件 - 程序员不想重写太多代码,只是为了遵循规范。由于过去十年浏览器忽略了 HTML 页面上的多个 id,80% 的大型网站在控制台中的某些页面上会出现此错误,这让人不寒而栗:每个人都期望 google 方便的工具,而不是游说标准。 (2认同)