当前位置: 首页 > 面试题库 >

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

马高谊
2023-03-14
问题内容

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


问题答案:

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$"


 类似资料:
  • 问题内容: 您如何判断浏览器是否自动填充了文本框?尤其是用户名和密码框可自动填充页面加载。 我的第一个问题是页面加载序列何时发生?是在document.ready之前还是之后? 其次,我该如何使用逻辑找出这种情况是否发生?它不是我想阻止这种情况发生,只是挂接到事件中。最好是这样的: 如果可能的话,我希望看到一个jsfiddle显示您的答案。 问题答案: 问题是自动填充由不同的浏览器处理。有些派遣变

  • 根据这个老线索: https://vaadin.com/forum/thread/18510843/textfield-browser-autofill 可以告诉浏览器自动填写表单。我可以通过设置“name”和“autocomplete”属性让浏览器填充值,但是浏览器似乎不记得输入到Vaadin表单中的新值。Chrome/Firefox何时会这样做似乎有一些限制(https://developer

  • 问题内容: 我一直在开发一个nodejs服务器,以便为我正在使用HTML5开发的新网站提供服务器端事件。 当我通过telnet到服务器时,它可以正常工作,向我发送所需的HTTP响应标头,然后再发送一系列事件,这些事件我目前每2或3秒生成一次,以证明其有效。 我尝试了最新版本的FireFox,Chrome和Opera,它们创建了EventSource对象并连接到nodejs服务器,但没有一个浏览器会

  • 问题内容: 我已经使用docker安装了Jenkins,尽管我已经跳过了手动设置。当我构建映像并运行它时(仍然有很多事情要做),我需要在浏览器中键入IP和端口以打开Jenkins仪表板。 我的问题是,我可以在运行该映像的泊坞窗中使用脚本自动执行构建的Jenkins应该在浏览器中打开的工作吗? 任何需要运行的命令,请对其进行注释 我试图通过命令打开浏览器,但最终出现错误。任何人都可以使用我的自动化工

  • When webpack-dev-server is running it will watch your files for changes. When that happens it rebundles your project and notifies browsers listening to refresh. To trigger this behavior you need to ch

  • 问题内容: 假设,我需要在特定的网站上执行一组过程,例如,填写一些表格,单击“提交”按钮,将数据发送回服务器,接收响应,再次基于响应执行一些操作,然后将数据发送回服务器网站的。我知道python中有一个webbrowser模块,但是我想这样做而不调用任何Web浏览器。它不必是一个纯脚本。 在python中有可用的模块可以帮助我做到这一点吗? 谢谢 问题答案: 您也可以看看机械化。它的意思是处理 “