自动完成关闭与错误?

Cro*_*004 46 html w3c google-chrome autocomplete

最近我遇到了一个问题,我想在所有浏览器中禁用自动完成功能.

Chrome在设置中有一项新功能,您可以在其中添加卡号.并且要求也是禁用它.

在所有浏览器中有效的方法是在表单级别执行此autocomplete = false.

但这不符合w3规则,他们强制要求autocomplete = off | on.

有人可以向我解释为什么在所有浏览器中都有错误的作品?

甚至ie8,所有firefox,safari等.但是不符合要求.

cam*_*nch 20

你是对的.将自动填充属性设置为"关闭"不会在较新版本的Chrome中禁用Chrome自动填充功能.

但是,您可以将自动填充设置为除"开"或"关"("假","真","无填充")以外的任何内容,它将禁用Chrome自动填充.

这种行为可能是因为autocomplete属性需要"on"或"off"值,并且如果你给它别的东西则不会做任何事情.因此,如果你给它的东西不是那些值,自动填充会崩溃/什么都不做.

使用当前版本的Chrome,已经发现将autocomplete属性设置为"off"实际上现在可以正常工作.

此外,我发现只有<input>在表单的每个标记中设置自动完成属性时,这才有效.

已经有这种模糊性在铬的bug列表的响应这里.

免责声明:Chrome版本47.0.2526.106(64位)中发现此情况属实

  • 不幸的是,这个解决方案不再适用了 (9认同)
  • 自动完成属性的值似乎不适用于 Chrome 62。Chrome 62 坚持自动完成输入,尽管有自动完成值。 (6认同)
  • 为了对所有输入标签禁用它,我使用了: jQuery("input").attr("autocomplete", Math.random()); (2认同)

Kis*_*war 7

$("#selector").attr("autocomplete", "randomString");  
Run Code Online (Sandbox Code Playgroud)

这对我来说每次都很可靠。

注意:我在模态显示事件上调用了这个 LOC。


Adh*_*der 7

Chrome版本72.XX之后:

Chrome 在字段和表单级别均忽略autocomplete="off" autocomplete="no-fill"autocomplete="randomText"同时忽略。

我发现的唯一选择是按照一种变通方法,通过欺骗Chrome浏览器在虚拟的文本框和密码上填充自动填充功能,然后从用户视图中隐藏它们。

记住带有style="display: hidden"或的旧方法style="visibility: hidden"也将被忽略。

固定:

因此,创建一个DIVheight: 0px;overflow:hidden它仍然会从用户的观点呈现HTML元素,但隐藏起来。

样例代码:

<div style="overflow: none; height: 0px;background: transparent;" data-description="dummyPanel for Chrome auto-fill issue">
        <input type="text" style="height:0;background: transparent; color: transparent;border: none;" data-description="dummyUsername"></input>
        <input type="password" style="height:0;background: transparent; color: transparent;border: none;" data-description="dummyPassword"></input>
</div>
Run Code Online (Sandbox Code Playgroud)

只需在HTML表单中添加上面的div,它就可以工作!

  • Chrome 几乎和 IE 一样令人讨厌。 (17认同)
  • 为什么Chrome工程师似乎认为他们比实际在Web上构建网站并不断寻找重新启用自动完成功能的人了解更多?傲慢自大。 (14认同)

小智 6

使用autocomplete =“ my-field-name”代替autocomplete =“ off”。请小心,因为有些值仍会被识别,例如autocomplete =“ country”。我还发现使用占位符属性在某些棘手的情况下会有所帮助。

例: <input type="text" name="field1" autocomplete="my-field-name1" placeholder="Enter your name">

Chrome最近停止使用autocomplete =“ off”,因为他们认为开发人员过度使用了autocomplete =“ off”,他们没有过多考虑表单是否应该自动完成。因此,他们淘汰了旧方法,并让我们使用一种新方法,以确保我们真的不希望它自动完成。

  • 没关系,找到了它:https://bugs.chromium.org/p/chromium/issues/detail?id=468153#c164 (2认同)

Raj*_*dar 6

除了 off 和 false 工作之外的自动完成值。

autoComplete="nope" autoComplete="foo" autoComplete="boo" autoComplete="anythingGoesHere"

在 chrome 76 上测试并反应 16.9.0

  • @JoyAcharya 这解决了我的 Chrome 自动填充功能问题。这应该是推荐的解决方案。 (2认同)

小智 6

如果有人阅读本文并且在为新用户禁用用户名和密码字段的自动完成功能时遇到困难,我发现设置 autocomplete="new-password" 在 Chrome 77 中有效。它还阻止了用户名字段自动完成。

参考:https : //html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill