禁止浏览器对表单自动填充的几种方法

标签: 表单自动填充   时间:2017-10-28
当用户在进行登录等操作提交表单后,浏览器会提示是否允许浏览器记住密码。记住用户名密码在一定程度上会给用户体验带来好处,然而,也会带来一定坏得影响,本文章向大家介绍禁止浏览器对表单自动填充的几种方法,需要的朋友可以参考一下。

浏览器会将带有密码输入域的表单进行自动填充,在登录界面给用户带来很大的便利。但是,在非登录表单存在密码输入域时,浏览器也会自动填充,从而会带来一定坏得影响。禁止浏览器对表单自动填充的四种方法如下:

 

第一种方法:将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 = '<!--[if lt IE 9]><i></i><![endif]-->';
    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 type="text" name="name">  
<input type="hidden">  
  <input type="password" name="pass"> 

 

第三种方法:使用假的 input 让浏览器去填充

在页面 <body> 后加入:

<!-- fake fields are a workaround for chrome autofill getting the wrong fields -->
<input style="display:none" type="text" name="fakeusernameremembered"/>
<input style="display:none" type="password" name="fakepasswordremembered"/>

这个方案原理是让浏览器去填充用户实际上看不到的 input。虽然看上去代码比较 low,但是很实用

 

第四种方法:使用 autocomplete 属性

在不需要自动填充的 input 上设置 autocomplete 属性:

<pre name="code" class="html"><input type="text" name="name" autocomplete="off">  
<input type="password" name="pass" autocomplete="off">  

这个方案只对chrome浏览器生效。

原文地址:http://www.manongjc.com/article/2192.html