项目实现|google密码回填的问题

当使用了google左上角的"管理您的密码"的功能,在遇到el-inpuit+type="password"时候,会出现密码的回填

js 复制代码
    <el-form-item label="密码" required prop="password">
        <el-input type="password" v-model="formData.password"></el-input>
    </el-form-item>

这个问题的根本原因是Google浏览器如果检测到你的代码中有text的input和password的input前后连接出现,他就会给你进行自动填充。

解决方案:

网上给了很多,我先挨着试试

  1. 设置autocomplete="off"(没有任何效果,依然自动填充)

  2. autocomplete="new-password" (不会自动填充,但是会出现记住密码的列表)

  3. 使用css的解决方案(但是这个属性很多浏览器都不兼容的,不兼容的浏览器就展示明文了)

    js 复制代码
    -webkit-text-security 指定要使用的形状来代替文字的显示。
    none 无。
    circle 圆圈。
    disc 圆形。
    square 正方形。
    js 复制代码
       // type="text"
       <el-input type="text" v-model="formData.password" class="no-autofill-pwd"></el-input>
       // css 
      .no-autofill-pwd {
        ::v-deep .el-input__inner {
            -webkit-text-security: disc !important;
        }
    }
  4. 利用google检测的原理,在前后连接的input加不显示的input (不会自动填充,但是会出现记住密码的列表)

    js 复制代码
            <el-form-item label="姓名" required prop="name">
                <el-input v-model="formData.name"></el-input>
            </el-form-item>
            <input type="text" name="text" style="position: absolute;left: -10000px;">
            <input type="password" name="password" style="position: absolute;left: -10000px;">
            <el-form-item label="密码" required prop="password">
                <el-input type="password" v-model="formData.password"></el-input>
            </el-form-item>
  5. 利用readonly属性(不会自动填充,但是会出现记住密码的列表)

    这种方案可以部分处理这个问题,为什么说部分处理,因为我发现点击输入框两下,还是会出现密码列表

    js 复制代码
            <el-form-item label="密码" required prop="password">
                <el-input
                    type="password"
                    v-model="formData.password"
                    :readonly="readonly"
                    @blur="readonly = true"
                    @click.native="readonly = false"
                ></el-input>
            </el-form-item>
            // data中设置readonly为true
            readonly: true,
  6. 通过失去焦点,获取焦点来控制(和使用readonly原理一样,出现的bug也一样)

    js 复制代码
        <el-input
            :type="inputType"
            @focus="this.inputType = 'password'"
            @blur="this.inputType = 'text'"
            autocomplete="new-password"
        />
相关推荐
国服第二切图仔8 分钟前
DevUI Design中后台产品开源前端解决方案之Carousel 走马灯组件使用指南
前端·开源
无限大615 分钟前
为什么浏览器能看懂网页代码?——从HTML到渲染引擎的奇幻之旅
前端
福尔摩斯张17 分钟前
Linux信号捕捉特性详解:从基础到高级实践(超详细)
linux·运维·服务器·c语言·前端·驱动开发·microsoft
2401_8603195219 分钟前
DevUI组件库实战:从入门到企业级应用的深度探索 ,如何快速安装DevUI
前端·前端框架
计算机毕设VX:Fegn089530 分钟前
计算机毕业设计|基于springboot + vue服装商城系统(源码+数据库+文档)
数据库·vue.js·spring boot·课程设计
cc蒲公英41 分钟前
javascript有哪些内置对象
java·前端·javascript
zhangwenwu的前端小站1 小时前
vue 对接 Dify 官方 SSE 流式响应
前端·javascript·vue.js
王林不想说话1 小时前
受控/非受控组件分析
前端·react.js·typescript
_杨瀚博1 小时前
VUE中使用AXIOS包装API代理
前端
张有志1 小时前
基于 Body 滚动的虚拟滚动组件技术实现
前端·react.js