"本文介绍如何在Chrome浏览器中禁用输入框自动填充已记录的密码功能,特别是对于那些需要用户每次都手动输入密码的情况。这个方法在Chrome 84版本下仍然有效。" 在现代网络应用中,Chrome浏览器为了方便用户,会自动记录并填充用户在表单中输入过的密码。然而,在某些特定场景下,如金融交易、安全验证等,不允许密码自动填充,以确保用户每次输入密码都是手动操作,增加安全性。针对这一需求,这里提供一种在Vue Element UI框架下禁用Chrome自动填充密码的方法。 首先,我们创建一个输入框组件,类型初始设置为`type="text"`,而不是常见的`type="password"`。这是因为Chrome不会对`type="text"`的输入框自动填充密码。在VueElementUI中,可以这样编写: ```html <el-input ref="confirmPassword" v-if="hackConfirmPassword" :showPassword="showConfirmPassword" @input="(value) => { showPassword(value, 'confirmPassword') }" ></el-input> ``` 在这里,`hackConfirmPassword`和`showConfirmPassword`是两个控制状态的变量,初始值分别为`false`。`showPassword`函数用于处理输入框的显示逻辑。 接下来,定义`showPassword`函数,该函数根据输入值和输入框类型来切换显示状态: ```javascript showPassword(value, type) { if (value !== "" && !this.showConfirmPassword) { // 当输入值不为空且未显示密码时,将类型切换为password this.showConfirmPassword = true; } elseif ("" === value && this.showConfirmPassword) { // 当输入值为空时,恢复为text类型,同时模拟用户输入行为以清除填充的密码 this.hackConfirmPassword = false; this.$nextTick(() => { this.hackConfirmPassword = true; // 重新设置hackConfirmPassword为true setTimeout(() => { this.$refs.confirmPassword.$el.children[0].focus(); // 重新聚焦输入框 }, 5); }); // 将显示密码状态设为false this.showConfirmPassword = false; } } ``` 这个函数的核心在于,当用户开始输入时,将输入框类型切换为`password`,允许用户手动输入。而当用户清空输入框时,通过模拟用户输入(`$nextTick`和`setTimeout`)来触发Chrome的清除填充行为,并使输入框再次聚焦,以便用户继续输入。 这种方法巧妙地利用了Vue的状态管理和DOM操作,使得在Chrome浏览器中能够有效地禁用输入框的自动填充密码功能,确保了用户必须手动输入密码。尽管其他浏览器可能有不同的自动填充策略,但这个解决方案专注于解决Chrome 84版本下的问题。
思路:设置初始type为text,在输入值后将type设置为password,在清空值时将type为text,并将该输入框dom结点销毁重建。
实战案例(Vue、ElementUI)
<el-input
ref="confirmPassword"
v-if="hackConfirmPassword"
:showPassword="showConfirmPassword"
@input="(value) => {showPassword(value, 'confirmPassword')}"
></el-input>
showConfirmPassword:false
hackConfirmPassword:false
showPassword(value, type) {
if(value != "" && !this.showConfirmPassword) {
// type 为 password
this.showConfirmPassword = true;
}else if("" == value && this.showConfirmPassword) {
// 重建并获取焦点
this.hackConfirmPassword = false;
this.$nextTick(()=>{
this.hackConfirmPassword = True;
setTimeout(()=>{
this.$refs.confirmPassword.$el.children[0].focus();
}, 5)
})
// type 为 text
下载后可阅读完整内容,剩余1页未读,立即下载
- 粉丝: 2
- 资源: 9
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C++多态实现机制详解:虚函数与早期绑定
- Java多线程与异常处理详解
- 校园导游系统:无向图实现最短路径探索
- SQL2005彻底删除指南:避免重装失败
- GTD时间管理法:提升效率与组织生活的关键
- Python进制转换全攻略:从10进制到16进制
- 商丘物流业区位优势探究:发展战略与机遇
- C语言实训:简单计算器程序设计
- Oracle SQL命令大全:用户管理、权限操作与查询
- Struts2配置详解与示例
- C#编程规范与最佳实践
- C语言面试常见问题解析
- 超声波测距技术详解:电路与程序设计
- 反激开关电源设计:UC3844与TL431优化稳压
- Cisco路由器配置全攻略
- SQLServer 2005 CTE递归教程:创建员工层级结构