项目实现|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"
        />
相关推荐
廖松洋(Alina)12 小时前
07答案比对与反馈UI-鸿蒙PC端Electron开发
javascript·ui·华为·electron·开源·harmonyos·鸿蒙
风骏时光牛马12 小时前
Cube Sandbox部署问题及解决方法
前端
Bug-制造者12 小时前
深入理解 HTML5 Web Workers:提升网页性能的关键技术解析
前端·html·html5
nexustech12 小时前
JavaScript日期处理工具date-fns,累计36.5k Star
开发语言·javascript·其他·ecmascript
Sylvia33.12 小时前
足球数据API接入实战:从认证到实时比分推送的完整指南
java·开发语言·前端·c++·python
_小郑有点困了12 小时前
学习Python基础语法及使用
前端·python·学习
LPieces12 小时前
【LPieces-UI】01-从零开始搭建 Vue3 组件库
前端
学习使我快乐0112 小时前
AI时代下,前端如何破局
前端·人工智能
yingyima13 小时前
Unix 时间戳转换实战:一次差点毁掉项目的低级错误
前端
盼兮14 小时前
用AI编程从零搭建一个响应式数据看板
前端·人工智能·数据可视化