登录页面有多个文本框、密码框组合,回填浏览器保存的登录密码时,密码填充位置错误

524 阅读2分钟

一、问题说明

如下图,系统登录页面有三个tab切换,每个tab切换里都有input输入框的type为text和password的组合,当登录的tab页输入账号密码保存到浏览器后,再次登录使用浏览器保存的密码时,密码同时回填到注册和试用的tab页。

1689042339354.jpg 1689039369301.jpg 1689043264085.jpg

二、问题原因

浏览器保存密码的机制为检索页面代码中type为password的input,保存此input及与此input相邻的上一个type为text的input的值,将两个input值作为一个账号、密码的组合,保存到浏览器。登录页面有三个text、password组合,那浏览器回填时,就会将账号密码同时填到这三个组合中,造成多余回填。

三、解决办法

网上找了好多解决办法,都没成功解决,最后综合各种解决办法,找到了实现方案,如下:

为使账号密码只回填到登录tab页,不对注册和试用tab页影响,应在注册和试用tab页打破浏览器的这种保存机制。 在密码框前添加空input标签,使浏览器认定这是一组账号密码组合,以消除对手机号码输入框的影响,但是空的input框不显示,使用定位的方法将其隐藏。 然后将密码输入框的type动态绑定inputType,设置初始值为text,当密码输入框获取焦点,再将inputType值改为password,避免浏览器自动保存机制的影响。

1689043425511.jpg

大家看不明白的随时问我,方法有点绕,而且也需要实践,实现思路就是避开浏览器保存账号密码的机制,希望能帮助到大家!