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

问题描述 投票:0回答:1

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

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

常见的尝试:

autocomplete="off/false/disabled"
autofill="off/false/disabled"

autocomplete="new-password" shows suggest strong password option
html google-chrome autocomplete passwords autofill
1个回答
0
投票

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

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

正如你们大多数人所知,Chrome 自动填充将忽略所有先前的尝试,如 autofill=off 等。不再有任何可靠的单线解决方案来解决谷歌的烦人功能,但据我所知,我找到了一个解决方法,即使在未来也不能被 Chrome 绕过,因为它涉及更改表单元素 ID每个页面加载并模糊显示用户的字段名称。 我的系统有 3 个步骤——请注意,您需要使用几行 java 脚本,但这可以放在脚本标签之间并在页面加载后运行,例如。

$(document).ready(function(){ document.getElementById('cust_phone').id = myrandomstring;});

  1. 在显示给用户的关键表单字段名称的字母之间添加不可见字符,例如。不要在客户电话号码输入字段旁边的 div 中使用“电话”,而是通过每隔几个字母插入不可见字符来分解文本来更改单词,例如。

    P& zwnj;ho& zwnj;ne
    (没有空格,所以这个例子不会在这个页面上消失!)。这对用户来说是不可见的,但会从自动填充功能中隐藏触发词电话。

  2. 加载 html 表单后,将所有输入字段的 ID 更改为随机字符串(当然每个字段都不同)并将这些随机 ID 存储在变量中。例如,如果您的电话号码字段上的原始 ID 是“cust_phone”,则在页面加载时添加

    document.getElementById(“cust_phone”).id = myrandomstring;
    ,然后在稍后从该字段获取值时使用该随机字符串,例如。
    $(‘input[id=’ + myrandomstring + ‘]’).val();

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

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

© www.soinside.com 2019 - 2024. All rights reserved.