《转》'autocomplete="off"'在Chrome中不起作用解决方案

最近项目中遇到一个令人头疼的问题,查阅各种资料,尝试各种方法,最终得以解决;哎···下面就说说这心酸的历程吧。

大家都知道autocomplete属性是表单字段中的HTML5新属性,该属性有两种状态值,分别为"on" 和 "off",该属性可省略:省略属性值后默认值为"on",也可以省略属性名,直接写入关键字on或off。

网站项目中,有登录和注册的弹框,在除chrome的浏览器中一切都ok,一旦在谷歌浏览器中,问题来了:
首先从登录弹框中登陆成功,chrome会弹出是否保存密码的提示框,点击保存密码按钮,

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


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

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

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

[html] view plain copy

print?

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

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

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

1 修改value值(目前已失效,随着chrome版本的升级,现今版本已不再能获取到value值了,所以无法对其进行操作,貌似chrome自动填充的表单的value值是存在 DocumentFragment里的div中的,暂不知道怎么去处理,等待大神告知)

[javascript] view plain copy

print?

  1. if(navigator.userAgent.toLowerCase().indexOf("chrome") != -1){
  2. var inputers = document.getElementsByTagName("input");
  3. for(var i=0;i<inputers.length;i++){
  4. if((inputers[i].type !== "submit") && (inputers[i].type !== "password")){
  5. inputers[i].value = " ";
  6. }
  7. }
  8. setTimeout(function(){
  9. for(var i=0;i<inputers.length;i++){
  10. if(inputers[i].type !== "submit"){
  11. inputers[i].value = "";
  12. }
  13. }
  14. },100)
  15. }

2 修改disabled属性

[javascript] view plain copy

print?

  1. if(navigator.userAgent.toLowerCase().indexOf("chrome") != -1){
  2. var inputers = document.getElementsByTagName("input");
  3. for(var i=0;i<inputers.length;i++){
  4. if((inputers[i].type !== "submit") && (inputers[i].type !== "password")){
  5. inputers[i].disabled= true;
  6. }
  7. }
  8. setTimeout(function(){
  9. for(var i=0;i<inputers.length;i++){
  10. if(inputers[i].type !== "submit"){
  11. inputers[i].disabled= false;
  12. }
  13. }
  14. },100)
  15. }

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

[javascript] view plain copy

print?

  1. if(navigator.userAgent.toLowerCase().indexOf("chrome") != -1){
  2. var inputers = document.getElementsByTagName("input");
  3. for(var i=0;i<inputers.length;i++){
  4. if((inputers[i].type !== "submit") && (inputers[i].type !== "password")){
  5. var input = inputers[i];
  6. var inputName = inputers[i].name;
  7. var inputid = inputers[i].id;
  8. inputers[i].removeAttribute("name");
  9. inputers[i].removeAttribute("id");
  10. setTimeout(function(){
  11. input.setAttribute("name",inputName);
  12. input.setAttribute("id",inputid);
  13. },1)
  14. }
  15. }
  16. }

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

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

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

5 修改readonly属性

[javascript] view plain copy

print?

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

参考来源:

http://stackoverflow.com/questions/15738259/disabling-chrome-autofill/29582380#29582380

《转》'autocomplete="off"'在Chrome中不起作用解决方案

时间: 2024-10-13 07:17:11

《转》'autocomplete="off"'在Chrome中不起作用解决方案的相关文章

&#39;autocomplete=&quot;off&quot;&#39;在Chrome 中不起作用

加油_linda 'autocomplete="off"'在Chrome 中不起作用 我们在表单输入框中输入信息,提交表单后,当我们再次进入表单页面,双击输入框时,会出现之前提交的信息,这是因为浏览器一般会记录下输入框之前提交表单的信息.这就是这篇文章要讲的autocomplete. AutoComplete控件就是指用户在文本框输入前几个字母或是汉子的时候,该控件就能从存放数据的文本或是数据库里将所有以这些字母开头的数据提升给用户,供用户选择,提供方便. 输入框(input,text

Chrome 中的 JavaScript 断点设置和调试技巧

你是怎么调试 JavaScript 程序的?最原始的方法是用 alert() 在页面上打印内容,稍微改进一点的方法是用 console.log() 在 JavaScript 控制台上输出内容.嗯~,用这两种土办法确实解决了很多小型 JavaScript 脚本的调试问题.不过放着 Chrome 中功能越发强大的开发者工具不用实在太可惜了.本文主要介绍其中的 JavaScript 断点设置和调试功能,也就是其中的 Sources Panel(以前叫 Scripts).如果你精通 Eclipse 中的

去除chrome中input的黄底色

在chrome中,input框总是出现黄底色,使用!important;也不好使,很烦人,下面方法可以解决        input:-webkit-autofill {             -webkit-box-shadow: 0 0 0 1000px white inset;         }         input[type=text]:focus, input[type=password]:focus{             -webkit-box-shadow: 0 0 

在 Chrome 中调试 Android 浏览器

最近需要使用 Chrome Developer Tools 调试 Android 浏览器,但是官方指南并不是很好使,经过一番折腾,终于调试成功了,在此把经验分享给需要的朋友. Chrome Developer Tools 是前端工程师必不可少的工具,它极大的提高了我们的开发调试效率.在移动开发的时代,我们也必须掌握手机浏览器在 Chrome 中调试的方法.本篇仅介绍 Android. 环境 不同的环境可能存在一些差异,我的环境是: Windows 10 电脑 Chrome 50.0.2661.7

Chrome中安装flashplayer_16_plugin_debug.exe

Chrome中第一步: 地址栏中输入:   chrome://plugins/ 找到: Adobe Flash Player (2 files) - 版本: 16,0,0,305 Shockwave Flash 16.0 r0 名字: Shockwave Flash 说明: Shockwave Flash 16.0 r0 版本: 16.0.0.305 位置: C:\Users\ygzhang\AppData\Local\Google\Chrome\Application\40.0.2214.11

Chrome中显示桌面通知

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 <html> <head>     <title>Google 桌面通知</title> </head> <body>     <button id="btn">         显示桌面通知</button>

Chrome 中调试Javascript

使用Chrome打开我们要调试的页面,然后使用快捷键F12打开开发者工具,当然,你也可以在工具菜单中找到.Chrome开发者工具如图: Elements选项卡是对界面上的元素进行选择的,我们要进行调试的代码在Sources 选项卡中. 打开Sources选项卡,点击左侧的小箭头打开所有资源,选择我们的页面: 我们要调试这个页面的代码,所以就打开这个页面,然后点击行号可以添加断点: 点击界面中的按钮,我们能够捕获到刚添加的断点: 添加监视的方法和在IE中的方法是一样的:选中变量,在变量上面单击,选

Chrome 中的 JavaScript 断点设置和调试技巧 (转载)

原文地址:http://han.guokai.blog.163.com/blog/static/136718271201321402514114/ 你是怎么调试 JavaScript 程序的?最原始的方法是用 alert() 在页面上打印内容,稍微改进一点的方法是用 console.log() 在 JavaScript 控制台上输出内容.嗯~,用这两种土办法确实解决了很多小型 JavaScript 脚本的调试问题.不过放着 Chrome 中功能越发强大的开发者工具不用实在太可惜了.本文主要介绍其

ie、firefox、chrome中关于style=&quot;display:block&quot; 引发的页面布局错乱的解决办法

ie.firefox.chrome中关于style="display:block" 引发的页面布局错乱的解决办法: table中tr 添加style="display:block" 导致页面布局错乱 对table中tr 不显示时,添加style="display:none",ie.chrome.firefox等都没有问题.但是如果想要显示某个tr,就不能使用style="display:block"了,因为,在ie下,可以正常