网页input框自动填充问题

autocomplete

大部分查询解决办法是设置,autocomplete=off,关于autocomplete的含义,官网参考如下:

HTML attribute: autocomplete - HTML: HyperText Markup Language | MDN

在 autocomplete 的文档中说明了 value 为 off 时,浏览器禁止给当前字段自动的输入或者选中一个值,但下方 Note 言明: 在大多数现代浏览器中,off 值不能阻止浏览器的密码管理工具自动填充。

可以使用如下几种方式解决:

# 方式一 : 动态设置密码 input 标签 type
复制代码
<input type="text" onfocus="this.type='password'"></input>

这样设置 可以保证用户在点击密码框之前,避免浏览器识别为登录表单、自动填充。

浏览器是如何判断当前表单需要 autocomplete,浏览器自动保存表单是当前 form 存在 type 为 password 的 input、且该 input 为表单中的第二个 input 输入框。

所以,这里给 password 设置初始 type 为 text,在用户 点击 input 聚焦后 设置 type 为 password ,避免浏览器在 页面 onload 之后判断登录表单进行回填。这样可以解决大部分场景下对于避免回填的需要。然而我们的业务需要 依据跳转链接中的 param 给用户填充 密码,这就导致了在用户 主动 focus 之前,密码会被明文展示,聚焦后又会隐藏,操作体验不佳;

# 方式二 : page.onload 后 js 控制 input type

方法同上,问题点在于 页面 load 后手动设置 input type 为 password,而后根据 page url 参数 填充表单。

但存在问题是 浏览器填充的时机无法控制,导致业务填充表单被自动填充覆盖;方案 pass;

# 方式三: new-password

autocomplete 除了 on、off 之外,还有很多参数: name、email、username、new-password、current-password、street-address 等等;

当 input type 为 password 但 autocomplete 为 new-password, 即可解决浏览器自动填充问题,浏览器将当前输入框识别为新密码,便不会自动填充。

相关推荐
meilindehuzi_a4 小时前
从零理解并实现 RAG:用 LangChain.js 构建语义检索问答系统
开发语言·javascript·langchain
世界哪有真情6 小时前
拿人类意识卡 AI?等于用 bug 验收正式产品
前端·人工智能·后端
鱼樱前端6 小时前
别再自己拼凑了!这款 Vue 3.5+ 严肃产品级组件库,把 AI 对话、工作流和复杂数据全包了!
javascript·vue.js·github
Listen·Rain6 小时前
Vue3:setup详解
前端·javascript·vue.js
Patrick_Wilson7 小时前
修好 bug 只是开始:一次由监控需求反向重构日志结构的复盘
前端·监控·数据可视化
kyriewen7 小时前
面试官让我优化一个卡死的表格,我打开 Claude 五秒重写,他放下咖啡问我要不要来当组长
前端·javascript·面试
‘’林花谢了春红‘’8 小时前
小玩意 生日快乐
css·html·css3
小粉粉hhh8 小时前
React(二)——dom、组件间通信、useEffect
前端·javascript·react.js
Csvn8 小时前
🤖 AI 生成前端代码的 5 个典型翻车现场及修复指南
前端
IT_陈寒9 小时前
SpringBoot自动装配坑了我一天,原来问题出在这
前端·人工智能·后端