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

时间:2010-04-12 09:20:57

标签: javascript browser autofill

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

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

我可以做些什么或者我可以调用哪些函数来触发自动填充?

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

3 个答案:

答案 0 :(得分:4)

除了将表单元素包装在form元素中之外,还要确保所有输入(甚至可能是表单)具有不会更改的唯一nameid属性。对于密码等,名称应该是描述性的password,不确定浏览器使用此信息的程度,但如果使用标准名称,“autosuggest”/“魔术棒”功能可能会更好。

当然你应该确保你没有将任何autosuggest / autofill属性设置为false(如果你使用的话,js框架可能会出于某种原因这样做。)

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

最简单的解决方案(如果静态表单工作)是在注销时强制页面重新加载(你可能确实想要在注销后丢弃正在运行的javascript的“状态”,所以刷新真的很好)< / p>

答案 1 :(得分:1)

某些浏览器需要“form”标记才能启用本地用户名&amp;密码存储。在AJAX应用程序中遇到同样的问题,在我的情况下我刚刚添加了

<form>...</form>

标记。

答案 2 :(得分:0)

你不能使用类似的技巧 - 使用iframe加载表单,然后在提交登录表单时,实际上,提交iframe表单,其中包含已保存的密码。

要让“密码”显示在可见表单中,我认为您可以在iframe表单中测量密码的长度,然后使用相同数量的*填充可见表单的密码字段。