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


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 相关文章推荐
关于Jqzoom的使用心得 jquery放大镜效果插件
Apr 12 Javascript
Javascript this 的一些学习总结
Aug 02 Javascript
动态改变div的z-index属性的简单实例
Aug 08 Javascript
详解JavaScript中的异常处理方法
Jun 16 Javascript
JavaScript如何实现跨域请求
Aug 05 Javascript
jQuery UI制作选项卡(tabs)
Dec 13 Javascript
微信小程序 UI与容器组件总结
Feb 21 Javascript
jQuery简单实现向列表动态添加新元素的方法示例
Dec 25 jQuery
vue 路由页面之间实现用手指进行滑动的方法
Feb 23 Javascript
Vue2 轮播图slide组件实例代码
May 31 Javascript
ES6 Set结构的应用实例分析
Jun 26 Javascript
js页面加载后执行的几种方式小结
Jan 30 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
解密ThinkPHP3.1.2版本之模板继承
2014/06/19 PHP
基于PHP给大家讲解防刷票的一些技巧
2015/11/18 PHP
js字符编码函数区别分析
2011/12/28 Javascript
ASP.NET jQuery 实例8 (动态添加内容到DropDownList)
2012/02/03 Javascript
Jquery和JS用外部变量获取Ajax返回的参数值的方法实例(超简单)
2013/06/17 Javascript
js arguments,jcallee caller用法总结
2013/11/30 Javascript
js 判断js函数、变量是否存在的简单示例代码
2014/03/04 Javascript
js实现遮罩层划出效果是生成div而不是显示
2014/07/29 Javascript
jQuery+PHP实现可编辑表格字段内容并实时保存
2015/10/09 Javascript
JS实时弹出新消息提示框并有提示音响起的实现代码
2016/04/20 Javascript
js 提交form表单和设置form表单请求路径的实现方法
2016/10/25 Javascript
判断颜色是否合法的正则表达式(详解)
2017/05/03 Javascript
微信JSAPI Ticket接口签名详解
2020/06/28 Javascript
基于构造函数的五种继承方法小结
2017/07/27 Javascript
nodejs 图片预览和上传的示例代码
2017/09/30 NodeJs
Vue组件的使用教程详解
2018/01/05 Javascript
jQuery+SpringMVC中的复选框选择与传值实例
2018/01/08 jQuery
vue学习笔记五:在vue项目里面使用引入公共方法详解
2019/04/04 Javascript
非常实用的jQuery代码段集锦【检测浏览器、滚动、复制、淡入淡出等】
2019/08/08 jQuery
React路由鉴权的实现方法
2019/09/05 Javascript
JavaScript面向对象核心知识与概念归纳整理
2020/05/09 Javascript
JavaScript设计模式--桥梁模式引入操作实例分析
2020/05/23 Javascript
vant 自定义 van-dropdown-item的用法
2020/08/05 Javascript
[01:28:44]DOTA2-DPC中国联赛定级赛 RNG vs iG BO3第一场 1月10日
2021/03/11 DOTA
python发送邮件的实例代码(支持html、图片、附件)
2013/03/04 Python
快速实现基于Python的微信聊天机器人示例代码
2017/03/03 Python
Python3解决棋盘覆盖问题的方法示例
2017/12/07 Python
Python爬虫获取整个站点中的所有外部链接代码示例
2017/12/26 Python
python中struct模块之字节型数据的处理方法
2019/08/27 Python
利用python实现.dcm格式图像转为.jpg格式
2020/01/13 Python
Python实现将元组中的元素作为参数传入函数的操作
2020/06/05 Python
类的返射机制中的包及核心类
2016/09/12 面试题
生产车间班组长岗位职责
2014/01/06 职场文书
高三毕业典礼演讲稿
2014/05/13 职场文书
mysql中关键词exists的用法实例详解
2022/06/10 MySQL
CSS link与@import的区别和用法解析
2023/05/07 HTML / CSS