禁用Chrome自动填充

我一直在用几种形式的Chrome自动填充行为遇到问题。

表单中的字段都有非常普通和准确的名称,例如“email”,“name”或“password”,并且它们也具有autocomplete="off"集。

自动填充标志已成功禁用自动填充行为,其中在您开始输入时出现值的下拉列表,但未更改Chrome自动填充字段的值。

这种行为是可以的,除了chrome不正确地填充输入,例如用电子邮件地址填充电话输入。 客户对此抱怨,因此经过验证发生在多种情况下,而不是像我在本地机器上完成的某些结果那样。

我能想到的唯一的当前解决方案是动态生成自定义输入名称,然后在后端提取值,但这似乎是一个相当不合理的解决此问题的方法。 是否有任何标签或怪异改变了可用于解决此问题的自动填充行为?


对于新的Chrome版本,您可以在自己的密码字段中输入autocomplete="new-password" ,就是这样。 我检查过它,工作正常。

在本次讨论中得到了Chrome开发者的建议:https://bugs.chromium.org/p/chromium/issues/detail?id = 370363#c7

PS不要忘记使用不同字段的唯一名称来防止自动填充。


我刚刚发现,如果您有一个记住用户名和密码的网站,当前版本的Chrome会自动填充您的用户名/电子邮件地址到任何type=password字段之前的字段。 它并不关心该字段被称为 - 只是假设在密码将成为您的用户名之前的字段。

旧解决方案

只需使用<form autocomplete="off"> ,它可以防止预先填写密码,以及基于浏览器可能会做出的假设(常常是错误的)的任何启发式填充字段。 与使用<input autocomplete="off">相反,它似乎被密码自动填充忽略(在Chrome中,Firefox确实服从它)。

更新解决方案

Chrome现在忽略<form autocomplete="off"> 。 因此,我原来的解决方法(我已删除)现在是所有的愤怒。

只需创建几个字段,并用“display:none”隐藏它们。 例:

<!-- fake fields are a workaround for chrome autofill getting the wrong fields -->
<input style="display:none" type="text" name="fakeusernameremembered"/>
<input style="display:none" type="password" name="fakepasswordremembered"/>

然后把你的真实领域放在下面。

记得在你的团队中添加评论或其他人会想知道你在做什么!

2016年3月更新

只用最新的Chrome进行测试 - 都很好。 这是一个相当古老的答案,但我想提一提,我们的团队多年来一直在数十个项目中使用它。 尽管下面有几条评论,它仍然很好。 没有可访问性的问题,因为这些字段是display:none它们没有得到重点。 正如我所提到的,你需要把它们放在你的真实领域之前。

如果您使用JavaScript来修改您的表单,您将需要额外的技巧。 在操纵表单时显示假字段,然后在一毫秒后再隐藏它们。

使用jQuery的示例代码(假设你给你的假字段一个类):

        $(".fake-autofill-fields").show();
        // some DOM manipulation/ajax here
        window.setTimeout(function () {
            $(".fake-autofill-fields").hide();
        },1);

经过数月和数月的斗争,我发现解决方案比您想象的要简单得多:

而不是autocomplete="off"使用autocomplete="false" ;)

就这么简单,它在谷歌Chrome浏览器中的魅力也是如此!

链接地址: http://www.djcxy.com/p/4497.html

上一篇: Disabling Chrome Autofill

下一篇: Disabled form inputs do not appear in the request