浏览器自动填充
1、问题:在一个项目里发现,当浏览器里面存在form,然后里面有input的type为password时,就会触发浏览器自动填充,并把上一个type为text的input当成账号填充
2、原因:就是浏览器自动填充惹的祸,而且不同浏览器的自动填充规则不同,如360是根据form、name和password来填充,谷歌是根据form、password
3、解决:可以根据浏览器触发的方法来分几种思路
3-1、设置autocomplete属性
可以给form和input设置autocomplete="off"来禁用表单的自动选填,但是在谷歌浏览器设置后点击input,发现对已经记录下来的密码账号无效,还是会弹出来
而设置autocomplete="new-password"后生效,但是只有第一次点击才生效之后就没有效果了,还是会弹出来,适用于登录的页面
3-2、通过设置只读属性readonly,在readonly=true时,浏览器的自动填充会暂时失效,缺点就是连续点击两次还是会弹出来
.vue html
<el-input v-model="addEditForm.initPwd" readonly name="initPwd" @focus="focusPassword($event)" @blur="blurPassword($event)" autocomplete="new-password" type="password" show-password></el-input>
js
focusPassword(e){ setTimeout(()=>{ e.target.removeAttribute('readonly') },0) }, blurPassword(e){ e.target.removeAttribute('readonly') setTimeout(()=>{ e.target.setAttribute('readonly', true) },0) },
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通