10

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

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

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

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

4

3 回答 3

4

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

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

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

The easiest solution (if static forms work) is to force a page reload on logout (you probably do want to discard the "state" of the running javascript after log-out anyway, so refreshing is really a Good Thing)

于 2010-04-19T07:07:38.453 回答
1

一些浏览器需要“form”标签来启用本地用户名和密码存储。在 AJAX 应用程序中遇到了同样的问题,就我而言,我刚刚添加了

<form>...</form>

标签。

于 2010-04-12T14:41:50.507 回答
0

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

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

于 2010-04-12T14:13:56.000 回答