chrome浏览器当表单自动填充时如何去除浏览器自动添加的默认样式


Posted in Javascript onOctober 09, 2015

一、发现该问题的原因-是在写账号登录页面时,input表单添加了背景图片,当自动填充,搓搓的一坨淡黄色背景出来。

这个原因是我草率的直接设置在input元素里面,结果问题就来了。所以如果把这个图标放在input表单外面,就不会出现这个问题。

二、表单自动填充会添加浏览器默认样式怎么处理和避免

第二张图,就是表单自动填充后,chrome会默认给自动填充的input表单加上input:-webkit-autofill私有属性

input:-webkit-autofill, textarea:-webkit-autofill, select:-webkit-autofill {
 background-color: rgb(250, 255, 189); /* #FAFFBD; */
 background-image: none;
 color: rgb(0, 0, 0);
}

看到这里添加上这段代码,我会想到使用样式覆盖的方法解决。我完全可以使用!important去提升优先级。但是有个问题,加!important不能覆盖原有的背景、字体颜色,除了chrome默认定义background-color,background-images,color不能使用

!important提升优先级,其他属性均可使用它来提升优先级。

input:-webkit-autofill, textarea:-webkit-autofill, select:-webkit-autofill {
 background-color: #FFFFFF;
 background-image: none;
 color: #333;
 /* -webkit-text-fill-color: red; //这个私有属性是有效的 */
}
input:-webkit-autofill:hover {
 /* style code */
}
input:-webkit-autofill:focus {
 /* style code */
}

思路有两个,1、通过打补丁,修复bug。2、关闭浏览器自带填充表单功能

情景一:input文本框是纯色背景的

解决办法:

input:-webkit-autofill {
 -webkit-box-shadow: 0 0 0px 1000px white inset;
 -webkit-text-fill-color: #333;
}

情景二:input文本框是使用图片背景的

解决办法:

if (navigator.userAgent.toLowerCase().indexOf("chrome") >= 0)
{
 var _interval = window.setInterval(function () {
 var autofills = $('input:-webkit-autofill');
 if (autofills.length > 0) {
  window.clearInterval(_interval); // 停止轮询
  autofills.each(function() {
  var clone = $(this).clone(true, true);
  $(this).after(clone).remove();
  });
 }
 }, 20);
}

先判断是否是chrome,如果是,则遍历input:-webkit-autofill元素,再通过取值,附加,移除等操作来实现。 这个方法没效果!!

所以最后我是不使用图标作为input表单的背景图片,而是多写一个标签,把图标拿到表单外面来。

思路二: 关闭浏览器自带填充表单功能

设置表单属性 autocomplete="off/on" 关闭自动填充表单,自己实现记住密码

<!-- 对整个表单设置 -->
<form autocomplete="off" method=".." action="..">
<!-- 或对单一元素设置 -->
<input type="text" name="textboxname" autocomplete="off">

如图:未自动填充前,此时这个邮箱的小图标是inpu表单的背景图片

chrome浏览器当表单自动填充时如何去除浏览器自动添加的默认样式

如图:填充后,邮箱小图标被浏览器默认样式覆盖掉

chrome浏览器当表单自动填充时如何去除浏览器自动添加的默认样式

最后,

如果不想多去处理chrome浏览器下表单自动填充出现的添加默认样式,那就把这个小小的图标放到表单外面吧,我这个因为是input框

只有border-bottom,如果这个input框有边框,那么可能需要使用一个div的边框的来假装成input框的边框,然后input框弄成是没有边框的。

像这样的input框

chrome浏览器当表单自动填充时如何去除浏览器自动添加的默认样式

通过以上方法成功帮朋友解决浏览器自动添加默认样式问题,小伙伴们可以放心参考此文。

Javascript 相关文章推荐
JS array 数组详解
Mar 22 Javascript
jQuery EasyUI 中文API Button使用实例
Apr 14 Javascript
浅谈Javascript中匀速运动的停止条件
Dec 19 Javascript
jQuery中siblings()方法用法实例
Jan 08 Javascript
Angularjs制作简单的路由功能demo
Apr 14 Javascript
JS动态改变浏览器标题的方法
Apr 06 Javascript
详解vue2父组件传递props异步数据到子组件的问题
Jun 29 Javascript
基于ES6作用域和解构赋值详解
Nov 03 Javascript
详解js正则表达式验证时间格式xxxx-xx-xx形式
Feb 09 Javascript
vue单页开发父子组件传值思路详解
May 18 Javascript
使用vue-cli脚手架工具搭建vue-webpack项目
Jan 14 Javascript
Vue的生命周期一起来看看
Feb 24 Vue.js
PHP+MySQL+jQuery随意拖动层并即时保存拖动位置实例讲解
Oct 09 #Javascript
不依赖Flash和任何JS库实现文本复制与剪切附源码下载
Oct 09 #Javascript
jQuery+PHP实现可编辑表格字段内容并实时保存
Oct 09 #Javascript
jQuery往返城市和日期查询实例讲解
Oct 09 #Javascript
JS实现黑色风格的网页TAB选项卡效果代码
Oct 09 #Javascript
jQuery实现连续动画效果实例分析
Oct 09 #Javascript
jQuery控制DIV层实现由大到小,由远及近动画变化效果
Oct 09 #Javascript
You might like
php之对抗Web扫描器的脚本技巧
2008/10/01 PHP
收集的二十一个实用便利的PHP函数代码
2010/04/22 PHP
PHP为表单获取的URL 地址预设 http 字符串函数代码
2010/05/26 PHP
ThinkPHP模板IF标签用法详解
2014/07/01 PHP
PHP多进程通信-消息队列使用
2019/03/08 PHP
语义化 H1 标签
2008/01/14 Javascript
Javascript计算两个marker之间的距离(Google Map V3)
2013/04/26 Javascript
Jquery创建一个层当鼠标移动到层上面不消失效果
2013/12/12 Javascript
js代码实现的加入收藏效果并兼容主流浏览器
2014/06/23 Javascript
jquery实现人性化的有选择性禁用鼠标右键
2014/06/30 Javascript
JavaScript截取字符串的2个函数介绍
2014/08/27 Javascript
基于jquery实现的仿优酷图片轮播特效代码
2016/01/13 Javascript
jQuery 3 中的新增功能汇总介绍
2016/06/12 Javascript
简单实现js间歇或无缝滚动效果
2016/06/29 Javascript
AngularJS使用指令增强标准表单元素功能
2016/07/01 Javascript
Angularjs中controller的三种写法分享
2016/09/21 Javascript
JS中的作用域链
2017/03/01 Javascript
在node中如何使用 ES6
2017/04/22 Javascript
Node.js搭建小程序后台服务
2018/01/03 Javascript
angular-tree-component的使用详解
2018/07/30 Javascript
微信小程序列表中item左滑删除功能
2018/11/07 Javascript
Vue包大小优化的实现(从1.72M到94K)
2021/02/18 Vue.js
[04:20]DOTA2-DPC中国联赛 正赛 VG vs LBZS 选手采访 1月19日
2021/03/11 DOTA
pydev使用wxpython找不到路径的解决方法
2013/02/10 Python
Django应用程序中如何发送电子邮件详解
2017/02/04 Python
pygame实现雷电游戏雏形开发
2018/11/20 Python
pycharm在调试python时执行其他语句的方法
2018/11/29 Python
Python QQBot库的QQ聊天机器人
2019/06/19 Python
PageFactory设计模式基于python实现
2020/04/14 Python
PyCharm vs VSCode,作为python开发者,你更倾向哪种IDE呢?
2020/08/17 Python
详解Django自定义图片和文件上传路径(upload_to)的2种方式
2020/12/01 Python
Exoticca英国:以最优惠的价格提供豪华异国情调旅行
2018/10/18 全球购物
vue路由实现登录拦截
2021/03/24 Vue.js
英语专业个人求职自荐信
2013/09/21 职场文书
小学教师暑期培训方案
2014/08/28 职场文书
Redis基本数据类型String常用操作命令
2022/06/01 Redis