我已经浏览了许多堆栈溢出线程,但没有解决方案对我有效。我想完全禁用网站上浏览器的自动填充/自动完成功能。
Chrome忽略了我在密码字段上尝试的所有操作。
尝试过的常见事情:
autocomplete="off/false/disabled"
autofill="off/false/disabled"
autocomplete="new-password" shows suggest strong password option
我已经浏览了许多堆栈溢出线程,但没有解决方案对我有效。我想完全禁用网站上浏览器的自动填充/自动完成功能。
Chrome忽略了我在密码字段上尝试的所有操作。
尝试过的常见事情:
autocomplete="off/false/disabled"
autofill="off/false/disabled"
autocomplete="new-password" shows suggest strong password option
1条答案
按热度按时间5f0d552i1#
为了防止密码字段自动填充,可以在代码中的密码前添加一个隐藏的输入字段,将其命名为USERNAME,并将其值设置为随机字符串,越长越好,这样当浏览器保存密码时,它将与您的随机用户名配对,并且可能不会再次使用,因此它将被保存,但将来不会自动填充。如果您还需要表单的用户名字段,叫它别的东西,并使用我下面的随机ID技巧,并把代码之前隐藏的用户名字段在您的表单。
至于其他表单域的自动填充,这里有一个保证每次都能可靠工作的解决方案。
正如你们大多数人所知,所有以前的尝试,如autofill=off等都被忽略的Chrome自动填充。不再有任何可靠的一行解决谷歌恼人的功能,但我已经找到了一个工作,就我所能看到的,即使在将来,Chrome也不能绕过它,因为它涉及到在每次页面加载时更改表单元素ID,并隐藏显示给用户的字段名称。我的系统有3个步骤-注意你需要使用几行java脚本,但是这可以放在脚本标签之间,并在页面加载后运行,例如
$(document).ready(function(){ document.getElementById('cust_phone').id = myrandomstring;});
1.在向用户显示的关键表单字段名称的字母之间添加不可见字符,例如,不要在客户电话号码输入字段旁边的div中使用“Phone”,而是通过每隔几个字母插入不可见字符来分解文本,从而更改单词,例如
P& zwnj;ho& zwnj;ne
(没有空格,这些都包括在内,所以这个例子不会消失在这个页面上!).这将是不可见的用户,但会隐藏触发字电话从自动填充功能.1.加载html表单后,将所有输入字段的ID更改为随机字符串(当然每个字段不同),并将这些随机ID存储在变量中。例如,如果电话号码字段的原始ID是“cust_phone”,则在页面加载时添加
document.getElementById(“cust_phone”).id = myrandomstring;
,然后在以后从该字段获取值时使用该随机字符串,例如$(‘input[id=’ + myrandomstring + ‘]’).val();
1.最后,删除表单字段附近代码中使用诸如电话号码(包括工具提示)等单词的所有注解。
这样做,Chrome会将每次加载的表单视为一个不同的新表单,并且无法匹配上一次加载的表单,因为字段ID每次都会改变。它也无法确定每个字段中的数据类型,直到表单提交,然后就不重要了,因为下次加载时这些ID将不同,实际上,每次使用时都是一个原始表单。