最近我遇到了一个问题,我想在所有浏览器中禁用自动完成功能 .
Chrome在设置中有一项新功能,您可以在其中添加卡号 . 并且要求也是禁用它 .
在所有浏览器中有效的方法是在表单级别执行此autocomplete = false .
但这不符合w3规则,他们强制要求autocomplete = off | on .
Can someone please explain to me why false works in all browsers?
甚至ie8,所有firefox,safari等 . 但是不符合要求 .
5 回答
你是对的 . 将自动填充属性设置为“关闭”不会在较新版本的Chrome中禁用Chrome自动填充功能 .
但是,您可以将自动填充设置为除“开”或“关”(“假”,“真”,“无填充”)以外的任何内容,它将禁用Chrome自动填充 .
这种行为可能是因为autocomplete属性需要“on”或“off”值,并且如果你给它别的东西则不会做任何事情 . 因此,如果你给它的东西不是那些值,自动填充会崩溃/什么都不做 .
使用当前版本的Chrome,已经发现将autocomplete属性设置为“off”实际上现在可以正常工作 .
另外,我发现只有在表单的每个
<input>
标记中设置autocomplete属性时,这才有效 .Chromium bug列表here对此歧义做出了回应 .
免责声明:Chrome版本47.0.2526.106(64位)中发现此情况属实
Chrome版本72.XX之后:
Chrome会在字段和表单级别忽略
autocomplete="off"
autocomplete="no-fill"
或autocomplete="randomText"
.我找到的唯一选择是通过欺骗Chrome来填充虚拟文本框和密码上的自动填充,然后从用户视图中隐藏它们 .
请记住,
style="display: hidden"
或style="visibility: hidden"
的旧方法也会被忽略 .固定:
因此,使用
height: 0px;overflow:hidden
创建一个DIV
,它仍将呈现HTML元素,但会将其隐藏在用户视图中 .示例代码:
只需在HTML表单中添加上面的div,它应该可以工作!
这对我来说每次都可靠 .
Note : I have invoked this LOC on modal show event.
使用 autocomplete="my-field-name" 而不是autocomplete = "off" . 要小心你所谓的,因为有些值仍然被识别为autocomplete = "country" . 我还发现使用占位符属性有助于一些棘手的场景 .
Example:
<input type="text" name="field1" autocomplete="my-field-name1" placeholder="Enter your name">
Chrome最近停止使用autocomplete = "off",因为他们认为它没有被开发人员过度使用,因为他们没有希望它自动完成 .
作为@camiblanch的补充回答
添加
autocomplete="off"
is not gonna cut it.将输入类型属性更改为
type="search"
.Google不会将自动填充应用于具有某种搜索类型的输入 .