use*_*451 8 forms google-chrome autocomplete
关于这一点的帖子很少。您花费数小时来仔细研究每个答案,测试,阅读评论,以发现没有解决方案。您在2019年做了什么工作,Chrome 76正常运行?
gas*_*man 13
TL,DR:似乎没有autocomplete可可靠关闭所有自动完成下拉菜单的属性设置。但是,导致这种情况的情况非常复杂,值得记录,以期希望清除大量相互矛盾的建议...
当前版本(76.0.3809.132)的Chrome中存在两种不同的机制,我们将其称为自动填充和自动完成(不一定是其官方名称):
自动填充功能会尝试使用浏览器设置中存储的地址信息填写表单。可以通过下拉菜单底部的“管理地址...”选项(或类似名称)进行标识。Chrome开发人员的故意决定,此功能不适用autocomplete="off"或autocomplete="false"。
在概述该决定的声明中,zkoch提供了以下解决方法:
如果您确实要禁用自动填充功能,那么我们的建议是利用autocomplete属性为您的字段赋予有效的语义含义。如果遇到无法识别的自动填充属性,则不会尝试填充它。
例如,如果您不希望Chrome自动填充CRM的CRM工具中的地址输入字段,则可以为其赋予语义含义,使其与您要的内容相对应:例如,autocomplete =“ new-user -街道地址”。如果Chrome遇到这种情况,它将不会尝试自动填充该字段。
这是尝试解决方案的基础,例如autocomplete="nope"; 自动填充机制将跳过所有autocomplete无法识别的属性值的字段。
记录下来执行该决定的代码:https : //chromium.googlesource.com/chromium/src/+/refs/tags/78.0.3903.1/components/autofill/core/browser/form_structure.cc#1218
自动完成功能提供了此表单字段中先前提交的值的下拉列表。此下拉菜单没有“管理地址...”选项。自动完成功能会尊重autocomplete="off"or autocomplete="false"属性;其他任何值(包括“”之类的“无效”值autocomplete="nope")将保持启用状态。
自动补全下拉菜单无法通过autocomplete下拉菜单关闭;禁用“自动填充”的任何值都会使“自动填充”保持启用状态,反之亦然。任何认为自己找到了可行解决方案的人(无论是通过autocompleteCSS hack还是其他方法)都应检查其是否适用于两种机制。
不幸的是,要说服Chrome开发人员这已经被打破,将是艰巨的努力。Autofill的开发人员显然认为,他们autocomplete="off"在为Web开发人员提供替代方案时做出了明智的决断决定。这种替代方法被打破了,原因是比他们意识到的更微妙的原因。从他们的角度来看,由此引发的抗议呼啸来自心怀不满的开发人员,他们懒得跳过一个小箍圈并更新其autocomplete="off"属性。在所有杂音中,消息没有通过:箍已损坏。
截至 2019 年 12 月 6 日,使用 Chrome v78.x
像autocomplete="off"现在这样的标准方法对于最新版本的 Chrome 几乎可以正常工作。除了这个:
这东西真是太糟糕了,因为它不仅不尊重标准/非标准值,"nope"而且实际上无法将其关闭,除非输入甚至与“地址”术语没有远程关系。
我们究竟如何在不使用地址相关词的情况下显示与地址相关的输入字段?这是有史以来最简单的解决方案。
确保输入元素的name并且id不包含任何与地址相关的术语。像id="input-street"或name="destination-zip"这样的属性是大禁忌。
这是最关键的部分:如果您需要为文本输入或其任何相邻元素使用任何人类可读的地址术语,请在所述术语的字母之间插入“不可见”的零宽度连接符 ( ‌)。这样,我们就可以骗过 Chrome 的 AI 能力,绕过它严格的自动补全行为。
一些工作示例:
<input id="input-stret" placeholder="S‌treet" autocomplete="off">
<form action="/action_page.php">
<label for="product-addres">Product A‌ddress</label>
<input name="addres" id="product-addres" autocomplete="off">
</form>
Run Code Online (Sandbox Code Playgroud)
你去吧。不再有烦人的地址管理菜单,也没有任何常规的自动完成菜单。