我正在开发一个网站。我使用的是单页 web 应用程序样式,因此网站的所有不同部分都通过 AJAX 处理到 index.php 中。当用户登录并告诉 Firefox 记住他的用户名和密码时,网站上的所有输入框都会自动填充该用户名和密码。这是更改密码表单上的问题。如何防止 Firefox 自动填写这些字段?我已经尝试给他们不同的名字和ID。
编辑:有人已经问过这个。谢谢乔尔·库霍恩。
来自 Mozilla 的文档
<form name="form1" id="form1" method="post" autocomplete="off"
action="http://www.example.com/form.cgi">
[...]
</form>
http://developer.mozilla.org/en/How_to_Turn_Off_Form_Autocompletion
该autocomplete="off"
方法对我不起作用。我意识到 Firefox 在它遇到的第一个密码字段中注入了保存的密码,所以对我有用的解决方案是在密码更新字段之前创建一个虚拟密码字段并将其隐藏。像这样:
<input type="password" style="display: none;" />
<input type="password" name="password_update" />
您是否尝试过在输入标签中添加 autocomplete="off" 属性?不确定它是否会起作用,但值得一试。
您的所有输入框都设置为 type=password 吗?这样就可以了。您可以做的一件事,我完全不确定这是不是最好的答案是将输入框保留为输入类型,只需使用 javascript 和 onkeydown 事件将星号放在输入框中,而不是使用浏览器渲染它。Firefox 不会预先填充它。
顺便说一句,我不得不开发单页网络应用程序,我非常讨厌它。为什么要剥夺用户为页面添加书签的能力?使用后退按钮?
添加到这个答案https://stackoverflow.com/a/30897967/1333247
这是为了防止您在密码字段前面还有一个用户字段,并且也想禁用它的自动完成功能(例如路由器网络配置、设置代理用户和密码)。
只需在虚拟密码字段前面创建一个虚拟用户字段以隐藏用户名自动完成:
<input type="text" style="display: none;" />
<input type="password" style="display: none;" />
<input type="password" name="password_update" />
根据文档,这是关于登录自动完成的。要禁用正常的(例如搜索词完成),只需使用
autocomplete="off"
表单或输入上的属性。要禁用两者,您需要两者,因为该属性不会禁用登录自动完成。