我有一个用纯 JavaScript 编写的 Web 应用程序(没有预生成的 HTML,除了加载所有 JS 文件的文档)。
此应用程序包含一个登录表单,该表单是在触发 document.ready 事件时动态创建的。我欺骗浏览器显示“记住密码?”通过在使用 ajax 登录之前将登录表单发布到隐藏的 iframe 中来进行对话框(在 Firefox 中,密码出现在保存的密码列表中,因此这部分显然有效)但是保存的密码在稍后再次加载登录屏幕后永远不会被填写时间。同样的事情也发生在 Firefox 和 Safari 中。
有什么我可以做的或可以调用的函数来触发自动填充吗?
更新:自动填充在初始页面加载时在 Safari 中工作,但在用户注销时不工作,并且在没有重新加载页面的情况下重新创建登录表单。在 Firefox 中它永远不起作用。
最佳答案
除了将表单元素包装在 form
元素中,确保所有输入(甚至可能是表单)具有唯一的 name
和 id
不变的属性。该名称可能应该是一些描述性的东西,例如密码等的 password
,不确定浏览器在多大程度上使用此信息,但是如果您使用标准名称。
当然,您应该确保没有将任何自动建议/自动填充属性设置为 false(如果您使用任何属性,js 框架可能出于某种原因这样做)。
第三种可能性是某些浏览器可能会在您的脚本加载并将表单写入页面之前自动填充,请尝试制作表单的静态 html 版本并查看那是否有效。
最简单的解决方案(如果静态表单有效)是在注销时强制重新加载页面(您可能确实希望在注销后丢弃正在运行的 javascript 的“状态”,所以刷新确实是一件好事)
关于javascript - 如何在浏览器中触发保存的密码自动填充?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2620927/