受欢迎的博客标签

网站如何禁用表单字段的自动完成功能

Published

默认情况下,浏览器会记录用户网页上提交的输入框的信息。这样浏览器便能够做到自动完成(在用户开始输入的时候给用户提供可能的内容)和自动填充(在加载的时候预先填充某些字段)功能。

这些功能可能涉及用户的隐私,因此浏览器让用户可以禁用它(自动完成或自动填充),(不幸的是)它们默认是启用的。当然,许多提交的表单信息并不见得是有用的(例如:一次性的身份验证码-我把它理解为验证码)或是某些敏感信息(例如政府分发的身份识别码和信用卡安全码-我把它理解为身份证号和信用卡安全码)。即使浏览器的自动填充出去开启状态,网站(提供商)可能也不是那么喜欢浏览器记住这些字段的值。

禁用自动填充
要禁用的表单自动填充,网页可以将 autocomplete 的属性设置为 "off":

autocomplete="off"

网站可以为整个表单设置或单独设置:

<form method="post" action="/form" autocomplete="off">
[…]
</form>
<form method="post" action="/form">
  […]
  <div>
    <label for="cc">信用卡:</label>
    <input type="text" id="cc" name="cc" autocomplete="off">
  </div>
</form>

在这里设置 autocomplete="off" 会有两种效果:

它会阻止浏览器为了以后自动完成类似的表单来自动保存表单数据,但是浏览器是不一样的。
它会阻止浏览器历史记录缓存中的表单数据。当表单数据来自缓存的时候,当用户点击返回按钮来返回的时候,用户填写的信息是可见的。
在某些情况下,即使浏览器的自动填充设置为off,浏览器依然会继续提示自动完成的值。这可能会让开发者百思不得其解。强制浏览器不自动填充的方法是为autocomplete设置一个随机的字符串,例如:

autocomplete="nope"

当这个随机的值不是 可用值的时候,浏览器就会放弃自动填充。