如何关闭表单自动完成
本文介绍如何在网站上禁用表单字段的自动完成功能。
了解自动完成和自动填充
默认情况下,浏览器会记住用户通过 <input>
字段提交到网站的信息。这使得浏览器能够提供自动完成功能(即,建议用户开始输入的字段的可能完成)或自动填充功能(即,在加载时预先填充某些字段)。
这些功能通常默认启用,但它们可能对用户构成隐私问题,因此浏览器可以允许用户禁用它们。但是,某些在表单中提交的数据除了当前交互之外没有用处(例如,一次性 PIN),或者包含敏感信息(例如,唯一的政府标识符或信用卡安全码)。作为网站作者,你可能希望浏览器不要记住此类字段的值,即使启用了浏览器的自动完成功能。
注意: WCAG 2.1 成功准则 1.3.5:标识输入目的 不要求自动完成或自动填充功能必须正常工作;它只要求与特定个人用户相关联的表单字段在程序上可识别。这意味着即使在关闭了表单本身的自动完成功能时,也可以通过(将相关的 autocomplete
属性添加到各个表单字段)来满足该准则。
禁用自动完成
要禁用表单中的自动完成功能,可以将 autocomplete
属性设置为 "off"
autocomplete="off"
可以对整个表单或对表单中的特定输入元素执行此操作
<form method="post" action="/form" autocomplete="off">
…
</form>
<form method="post" action="/form">
…
<div>
<label for="cc">Credit card:</label>
<input type="text" id="cc" name="cc" autocomplete="off" />
</div>
</form>
在字段上设置 autocomplete="off"
会产生两种影响
- 它告诉浏览器不要保存用户输入的数据,以便稍后在类似的表单上自动完成,尽管浏览器遵守的启发式方法各不相同。
- 它会阻止浏览器在会话历史记录中缓存表单数据。当表单数据在会话历史记录中缓存时,如果用户提交了表单并单击“后退”按钮返回原始表单页面,则会显示用户填写的信息。
如果浏览器在将自动完成设置为关闭后仍然继续进行建议,则需要更改 <input>
元素的 name
属性。
管理登录字段的自动填充
现代浏览器实现了集成的密码管理:当用户为某个网站输入用户名和密码时,浏览器会提供将其记住以供用户使用。当用户再次访问该网站时,浏览器会使用存储的值自动填充登录字段。
此外,浏览器还允许用户选择主密码,浏览器将使用该主密码来加密存储的登录详细信息。
即使没有主密码,浏览器内密码管理通常也被视为安全上的净收益。由于用户不必记住浏览器为其存储的密码,因此他们可以选择比平时更强的密码。
出于这个原因,许多现代浏览器不支持 autocomplete="off"
用于登录字段
- 如果某个网站在
<form>
元素上设置了autocomplete="off"
,并且该表单包含用户名和密码输入字段,浏览器仍会提供记住此登录的选项。如果用户同意,浏览器将在用户下次访问页面时自动填充这些字段。 - 如果某个网站为用户名和密码
<input>
字段设置了autocomplete="off"
,浏览器仍会提供记住此登录的选项。如果用户同意,浏览器将在用户下次访问页面时自动填充这些字段。
如果你正在定义一个用户管理页面,用户可以在该页面上为其他人指定新的密码,因此,你希望阻止自动填充密码字段,可以使用 autocomplete="new-password"
。
此属性是对浏览器的提示;有些浏览器可能不遵守它。