这是 Chrome 81 上的自动填充错误吗?

这是 Chrome 81 上的自动填充错误吗?

在我的主计算机上,运行 Ubuntu 18.04 和 Chrome 78,此表单按我预期的方式工作 - 每个表单都可以独立填写。

form {
  border: solid 1px black; 
  padding: 1em; 
  display: inline-block; 
}

form input {
   display: block; 
}
<form>
  <label> name<input type = "text" name ="name" />   </label>
  <label> phone<input type = "text" name ="phone" /> </label>
  <label> email<input type = "text" name ="email" /> </label>
  <button type="submit"> submit</button>
</form>

<form>
  <label> name <input type = "text" name ="name"/> </label>
  <label> phone<input type = "text" name ="phone" /> </label>
  <label> email <input type = "text" name ="email"/> </label>
  <button type="submit"> submit</button>
</form>

CodePen

但是 - 在 Windows 机器上的 Chrome 81 上 - 选择第二个表单上的自动填充将导致第一个表单也被填充。

这是一个错误,还是正确的自动填充行为?

如果是这样,是否有记录此问题的错误跟踪器?

答案1

HTML 表单中命名的字段及其值由浏览器存储在用户的个人资料中,因此可以通过自动填充机制在其他表单中重复使用。然后,此网站和所有其他具有相同名称字段的网站将全局使用同名字段。

在 Chromium 文章中 表单自动填充 从 SQLite 数据库表的结构中可以看出这一点,该表将这些值存储为对,其中表列为: pair_id,名称,值,计数。从这里可以看出,原始网站和原始页面URL并没有出现在这里,并且没有任何重要性。

您已使用表单字段的标准名称,这些名称可以在各种标准中找到:姓名、电话、电子邮箱。某些浏览器甚至允许在配置文件定义中输入值,然后浏览器会自动填充使用这些标准字段名称的所有表单。浏览器会存储所有字段值,而不仅仅是那些具有众所周知名称的字段值。

您使用了两次相同的名称,浏览器会将其存储在您的配置文件中,以便再次使用。自动填充时,它会根据其内部算法(例如最后输入的或最常用的)仅使用您为同名字段输入的值之一。实际上,您已声明要使两种形式的字段中的值相同,浏览器会按要求自动填充相同的值。

您使用的字段名还有其他众所周知的变体。例如,除了姓名你使用的,存在 名称名字名称,代表名字、中间名和姓氏。

在 HTML5 中 形式标准 已扩展,添加了autocomplete标签属性,可以区分工作电话号码和家庭电话号码等。例如:

<p><label>Customer name: <input name="custname" required autocomplete="shipping name"></label></p>
<p><label>Telephone: <input type=tel name="custtel" autocomplete="shipping tel"></label></p>
<p><label>E-mail address: <input type=email name="custemail" autocomplete="shipping email"></label></p>

有用的参考资料:

相关内容