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 / jquery 的自动完成和自动填充