mat*_*t b 421 html forms standards w3c
使用xhtml1-transitional.dtd
doctype时,使用以下HTML收集信用卡号
<input type="text" id="cardNumber" name="cardNumber" autocomplete='off'/>
Run Code Online (Sandbox Code Playgroud)
将在W3C验证器上标记警告:
没有属性"自动完成".
是否有W3C /标准方法禁用表单中敏感字段的浏览器自动完成?
Nic*_*sta 419
这是来自MDC的一篇好文章,它解释了形成自动完成的问题(和解决方案).微软也在这里发布了类似的东西.
说实话,如果这对您的用户来说很重要,那么以这种方式"打破"标准似乎是合适的.例如,亚马逊使用'autocomplete'属性相当多,而且似乎运行良好.
如果要完全删除警告,可以使用JavaScript将属性应用于支持它的浏览器(IE和Firefox是重要的浏览器) someForm.setAttribute( "autocomplete", "off" ); someFormElm.setAttribute( "autocomplete", "off" );
最后,如果您的网站使用HTTPS,IE会自动关闭自动完成功能(据我所知,其他浏览器也是如此).
更新
由于这个答案仍然有很多赞成,我只是想指出,在HTML5中,您可以在表单元素上使用'autocomplete'属性.有关它的信息,请参阅W3C 的文档.
Hen*_*aul 63
如果W3C提出了一种适用于(X)HTML4的方法,我会感到非常惊讶.自动完成功能完全基于浏览器,并在过去几年(在编写HTML4标准之后)推出.
但是,如果HTML5有一个,也不会感到惊讶.
编辑:我认为,HTML5 确实有这个功能.要将页面定义为HTML5,请使用以下doctype(即:将此作为源代码中的第一个文本).请注意,并非所有浏览器都支持此标准,因为它仍处于草稿形式.
<!DOCTYPE html>
Run Code Online (Sandbox Code Playgroud)
Pha*_*son 32
不,但浏览器自动完成通常由具有与name
先前填写的字段相同属性的字段触发.如果您可以通过巧妙的方式获得随机字段名称,则自动完成功能将无法为该字段提取任何先前输入的值.
如果你给输入字段一个像" email_<?= randomNumber() ?>
" 这样的名字,然后让脚本通过POST或GET变量接收这个数据循环寻找匹配模式" email_[some number]
"的东西,你可以把它拉掉,这样就可以了(实际上)保证成功,无论浏览器如何.
Gre*_*reg 23
用JavaScript设置它怎么样?
var e = document.getElementById('cardNumber');
e.autocomplete = 'off'; // Maybe should be false
Run Code Online (Sandbox Code Playgroud)
它并不完美,但您的HTML将是有效的.
Mal*_*tre 19
我建议捕获所有4种类型的输入:
$('form,input,select,textarea').attr("autocomplete", "off");
Run Code Online (Sandbox Code Playgroud)
参考:
小智 11
如果你使用jQuery,你可以这样做:
$(document).ready(function(){$("input.autocompleteOff").attr("autocomplete","off");});
Run Code Online (Sandbox Code Playgroud)
并在您想要的位置使用autocompleteOff类:
<input type="text" name="fieldName" id="fieldId" class="firstCSSClass otherCSSClass autocompleteOff" />
Run Code Online (Sandbox Code Playgroud)
如果你想要所有的输入autocomplete=off
,你可以简单地使用它:
$(document).ready(function(){$("input").attr("autocomplete","off");});
Run Code Online (Sandbox Code Playgroud)
另一种方式 - 这也有助于提高安全性,每次显示输入框时都会调用输入框:就像一个captha.这样,会话可以读取一次性输入,而自动完成则无需继续.
关于rmeador关于您是否应该干扰浏览器体验的问题,我们提出了一个观点:我们开发了联系人管理和CRM系统,当您在表单中键入其他人的数据时,您不希望它经常建议您自己的详细信息.
这适用于我们的需求,但是我们可以告诉用户获得一个体面的浏览器:)
autocomplete='off'
Run Code Online (Sandbox Code Playgroud)
autocomplete="off"
这应该解决所有现代浏览器的问题.
<form name="form1" id="form1" method="post" autocomplete="off"
action="http://www.example.com/form.cgi">
[...]
</form>
Run Code Online (Sandbox Code Playgroud)
在当前版本的Gecko浏览器中,自动完成属性非常有效.对于早期版本,返回Netscape 6.2,它使用带有"地址"和"名称"的表单的例外
更新
在某些情况下,即使autocomplete属性设置为off,浏览器也会继续建议自动完成值.对于开发人员来说,这种意想不到的行为非常令人费解 真正强制非自动完成的技巧是为属性分配一个随机字符串,例如:
autocomplete="nope"
Run Code Online (Sandbox Code Playgroud)
由于此随机值不是a valid one
,浏览器将放弃.
请注意,自动完成属性的位置存在一些混淆.它既可以应用于整个FORM标签,也可以应用于单个INPUT标签,这在HTML5之前并未真正标准化(明确允许两个 位置).较旧的文档,尤其是这篇Mozilla文章,只提到了FORM标签.同时,一些安全扫描程序将只寻找在INPUT标记自动完成,如果缺少投诉(即使是在父窗体).此处发布了对此混乱的更详细分析:HTML表单中的AUTOCOMPLETE = OFF属性的混淆.
归档时间: |
|
查看次数: |
263863 次 |
最近记录: |