项目实现|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"
        />
相关推荐
FogLetter几秒前
节流(Throttle):给频繁触发的事件装上"冷却时间"
前端·javascript
小公主3 分钟前
彻底搞懂 Event Loop!这篇文章帮你一次性吃透宏任务、微任务、执行顺序
前端·javascript
xiaominlaopodaren6 分钟前
爱心动画的数学之美:从心形曲线到粒子系统
前端
AI悦创Python辅导23 分钟前
如何挑选适合项目场景的数据分析工具?
前端
用户92724725021926 分钟前
新闻自动采集并通过API发布到博客
前端·后端
清风920029 分钟前
Logback——日志技术(基础)
java·前端·logback
EndingCoder29 分钟前
排序算法与前端交互优化
开发语言·前端·javascript·算法·排序算法·交互
晓131331 分钟前
JavaScript加强篇——第五章 DOM节点(加强)与BOM
java·开发语言·javascript
三月的一天1 小时前
在 React Three Fiber 中实现 3D 模型点击扩散波效果
前端·react.js·前端框架
爱敲代码的小冰1 小时前
npm 切换 node 版本 和npm的源
前端·npm·node.js