Raf*_*ael 31
如果我正确理解Firefox的源代码,浏览器首先会在表单中查找密码字段.如果表单包含3个以上的密码字段,则自动填充功能会忽略该表单.
找到1到3个密码字段后,浏览器会查找登录字段.浏览器从第一个密码字段开始执行向后搜索,并假定登录字段是该类型的第一个找到字段text或email或url或tel或number.
下一步取决于我们在页面加载或提交表单时检查表单.如果我们在页面加载期间检查并且有一个登录字段和一个密码字段,则情况很简单,浏览器可以填写表单.
其他情况(表单提交或超过1个密码字段)执行一些"智能"逻辑来确定哪个密码字段包含新密码以及哪个旧密码可能更新存储的密码).如果您对详细信息感兴趣,请下载源代码并打开toolkit/components/passwordmgr/nsLoginManager.js文件.要检查的功能是_fillForm,_getFormFields和_getPasswordFields.
总而言之,Firefox不需要任何ID,名称或类属性来猜测哪个字段是登录名或密码.它只依赖于表单字段的类型和顺序.
小智 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)