最近我遇到了一个问题,我想在所有浏览器中禁用自动完成功能。
Chrome在设置中有一项新功能,您可以在其中添加卡号。并且要求也是禁用它。
在所有浏览器中有效的方法是在表单级别执行此autocomplete = false。
但这不符合w3规则,他们强制要求autocomplete = off | on。
有人可以向我解释为什么在所有浏览器中都有错误的作品?
甚至ie8,所有firefox,safari等。但是不符合要求。
你是对的。将自动填充属性设置为“关闭”不会在较新版本的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"
的旧方法也会被忽略。
固定:
因此,使用DIV
创建一个height: 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>
只需在HTML表单中添加上面的div,它应该可以工作!
$("#selector").attr("autocomplete", "randomString");
这对我来说每次都可靠。
注意:我在模态show事件中调用了这个LOC。
使用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 =“none”完全适用于angularjs和angular 7
自动完成其他关闭和错误工作的价值。
autoComplete="nope"
autoComplete="foo"
autoComplete="boo"
autoComplete="anythingGoesHere"
测试铬76并反应16.9.0
作为@camiblanch的补充回答
添加autocomplete="off"
is not gonna cut it.
将输入类型属性更改为type="search"
。
Google不会将自动填充应用于具有某种搜索类型的输入。