Chrome忽略所有自动填充/自动完成属性



我浏览了许多Stack Overflow线程,但没有适合我的解决方案。我想在网站上完全禁用浏览器自动填充/自动完成。

Chrome正在忽略我在密码字段上尝试的所有内容。

尝试过的常见事物:

autocomplete="off/false/disabled"
autofill="off/false/disabled"
autocomplete="new-password" shows suggest strong password option

为了防止在密码字段上自动填充,请在代码中的密码之前添加一个隐藏的输入字段,称其为USERNAME,并将其值设置为随机字符串,越长越好,这样当浏览器保存密码时,它会与您的随机用户名配对,并且可能永远不会再使用用户名,这样它就会被保存,但以后永远不会自动填充。如果你的表单还需要一个用户名字段,可以称之为其他字段,并在下面使用我的随机ID技巧,将代码放在表单的隐藏用户名字段之前。

至于其他表单字段的自动填充,这里有一个解决方案,保证每次都能可靠地工作。

正如你们大多数人所知,之前的所有尝试,如自动填充=关闭等,都被Chrome自动填充忽略了。谷歌令人恼火的功能不再有任何可靠的单行解决方案,但我发现了一个解决方案,就我所见,即使在未来,Chrome也无法绕过它,因为它涉及更改每次加载页面上的表单元素ID,并模糊用户显示的字段名。我的系统有三个步骤——请注意,您需要使用几行java脚本,但这可以放在脚本标记之间,并在页面加载后运行,例如$(document).ready(function(){ document.getElementById('cust_phone').id = myrandomstring;});

  1. 在显示给用户的键形式字段名称的字母之间添加不可见字符,例如,不要在客户电话号码输入字段旁边的div中使用"Phone",而是通过每隔几个字母插入不可见字符来分解文本来更改单词,例如P& zwnj;ho& zwnj;ne(没有空格,这些空格也包括在内,所以这个例子不会在这个页面上消失!(。这对用户来说是不可见的,但会在自动填充功能中隐藏触发词Phone。

  2. 加载html表单后,将所有输入字段的ID更改为一个随机字符串(当然,每个字段都不同(,并将这些随机ID存储在变量中。例如,如果您的电话号码字段上的原始ID是"cust_phone",则在页面加载时,添加document.getElementById(“cust_phone”).id = myrandomstring;,然后在稍后从该字段获取值时使用该随机字符串,例如$(‘input[id=’ + myrandomstring + ‘]’).val();

  3. 最后,删除代码中表单字段附近的所有注释,这些字段使用电话号码等单词,包括工具提示。

这样做,Chrome会将每个表单加载视为不同的新表单,并且无法匹配上次表单加载中输入的内容,因为字段ID每次都会更改。在提交表单之前,它也无法确定每个字段的数据类型,然后这无关紧要,因为下次加载时,这些ID会有所不同,实际上,每次使用时都是原始表单。

您可以使用autocomplete="cc-csc"-这显然告诉Chrome这是一个信用卡CSC/CV字段,不允许自动完成。

最新更新