小编典典

如何在Google Chrome浏览器中触发自动填充?

html

我想知道是否存在某种特殊标记来启用特定表单的Chrome自动填充功能。我只发现了有关如何禁用它的问题,但是我想知道是否可以在html代码中添加某种标记,以便告诉浏览器“这是地址的输入”或“这是邮政编码”字段”以正确填写(假设用户激活了此功能)。


阅读 806

收藏
2020-05-10

共1个答案

小编典典

2017年更新: _看起来凯蒂(Katie)的答案比我的拥有更多最新信息。
未来的读者:请对她的回答投赞成票。

这是一个很大的问题,令人惊讶地难以获得其文档。实际上,在很多情况下,您会发现Chrome自动填充功能“可以正常使用”。例如,以下html片段生成了一种形式,至少对我来说(Chrome
v。18),该形式会在单击第一个字段后自动填写:

<!DOCTYPE html>
<html>
<body>    
<form method="post">
  First name:<input type="text" name="fname" /><br />
  Last name: <input type="text" name="lname" /><br />
  E-mail: <input type="text" name="email" /><br />
  Phone: <input type="text" name="phone" /><br />
  Address: <input type="text" name="address" /><br />
</form>
</body>
</html>

但是,此答案并不令人满意,因为它使解决方案处于“魔术”领域。深入研究后,我了解到Chrome(以及其他支持自动填充功能的浏览器)主要依靠上下文线索来确定应填充到表单元素中的数据类型。此类上下文线索的示例包括name输入元素的,元素周围的文本以及任何占位符文本。

但是,最近,Chrome小组承认这不是一个令人满意的解决方案,因此他们开始要求对此进行标准化。Google网站站长小组的一篇非常有用的文章最近讨论了此问题,并解释了:

不幸的是,到目前为止,网站管理员很难确保Chrome和其他表单填写提供商可以正确解析其表单。存在一些标准。但是它们给网站的实施带来了沉重的负担,因此在实践中很少使用它们。

(他们指的“标准”是上述Avalanchis答复中提到的规范的最新版本。)

Google帖子继续描述了他们提出的解决方案(该帖子的评论中对此提出了严重批评)。他们建议为此目的使用新属性:

只需将属性添加到输入元素,例如,电子邮件地址字段可能如下所示:

<input type=”text” name=”field1” x-autocompletetype=”email” />


x-代表“实验性”的地方,如果&成为标准,则将被删除。阅读该帖子以获取更多详细信息,或者,如果您想进一步研究,可以在whatwg
Wiki上
找到对该建议的更完整说明。


更新: 正如这些有深刻见解的答案所指出的,Chrome用来识别/识别公共字段的所有正则表达式都可以在中找到autofill_regex_constants.cc.utf8。因此,要回答原始问题,只需确保您的html字段的名称与这些表达式匹配即可。一些示例包括:

  • 名字: "first.*name|initials|fname|first$"
  • 姓: "last.*name|lname|surname|last$|secondname|family.*name"
  • 电子邮件: "e.?mail"
  • 地址第一行): "address.*line|address1|addr1|street"
  • 邮政编码: "zip|postal|post.*code|pcode|^1z$"
2020-05-10