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 相关文章推荐
javascript 控制 html元素 显示/隐藏实现代码
Sep 01 Javascript
在js中单选框和复选框获取值的方式
Nov 06 Javascript
Javascript 面向对象之重载
May 04 Javascript
Node.js中的流(Stream)介绍
Mar 30 Javascript
jQuery实现带有动画效果的回到顶部和底部代码
Nov 04 Javascript
解决微信浏览器Javascript无法使用window.location.reload()刷新页面
Jun 21 Javascript
利用jquery实现下拉框的禁用与启用
Dec 07 Javascript
JS 实现 ajax 异步浏览器兼容问题
Jan 21 Javascript
原生js实现类似fullpage的单页/全屏滚动
Jan 22 Javascript
原生js实现鼠标跟随效果
Feb 28 Javascript
vue实现几秒后跳转新页面代码
Sep 09 Javascript
Javascript使用integrity属性进行安全验证
Nov 07 Javascript
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
Apache, PHP在Windows 9x/NT下的安装与配置 (一)
2006/10/09 PHP
一些PHP写的小东西
2006/12/06 PHP
基于MySQL到MongoDB简易对照表的详解
2013/06/03 PHP
php遍历目录与文件夹的多种方法详解
2013/11/14 PHP
php中__destruct与register_shutdown_function执行的先后顺序问题
2014/10/17 PHP
PHP扩展迁移为PHP7扩展兼容性问题记录
2016/02/15 PHP
PHP实现的曲线统计图表示例
2016/11/10 PHP
PHP实现基于栈的后缀表达式求值功能
2017/11/10 PHP
PHP count_chars()函数讲解
2019/02/14 PHP
Laravel find in set排序实例
2019/10/09 PHP
Add a Picture to a Microsoft Word Document
2007/06/15 Javascript
随机显示经典句子或诗歌的javascript脚本
2007/08/04 Javascript
浏览器常用高宽的jquery插件
2011/02/24 Javascript
鼠标滑上去后图片放大浮出效果的js代码
2011/05/28 Javascript
javascript跨域的4种方法和原理详解
2014/04/08 Javascript
JS获取及设置TextArea或input文本框选择文本位置的方法
2015/03/24 Javascript
Javascript优化技巧之短路表达式详细介绍
2015/03/27 Javascript
jquery实现右键菜单插件
2015/03/29 Javascript
浅谈JavaScript中的string拥有方法的原因
2015/08/28 Javascript
Javascript设计模式之装饰者模式详解篇
2017/01/17 Javascript
JS自定义函数实现时间戳转换成date的方法示例
2017/08/27 Javascript
浅谈jquery中ajax跨域提交的时候会有2次请求的问题
2017/11/10 jQuery
浅析Visual Studio Code断点调试Vue
2018/02/27 Javascript
JavaScript继承定义与用法实践分析
2018/05/28 Javascript
vue的keep-alive中使用EventBus的方法
2019/04/23 Javascript
vue ajax 拦截原理与实现方法示例
2019/11/29 Javascript
Python实现读取TXT文件数据并存进内置数据库SQLite3的方法
2017/08/08 Python
Python使用tkinter库实现文本显示用户输入功能示例
2018/05/30 Python
护理自荐信
2013/10/22 职场文书
教师通用专业自荐书范文
2014/02/11 职场文书
出生证明公证书
2014/04/09 职场文书
李开复演讲稿
2014/05/24 职场文书
求职自我评价怎么写
2015/03/09 职场文书
诚信高考倡议书
2019/06/24 职场文书
2019自荐信范文集锦!
2019/07/03 职场文书
七个Python必备的GUI库
2021/04/27 Python