chrome 阻止浏览器在表单输入框聚焦/输入时显示保存的密码和账号候选框(Google 密码管理工具)

参考:

完美解决 element-ui input=password 在浏览器会自动填充密码的问题

背景:

领导要求去掉登录页的账号密码表单的自动显示账号密码候选框

定位:

  1. chrome 版本 126.0.6478.127 , 现有表单用的是原生 input 元素, 之前已经加了 autocomplete="off"readonly + onfocus 时去掉 readonly , 看起来之前就尝试去掉候选框了, 但是没啥效果; 账号和密码输入框都会触发, 要不就是一开始不触发, 清空后重新输入 或 多次 tab 切换/点击重新获取焦点后又触发了
  2. 先看 autocomplete 属性, 结果发现 off 和 new-password 都不管用
  3. 之前记得看到过使用额外的隐藏 input 欺骗浏览器的方案, 但是不想改现有表单结构 + 多写代码, 先 pass ;
  4. 再试 readonly , 毕竟之前加的这个, 有时还是生效的, 于是搜到了上面的参考文章, 参考它成功解决问题 — 坑爹的是, 尝试过程中经常是本地 localhost 没问题, 发到测试环境域名后效果不好…

代码:

<!-- vue 写的 --><!-- 原代码 -->
<!-- 遍历配置表单输入框配置对象数组 inputConfig , 显示账号和密码输入框 -->
<input v-model="form[item.attrName]"ref="loginFormInput":type="item.type":name="item.name":id="item.id":placeholder="item.placeholder":autocomplete="item.type === 'password' ? 'on' : 'off'":readonly="item.type !== 'password'"onfocus="this.removeAttribute('readonly');"@blur="blur(item,form[item.val],index)"@focus="focus(index)"@change="change(form[item.val], item.val)"/><!-- 新代码 -->
<input v-model="form[item.val]"ref="loginFormInput":type="item.type":name="item.name":id="item.id":placeholder="item.placeholder"autocomplete="off" // 变动:readonly="true" // 变动// 删除 onfocus@blur="blur(item,form[item.val],index)" // 内部变动@focus="focus(index)" // 内部变动@mousedown="handleMouseDown(index)" // 新增@change="change(form[item.val], item.val)"/><script>export default {methods: {// 动态设置 input 的 readonly , 避免浏览器显示候选框handleMouseDown(index) {const $inputEl = this.$refs.loginFormInput[index];if (this.form[this.inputConfig[index].attrName] === '') {$inputEl.setAttribute('readonly', 'readonly');setTimeout(() => {$inputEl.removeAttribute('readonly');});} else {$inputEl.removeAttribute('readonly');}},focus(index) {// 新增的相关代码// 避免使用 tab 键选中输入框时浏览器显示候选框this.handleMouseDown(index);},blur(item, val, index) {// 新增的相关代码// 失焦时设置 readonly , 不管输入框是否有值, 避免多次 tab 切换输入框后浏览器候选框又显示出来了const $inputEl = this.$refs.loginFormInput[index];$inputEl.setAttribute('readonly', 'readonly');}},watch: {'form.password': {handler: function(val) {// 新增的相关代码// 此处使用 watch 值的变化,因为使用 @input 监听时用拼音输入有问题(可用 compositionstart 解决, 但麻烦)if (!val) {this.handleMouseDown(1);}},deep: true},'form.userName': {handler: function(val) {// 新增的相关代码// 此处使用 watch 值的变化,因为使用 @input 监听时用拼音输入有问题(可用 compositionstart 解决, 但麻烦)if (!val) {this.handleMouseDown(0);}},deep: true}}}
</script>

后记:

额… 领导说不用改了, 我理解错了, 说的不是去掉候选框, 是去掉候选框里某一条记录, 客户自己进密码管理器删了就行…

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/55887.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WireShark过滤器

文章目录 1. **捕获过滤器&#xff08;Capture Filter&#xff09;**语法格式&#xff1a;常见捕获过滤器示例&#xff1a; 2. **显示过滤器&#xff08;Display Filter&#xff09;**语法格式&#xff1a;常见比较运算符&#xff1a;常见显示过滤器示例&#xff1a;逻辑操作符…

Linux系统:apt-get update 和apt update区别

apt-get update 和apt update区别 ‌apt-get update和apt update的主要区别在于它们所属的命令集以及在现代Ubuntu系统中的使用推荐。‌ ‌所属命令集‌&#xff1a;apt-get update是apt-get命令的一部分&#xff0c;而apt update是apt命令的一部分。apt是apt-get的替代工具&am…

Java面经--从代码角度认识面向对象编程和面向过程编程

1. 思维方式和核心概念 面向过程编程&#xff1a;核心是过程&#xff08;procedure&#xff09;&#xff0c;即通过函数来组织和实现功能。程序被分为一系列的步骤或过程&#xff0c;数据和功能分离&#xff0c;代码通常是顺序执行的。 面向对象编程&#xff1a;核心是对象&am…

回归涉及的函数

当然可以&#xff01;以下是你学习笔记中涉及到的函数的详细讲解&#xff1a; 1. 导入必要的库 import: 用于导入所需的库和模块。例如&#xff0c;import numpy as np 导入 NumPy 库并简写为 np。 2. 读取数据 pd.read_csv(temps.csv): 读取指定路径的 CSV 文件&#xff0…

苹果秋季盛典:iPhone 16系列引领未来科技潮流

9月10日&#xff0c;苹果公司在众人瞩目中举办了2024年的秋季特别活动&#xff0c;发布了备受期待的iPhone 16系列。 尽管网络发布会已经持续了一整年&#xff0c;但熬夜观看的果粉们仍然热情不减&#xff0c;因为每一次苹果的新品发布都代表着科技界的一次重大飞跃。 iPhone …

使用C++的OpenSSL 库实现 AES 加密和解密文件

如果C不知道做什么项目&#xff0c;可以编写一个文件加密和解密工具&#xff0c;支持诸如 AES 和 RSA 等常见的加密算法。这样的项目可以帮助学习和理解现代加密技术&#xff0c;并为日常文件保护提供便利。以下是一个基本的设计思路和实现步骤&#xff1a; 1. 设计思路 a. 功…

Android常用组件

目录 1. TextView 控件 常用属性: 1&#xff09;android:text: 2&#xff09;android:gravity: 3&#xff09;android:textSize: 4&#xff09;android:textColor: 5&#xff09;android:background: 6&#xff09;android:padding: 7&#xff09;android:layout_width 和 andr…

嵌入式C语言中链表的插入实现方法

大家好,今天主要给大家分享一下,如何使用链表插入功能。 第一:嵌入式中链表具体实现 链表查找思路:从链表的a0起,判断是否为第i结点,若是则返回该结点的指针,否则查找下一结点,依次类推。 具体代码的链表插入实现: linklist Locate(linklist_t h, data_t x) { …

MySQL 分组

MySQL 分组 在数据库管理中&#xff0c;分组是一种强大的功能&#xff0c;它允许用户根据一个或多个列对数据进行分类&#xff0c;并对每个组执行聚合操作。MySQL 作为最流行的关系型数据库管理系统之一&#xff0c;提供了丰富的分组功能。本文将详细介绍 MySQL 中的分组概念、…

Android车载——VehicleHal运行流程(Android 11)

1 概述 本篇主要讲解VehicleHal的主要运行流程&#xff0c;包括设置属性、获取属性、订阅属性、取消订阅、持续上报属性订阅等。 2 获取属性流程 2.1 获取属性流程源码分析 作为服务注册到hwServiceManager中的类是VehicleHalManager&#xff0c;所以&#xff0c;CarServic…

WOFOST模型与PCSE模型

农作物生长模型概述 1、介绍农作物生长模型的用途和应用领域 2、比较WOFOST模型和PCSE模型的特点和优势 数据准备 1、气象数据&#xff1a; 数据类型&#xff1a;温度、降水、湿度、风速等气象要素数据。 数据格式&#xff1a;时间序列数据&#xff0c;通常以日为单位。 …

EXCELWPS工作表批量重命名(按照sheet1中A列内容)

将工作表名称批量重命名&#xff08;按照sheet1中A列内容&#xff09; 打开WPS Office的Excel文件。按 Alt F11 打开VBA编辑器。在VBA编辑器中&#xff0c;插入一个新模块&#xff1a;点击 插入 -> 模块。将以下代码粘贴到模块中&#xff1a;运行→运行宏 Sub RenameShee…

使用 Vertex AI Gemini 模型和 Elasticsearch Playground 快速创建 RAG 应用程序

作者&#xff1a;来自 Elastic Jeff Vestal 在这篇博客中&#xff0c;我们将使用 Elastic 的 Playground 和 Vertex AI API 将 Elasticsearch 连接到 Google 的 Gemini 1.5 聊天模型。将 Gemini 模型添加到 Playground 使 Google Cloud 开发人员能够快速建立 LLM、测试检索、调…

宠物空气净化器怎么选?希喂、霍尼韦尔、美的宠物哪款除毛好?

身为养宠五年的资深铲屎官&#xff0c;最近收到了很多新手养宠朋友关于宠物空气净化器的挑选疑问。宠物空气净化器作为宠物领域目前最火热的产品&#xff0c;谈论度一直很高&#xff0c;评价也褒贬不一。双十一购物节又即将到来&#xff0c;大家都想赶上这一波优惠活动。 铺天盖…

低代码工单管理app评测,功能与效率解析

预计到2030年&#xff0c;低代码平台市场将达1870亿美元。ZohoCreator助力企业构建定制化软件应用&#xff0c;以建筑行业工作订单管理app为例&#xff0c;简化流程&#xff0c;提升管理效率&#xff0c;降低成本。其用户友好界面、自动化管理、跨平台使用及全面报告功能受企业…

基于差分进化灰狼混合优化的SVM(DE-GWO-SVM)数据预测算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1 DE优化 4.2 GWO优化 5.完整程序 1.程序功能描述 基于差分进化灰狼混合优化的SVM(DE-GWO-SVM)数据预测算法matlab仿真&#xff0c;对比SVM和GWO-SVM。 2.测试软件版本以及运行结果展示…

实施威胁暴露管理、降低网络风险暴露的最佳实践

随着传统漏洞管理的发展&#xff0c;TEM 解决了因攻击面扩大和安全工具分散而产生的巨大风险。 主动式 TEM 方法优先考虑风险并与现有安全工具无缝集成&#xff0c;使组织能够在威胁被有效利用之前缓解威胁。 为什么威胁暴露管理 (TEM) 在现代网络安全策略中变得至关重要&…

获取时隔半个钟的三天

摘要&#xff1a; 今天遇到需求是配送时间&#xff0c;时隔半个钟的排线&#xff01;所以需要拼接时间&#xff01;例如2024-10-08 14&#xff1a;30&#xff0c;2024-10-08 15&#xff1a;00&#xff0c;2024-10-08 15&#xff1a;30 <el-form-item label"配送时间&a…

如何使用bpmn-js实现可视化流程管理

介绍 BPMN-JS是一个流行的开源库&#xff0c;用于在Web应用程序中可视化、创建、编辑和分析BPMN&#xff08;Business Process Model and Notation&#xff0c;业务流程建模与表示法&#xff09;2.0 图。BPMN是一种国际标准的图形化语言&#xff0c;用于描述企业中的业务流程&a…

【数据结构】string(C++模拟实现)

string构造 string::string(const char* str):_size(strlen(str)) {_str new char[_size 1];_capacity _size;strcpy(_str, str); }// s2(s1) string::string(const string& s) {_str new char[s._capacity 1];strcpy(_str, s._str);_size s._size;_capacity s._cap…