浏览器会将带有密码输入域的表单进行自动填充,在登录界面给用户带来很大的便利。但是,在非登录表单存在密码输入域时,浏览器也会自动填充,从而会带来一定坏得影响。禁止浏览器对表单自动填充的四种方法如下:
第一种方法:将type=“password” 改为 type="text" ,然后再在必要的时候将其改回password
猜想,浏览器自动填充识别的是 type="password" 然后将该input自动填入密码
那么,我们考虑将type=“password” 改为 type="text" ,然后再在必要的时候将其改回password
这个必要的时候我们选择在当密码的input获得焦点时,即在onFocus时改变type="password",代码如下:
$("#psw").focus(function(event) {
$(this).attr('type','password');
});
以上代码不兼容ie8以下,兼容代码如下:
var isLTIE9 = function(){
var bObj = document.createElement('b');
bObj.innerHTML = '';
return bObj.getElementsByTagName('i').length === 1;
}
if(!isLTIE9()) {
$("#psw").focus(function(event) {
$(this).attr('type','password');
});
}else{
var pswInput = document.getElementById("psw");
var pswInput2 = pswInput.cloneNode(false);
pswInput2.type='password';
pswInput.parentNode.replaceChild(pswInput2,pswInput);
}
第二种方法:在用户名和密码之间加上一个隐藏的文本框
第三种方法:使用假的 input 让浏览器去填充
在页面
后加入:
这个方案原理是让浏览器去填充用户实际上看不到的 input。虽然看上去代码比较 low,但是很实用
第四种方法:使用 autocomplete 属性
在不需要自动填充的 input 上设置autocomplete属性:
这个方案只对chrome浏览器生效。