解决浏览器会自动填充密码的问题


Posted in Javascript onApril 28, 2017

解决办法是在form上或input上添加autoComplete="off"这个属性。

form表单的属性如下所示:

解决浏览器会自动填充密码的问题

但是这个解决方案在谷歌和火狐上均有bug,下面来一个一个解决。

1.'autocomplete="off"'在Chrome中不起作用解决方案

网站项目中,有登录和注册的弹框,在除chrome的浏览器中一切都ok,一旦在谷歌浏览器中,问题来了:

首先从登录弹框中登陆成功,chrome会弹出是否保存密码的提示框,点击保存密码按钮,

解决浏览器会自动填充密码的问题

然后接着退出账户,

这时打开注册弹框,你会发现注册弹框中用户名和密码也被默认填写进去了(登录弹框中默认填写进去符合逻辑),

解决浏览器会自动填充密码的问题

解决浏览器会自动填充密码的问题

这现象就诡异了,开始各种查,cookie,本地缓存,等等,都解决不了这问题;

查阅后,很多没有这个的解决方案。

1  通常我们会在form表单上加入autocomplete="off" 或者 在输入框中加入autocomplete="off"

<form method="post" action="" name="login" autocomplete="off"> 
</form> 
//或者 
<input id="name" type="text" name="name" maxlength="20" autocomplete="off">

2  但是有一种情况例外,就是表单中有input[type="password"],点击保存密码后,在Chrome浏览器则自动填充了用户名和密码的输入框;为了统一样式,我们需要就对Chrome的问题经行单独处理。

总结了4种解决方案,如下:

1 修改disabled属性

if(navigator.userAgent.toLowerCase().indexOf("chrome") != -1){ 
   var inputers = document.getElementsByTagName("input"); 
   for(var i=0;i<inputers.length;i++){ 
    if((inputers[i].type !== "submit") && (inputers[i].type !== "password")){ 
     inputers[i].disabled= true; 
    } 
   } 
   setTimeout(function(){ 
    for(var i=0;i<inputers.length;i++){ 
     if(inputers[i].type !== "submit"){ 
      inputers[i].disabled= false; 
     } 
    } 
   },100) 
  }

2 去除输入框的name和id属性

if(navigator.userAgent.toLowerCase().indexOf("chrome") != -1){ 
   var inputers = document.getElementsByTagName("input"); 
   for(var i=0;i<inputers.length;i++){ 
    if((inputers[i].type !== "submit") && (inputers[i].type !== "password")){ 
     var input = inputers[i]; 
     var inputName = inputers[i].name; 
     var inputid = inputers[i].id; 
     inputers[i].removeAttribute("name"); 
     inputers[i].removeAttribute("id"); 
     setTimeout(function(){ 
      input.setAttribute("name",inputName); 
      input.setAttribute("id",inputid); 
     },1) 
    } 
   } 
  }

3.可以在不需要默认填写的input框中设置 autocomplete="new-password"

网上咱没有找到对其详细解释,但是发现163邮箱的登录注册是这么用的,

解决浏览器会自动填充密码的问题

所以就借鉴借鉴咯,测试之后也是可以解决问题的,也是最简单的解决办法,网易给您点个赞!

4 修改readonly属性

<input type="password" readonly onfocus="this.removeAttribute('readonly');"/> 

但Firefox中有个Bug。首次提交后,FF会提示是否记住某某网站的密码,点击“记住”后 input[type=text]设置autocomplete="off"将不起作用。

解决浏览器会自动填充密码的问题

有两种情况:

1,form中没有input[type=password],autocomplete="off"将起作用

2,去掉form,设置input[type=text]的autocomplete也起作用(测试不好用)

3.Firefox则需要使用另一个扩展属性disableautocomplete  (测试也不行)

<input type="text"  disableautocomplete autocomplete="off"  id="number"/>

火狐现在也没有解决的办法,,谁有麻烦告知一下哈。。。。。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
JavaScript RegExp方法获取地址栏参数(面向对象)
Mar 10 Javascript
判断对象是否Window的实现代码
Jan 10 Javascript
ie下jquery.getJSON的缓存问题的处理方法
Mar 29 Javascript
使用indexOf等在JavaScript的数组中进行元素查找和替换
Sep 18 Javascript
Jquery Ajax方法传值到action的方法
May 11 Javascript
Node.js实现批量去除BOM文件头
Dec 20 Javascript
JavaScript中setFullYear()方法的使用详解
Jun 11 Javascript
javascript实现页面滚屏效果
Jan 17 Javascript
详解使用Typescript开发node.js项目(简单的环境配置)
Oct 09 Javascript
浅谈实现vue2.0响应式的基本思路
Feb 13 Javascript
javascript实现文本框标签验证的实例代码
Oct 14 Javascript
JavaScript实现密码强度实时验证
Mar 18 Javascript
JS实现简单的天数计算器完整实例
Apr 28 #Javascript
jQuery实现jQuery-form.js实现异步上传文件
Apr 28 #jQuery
js实现移动端编辑添加地址【模仿京东】
Apr 28 #Javascript
angularjs中使用ng-bind-html和ng-include的实例
Apr 28 #Javascript
d3.js入门教程之数据绑定详解
Apr 28 #Javascript
jQuery tip提示插件(实例分享)
Apr 28 #jQuery
JS实现动态添加DOM节点和事件的方法示例
Apr 28 #Javascript
You might like
PHP的变量总结 新手推荐
2011/04/18 PHP
浅析PHP中Collection 类的设计
2013/06/21 PHP
typecho插件编写教程(二):写一个新插件
2015/05/28 PHP
PHP SFTP实现上传下载功能
2017/07/26 PHP
javascript 动态数据下的锚点错位问题解决方法
2008/12/24 Javascript
jQuery的强大选择器小结
2009/12/27 Javascript
用Juery网页选项卡实现代码
2011/06/13 Javascript
DOM操作一些常用的属性汇总
2015/03/13 Javascript
JQuery中两个ul标签的li互相移动实现方法
2015/05/18 Javascript
简介JavaScript中的setTime()方法的使用
2015/06/11 Javascript
javascript模块化简单解析
2016/04/07 Javascript
js获取页面引用的css样式表中的属性值方法(推荐)
2016/08/19 Javascript
jQuery EasyUI常用数据验证汇总
2016/09/18 Javascript
vue小图标favicon不显示的解决方案
2017/09/19 Javascript
在vue中,v-for的索引index在html中的使用方法
2018/03/06 Javascript
浅谈Vue数据响应思路之数组
2018/11/06 Javascript
微信小程序封装分享与分销功能过程解析
2019/08/13 Javascript
Jquery 动态添加元素并添加点击事件实现过程解析
2019/10/12 jQuery
原生JS实现留言板功能
2020/02/08 Javascript
浅谈JavaScript中this的指向问题
2020/07/28 Javascript
vue实现广告栏上下滚动效果
2020/11/26 Vue.js
[05:20]2018DOTA2亚洲邀请赛主赛事第三日战况回顾 LGD率先挺进胜者组决赛
2018/04/06 DOTA
Python Tkinter简单布局实例教程
2014/09/03 Python
在Python程序中进行文件读取和写入操作的教程
2015/04/28 Python
python实现隐马尔科夫模型HMM
2018/03/25 Python
解决tensorflow由于未初始化变量而导致的错误问题
2020/01/06 Python
python的flask框架难学吗
2020/07/31 Python
Selenium+BeautifulSoup+json获取Script标签内的json数据
2020/12/07 Python
Html5实现移动端、PC端 刮刮卡效果
2016/06/30 HTML / CSS
生产文员岗位职责
2014/04/05 职场文书
雏鹰争章活动总结
2014/05/09 职场文书
家长会欢迎标语
2014/06/24 职场文书
深入探讨opencv图像矫正算法实战
2021/05/21 Python
Java Optional<Foo>转换成List<Bar>的实例方法
2021/06/20 Java/Android
Python+OpenCV实现图片中的圆形检测
2022/04/07 Python
Spring Data JPA框架持久化存储数据到数据库
2022/04/28 Java/Android