Chrome 自动填充不正确的数据类型

Posted

技术标签:

【中文标题】Chrome 自动填充不正确的数据类型【英文标题】:Chrome autofills incorrect data type 【发布时间】:2015-12-27 11:08:54 【问题描述】:

在我的网站上,登录页面上有两个字段:一个用于电子邮件,一个用于密码。如果我已经注册、退出并返回登录,Chrome 会将用户名自动填充到电子邮件文本框中,而不是电子邮件地址。

<div class="inputs">
      <%= devise_error_messages! %>
      <label id="maincontent" class="control-label sr-hidden" for="email">Email Address</label>
      <input id="email-input" name="email" type="email" required='true' autocompletetype='email' autofocus='true' placeholder='Enter your email address...'/>      
      <label class="control-label sr-hidden" for="password">Password</label>
      <%= f.password_field :password, :required => false, :placeholder => "Enter your password...", :id => "password" %>
</div>

此外,如果我完全删除密码字段,则电子邮件字段中根本不会发生自动填充,它会留空。但是,如果您单击该字段,则会弹出下拉自动完成菜单。

编辑[已解决]: 我在注册页面上切换了姓名和电子邮件字段

chrome 将“默认登录凭据”状态分配给注册页面上密码正上方的任何字段

它会自动调用该凭据以自动填充登录页面上密码字段上方的字段

它需要一个人去设置>密码和表格>管理密码并删除错误的默认值,然后在更正的表格上再次登录/注册

【问题讨论】:

你想发生什么?您是否希望电子邮件和用户名字段自动完成(正确)?只是带有电子邮件地址的电子邮件字段?等 电子邮件字段应预先填充之前提供的电子邮件...目前填充的是姓名,而不是电子邮件。 您可以尝试在用户名字段中添加autocomplete=off,这样就不会发生冲突 但登录页面上没有用户名字段。您的意思是在注册页面上的相应表单中添加 autocomplete=off 吗? 值得一试。 chrome 显然混淆了这两个领域。其他一些事情将确保用户名注册被正确命名(它不会被name='email'意外复制),并删除autocompletetype。我本来希望这能真正解决你的问题,但你也许可以尝试删除它 【参考方案1】:

在注册页面上切换了姓名和电子邮件字段,修复它。

chrome 将“默认登录凭据”状态分配给注册页面上密码正上方的任何字段

它会自动调用该凭据以自动填充登录页面上密码字段上方的字段

它需要一个人去设置>密码和表格>管理密码并删除错误的默认值,然后在更正的表格上再次登录/注册

【讨论】:

【参考方案2】:

是的,this answer 还确认了在 type="password" 输入之前直接自动填充电子邮件或登录文本输入的行为。你也可以在输入密码之前做这样的事情来阻止它:

<input name="block-autocomplete" style="opacity: 0.0; width: 1px; height: 1px; position: absolute;" tabindex="-1">

【讨论】:

【参考方案3】:

您可以通过向输入标签添加自动完成属性来控制自动填充的内容,如下所述: https://developers.google.com/web/fundamentals/design-and-ux/input/forms/#use_metadata_to_enable_auto-complete

例如

<input type="text" autocomplete="name">

会告诉 Chrome 自动输入名称。在上面的链接中查看整个列表

【讨论】:

以上是关于Chrome 自动填充不正确的数据类型的主要内容,如果未能解决你的问题,请参考以下文章

Chrome浏览器无法自动填充表单

哪个高手能说一下chrome的“表单填充”有啥用

Chrome 自动填充功能不适用于特定页面

如何禁用 chrome / jquery 的自动完成和自动填充

如何使用 Chrome 浏览器在 ASP.Net 中停止将输入类型自动填充为密码

什么会导致 Chrome 自动填充功能停止工作?