为什么即使使用不同的输入名称Firefox也会自动完成?

16 html firefox autocomplete

或者Firefox如何确定密码/用户名的位置?

如果我更改输入元素的名称,ID,标题,类,Firefox会不断填写密码或电子邮件.

Raf*_*ael 31

如果我正确理解Firefox的源代码,浏览器首先会在表单中查找密码字段.如果表单包含3个以上的密码字段,则自动填充功能会忽略该表单.

找到1到3个密码字段后,浏览器会查找登录字段.浏览器从第一个密码字段开始执行向后搜索,并假定登录字段是该类型的第一个找到字段textemailurltelnumber.

下一步取决于我们在页面加载或提交表单时检查表单.如果我们在页面加载期间检查并且有一个登录字段和一个密码字段,则情况很简单,浏览器可以填写表单.

其他情况(表单提交或超过1个密码字段)执行一些"智能"逻辑来确定哪个密码字段包含新密码以及哪个旧密码可能更新存储的密码).如果您对详细信息感兴趣,请下载源代码并打开toolkit/components/passwordmgr/nsLoginManager.js文件.要检查的功能是_fillForm,_getFormFields_getPasswordFields.

总而言之,Firefox不需要任何ID,名称或类属性来猜测哪个字段是登录名或密码.它只依赖于表单字段的类型和顺序.

  • 这很烦人,d**n!有没有人有防止这种行为的解决方案?我有一个带密码字段的登录表单,移动文本输入(密码以前的兄弟)填充了当前用户的电子邮件地址`:/` (3认同)
  • 那是对的.还应该提到的是,这仅适用于原始HTML中的字段,而不适用于JS生成的内容. (2认同)

小智 6

我尝试了一个到目前为止工作的简单解决方案.创建2个隐藏字段,浏览器将自动填充这些字段.

<input type="text" style="display: none">
<input type="password" style="display: none">
Run Code Online (Sandbox Code Playgroud)


小智 5

看起来在登录名和密码输入之间使用禁用的输入文本可以很好地解决问题:

<input type="text" disabled="disabled" style="display:none">
Run Code Online (Sandbox Code Playgroud)