javascript - 如何在浏览器中触发保存的密码自动填充?

标签 javascript browser autofill

我有一个用纯 JavaScript 编写的 Web 应用程序(没有预生成的 HTML,除了加载所有 JS 文件的文档)。

此应用程序包含一个登录表单,该表单是在触发 document.ready 事件时动态创建的。我欺骗浏览器显示“记住密码?”通过在使用 ajax 登录之前将登录表单发布到隐藏的 iframe 中来进行对话框(在 Firefox 中,密码出现在保存的密码列表中,因此这部分显然有效)但是保存的密码在稍后再次加载登录屏幕后永远不会被填写时间。同样的事情也发生在 Firefox 和 Safari 中。

有什么我可以做的或可以调用的函数来触发自动填充吗?

更新:自动填充在初始页面加载时在 Safari 中工作,但在用户注销时不工作,并且在没有重新加载页面的情况下重新创建登录表单。在 Firefox 中它永远不起作用。

最佳答案

除了将表单元素包装在 form 元素中,确保所有输入(甚至可能是表单)具有唯一的 nameid 不变的属性。该名称可能应该是一些描述性的东西,例如密码等的 password ,不确定浏览器在多大程度上使用此信息,但是如果您使用标准名称。

当然,您应该确保没有将任何自动建议/自动填充属性设置为 false(如果您使用任何属性,js 框架可能出于某种原因这样做)。

第三种可能性是某些浏览器可能会在您的脚本加载并将表单写入页面之前自动填充,请尝试制作表单的静态 html 版本并查看是否有效。

最简单的解决方案(如果静态表单有效)是在注销时强制重新加载页面(您可能确实希望在注销后丢弃正在运行的 javascript 的“状态”,所以刷新确实是一件好事)

关于javascript - 如何在浏览器中触发保存的密码自动填充?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2620927/

相关文章:

Javascript 在单元格单击时修改网页内容

php - 找到被点击元素的ID?

javascript - 为什么 array[array.length] 返回未定义?

ssl - 避免第一个请求和后续资源的并发 SSL/TLS 协商

java - 密码管理器自动填充

javascript - jQuery 就像独立的 ajax 库

javascript - Protractor 在浏览器窗口内滚动 iframe

java - Android 从文件资源管理器中过滤文件

android - 如何为otp添加自动填充建议

swift - iOS 12/Swift 强密码自动填充无法按预期工作