浏览器自动填充

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)
        },
复制代码

 

posted @   Pavetr  阅读(1084)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示