使用xhtml1-transitional.dtd
doctype时,请使用以下HTML收集信用卡号
<input type="text" id="cardNumber" name="cardNumber" autocomplete='off'/>
将在W3C验证器上标记警告:
没有属性“自动完成”。
是否存在W3C /标准方法来禁用表单中敏感字段上的浏览器自动完成功能?
使用xhtml1-transitional.dtd
doctype时,请使用以下HTML收集信用卡号
<input type="text" id="cardNumber" name="cardNumber" autocomplete='off'/>
将在W3C验证器上标记警告:
没有属性“自动完成”。
是否存在W3C /标准方法来禁用表单中敏感字段上的浏览器自动完成功能?
这并不理想,但是您每次渲染文本框时都可以更改其ID和名称-您也必须在服务器端跟踪该文本框,以便获取数据。
不知道这是否行得通,只是一个想法。
autocomplete="off"
这应该解决所有现代浏览器的问题。
<form name="form1" id="form1" method="post" autocomplete="off"
action="http://www.example.com/form.cgi">
[...]
</form>
在当前版本的Gecko浏览器中,自动完成属性可以完美工作。对于较早的版本,回到Netscape 6.2,它适用于带有“地址”和“名称”的表单的例外。
更新资料
在某些情况下,即使将autocomplete属性设置为off,浏览器也会继续建议自动补全值。对于开发人员而言,这种意外行为可能会令人困惑。真正强制不自动补全的技巧是为属性分配一个随机字符串,例如:
autocomplete="nope"
由于此随机值不是valid one
,浏览器将放弃。
请注意,关于自动完成属性的位置有些困惑。它既可以应用于整个FORM标记,也可以应用于单个INPUT标记,并且在HTML5之前并没有真正标准化(明确允许两个 位置)。最值得注意的是旧版文档,该Mozilla文章仅提及FORM标签。同时,一些安全扫描程序将只寻找在INPUT标记自动完成,如果缺少投诉(即使是在父窗体)。有关此混乱情况的详细分析,请参见此处:HTML表单中对AUTOCOMPLETE = OFF属性的困惑。
使用随机的“名称”属性对我有用。
我在发送表单时重置了name属性,因此在发送表单时您仍然可以按名称访问它。(使用id属性存储名称)
如果您使用jQuery,则可以执行以下操作:
$(document).ready(function(){$("input.autocompleteOff").attr("autocomplete","off");});
并在需要的地方使用autocompleteOff类:
<input type="text" name="fieldName" id="fieldId" class="firstCSSClass otherCSSClass autocompleteOff" />
如果您希望所有输入均为autocomplete=off
,则可以简单地使用:
$(document).ready(function(){$("input").attr("autocomplete","off");});
如果W3C提出一种可与(X)HTML4一起使用的方法,我将感到非常惊讶。自动完成功能完全基于浏览器,并且是在最近几年引入的(很早就编写了HTML4标准)。
不过,如果HTML5有一个,也不会感到惊讶。
编辑:我认为,HTML5 确实具有该功能。要将页面定义为HTML5,请使用以下doctype(即:将其作为源代码中的第一个文本)。请注意,并非所有浏览器都支持此标准,因为它仍处于草稿形式。
<!DOCTYPE html>
否,但是浏览器自动完成功能通常是由与name
先前填写的字段具有相同属性的字段触发的。如果您可以采用一种巧妙的方法来获得一个随机的字段名,则自动完成功能将无法提取该字段以前输入的任何值。
如果要给输入字段起一个类似“ email_<?= randomNumber() ?>
” 的名称,然后让脚本通过POST或GET变量接收此数据循环,以查找与模式“ email_[some number]
” 匹配的内容,则可以将其删除,这样就可以了(实际上),无论使用什么浏览器,都能保证成功。
不,Mozila Wiki中的一篇好文章。
我将继续使用invalid attribute
。我认为这是实用主义胜过验证的地方。
HTML 4:否
HTML 5:是
自动完成属性是枚举属性。该属性具有两个状态。在上关键字映射到导通状态,并且关闭 关键字映射到关断状态。该属性也可以省略。缺少的值默认为打开状态。该关闭状态表示在默认情况下,在形式表单控件都会有自己的自动填充字段名称设置为关闭 ; on状态表示默认情况下,表单中的表单控件会将其
autofill
字段名称设置为“ on”。
参考:W3
我认为有一种更简单的方法。创建一个具有随机名称的隐藏输入(通过javascript),并将用户名设置为该名称。重复输入密码。这样,您的后端脚本就可以准确地知道适当的字段名称,同时又可以使自动完成功能保持黑暗。
我可能错了,但这只是一个主意。