什么会导致 Chrome 自动填充功能停止工作?
Posted
技术标签:
【中文标题】什么会导致 Chrome 自动填充功能停止工作?【英文标题】:What would cause Chrome autofill to stop working? 【发布时间】:2011-08-30 19:10:25 【问题描述】:我们正在开发一个使用 html5 的新网站。除了 LESS 样式表和 Facebook 标签之外,所有内容都经过验证。但是,Chrome 无法正确自动填充。如果我在名字字段中输入“chr”,我会在其下方看到标准的自动填充下拉菜单,但突出显示、单击或以其他方式选择自动填充选项并不能按应有的方式完成表单。自动填充下拉菜单只是消失了。
我猜我的 HTML 中有一些东西混淆了自动填充代码,但我似乎无法在网络上找到任何关于 Chrome 的自动填充实现以及当它不起作用时要寻找的东西的信息。
编辑:我知道自动填充可以正常工作,因为它可以在其他网站上运行,甚至是我们开发的其他网站。它必须是特定于本网站 HTML 的内容。
【问题讨论】:
请提供一些 HTML + JS 代码示例。我有一种预感,假设您首先使用的是 FORM 标记,那么您有一些阻止表单提交操作的 js 代码。 以下是您的问题的潜在解决方案:***.com/questions/16445463/… 【参考方案1】:如果表单是异步提交的,Chrome 将不会保存密码或自动完成数据。例如,如果您提交以下表单,Chrome 会提示您保存密码:
<form action="/signin">
<input type="text" name="email" />
<input type="password" name="password" />
<button type="submit">Sign In</button>
</form>
但是,如果绑定submit
事件并覆盖默认行为,则不会出现提示,也不会保存自动完成数据:
$(function()
$('form').submit(function(e)
e.preventDefault();
$.post($(this).attr('action'), $(this).serialize());
);
);
在 20.0 中测试
【讨论】:
考虑到保存的用户数据已经存在并且它应该在提交表单之前提供填写表单,这一切都无关紧要。 我知道这是一年之后的事了。我遇到了这个问题,因为我异步提交了我的表单。几个小时前我做了this question。我想知道您是否对这是否是解决这种行为的好方法有意见。它似乎在 Chrome 中工作。 嗨,Christopher,我正在通过$('form').submit()
提交我的表格,我希望自动完成功能能够正常工作。但是,自动完成仅适用,如果表单通过提交按钮button type="submit"
提交,任何想法模拟按钮提交以便 Chrome 自动完成?谢谢【参考方案2】:
Chrome 似乎只启用了带有 POST 方法的表单的自动填充功能。这可能是最新版本的安全更新。
如果您这样做,自动填充将起作用:
<form id="myForm" action="?go" method="post">
如果你省略方法或者设置为 get ,它将不起作用:
<form id="myForm" action="?go" method="get">
<form id="myForm" action="?go">
【讨论】:
在我的例子中,我只需要将元素包装在<form>
标记中(无需操作或方法)即可使地址自动完成工作。【参考方案3】:
我知道在 HTML 中阻止它的唯一方法是在输入上设置:autocomplete="off"。
我知道下拉菜单有时不适用于自动填充,但不适用于文本框。
【讨论】:
【参考方案4】:我刚刚与这个问题斗争了一段时间,我发现一个“名称”属性与 像“email-2”这样的破折号会导致 Chrome 不自动完成该字段。 就我而言,我已将其更改为 email2,现在它可以工作了。 它只影响“name”属性,而“id”属性没有任何区别。
我希望这可以帮助某人节省处理这种愚蠢错误的时间。
来自阿根廷的问候!
【讨论】:
【参考方案5】:抱歉,我不能给你一个明确的答案,但我会先从页面中删除除输入字段之外的所有内容。如果它有效,那么我将开始“二进制搜索” - 删除原始布局的一半并查看它是否有效,如果它不是 - 删除剩下的另一半等等,直到找到问题行。
同样适用于 css、js 等。这是一种非常有效的错误搜索方式(对于 1024 行代码,您只需 10 步即可找到确切的问题行)。
【讨论】:
【参考方案6】:只有那些需要自动填充的元素应该在表单中。否则自动填充将不起作用。只将那些文本框放在表单下。如果你已经有涉及其他元素的表单,请将它们分开并在文本框周围放置新的表单标签需要自动填充,里面没有其他东西。
【讨论】:
我在许多网站上发现的许多带有自动完成功能的表单都不是这种情况,我只自动完成表单的一部分以上是关于什么会导致 Chrome 自动填充功能停止工作?的主要内容,如果未能解决你的问题,请参考以下文章