Chrome 自动填充的表单是淡黄色的背景怎么办!

chrome浏览器自动填充表单的黄色背景高亮(#FAFFBD)一直困扰着我,我之前没想着理它,可是最近一个登陆框,需要用到图标,于是我草率的直接设置在input元素里面,结果问题就来了,很难看很难看,因此还是总结一下。

这个问题,在2008年的时候就已经存在了,隔了好几年了,在chromium上面可以找到 Issue 46543,但是官方好像没有理这个问题,英文没怎么看懂,谁理解的,可以给大家分享一下。

思路一: 打补丁

Webkit内核的浏览器有一个-webkit-autofill私有属性,

通过审查元素可以看到这是由于chrome会默认给自动填充的input表单加上input:-webkit-autofill私有属性,然后对其赋予以下样式:

12345
input:-webkit-autofill, textarea:-webkit-autofill, select:-webkit-autofill {   padding: 0px; border: 0px; outline: 0px; font-weight: inherit; font-style: inherit; font-family: inherit; vertical-align: baseline; color: rgb(102, 153, 204);">rgb(250, 255, 189); /* #FAFFBD; */  background-image: none;  color: rgb(0, 0, 0);}

因此我们就会想到覆盖这个样式,代码如下,但是依然不能覆盖原有的背景、字体颜色。需要注意的是:加 !important 依然不能覆盖原有的背景、字体颜色,除了chrome默认定义的background-colorbackground-imagecolor不能用 !important 提升其优先级以外,其他的属性均可使用!important提升其优先级。

123456789101112
input:-webkit-autofill, textarea:-webkit-autofill, select:-webkit-autofill {   padding: 0px; border: 0px; outline: 0px; font-weight: inherit; font-style: inherit; font-family: inherit; vertical-align: baseline;">#FFFFFF;  background-image: none;  color: #333;  /* -webkit-text-fill-color: red; //这个私有属性是有效的 */}input:-webkit-autofill:hover {  /* style code */}input:-webkit-autofill:focus {  /* style code */}

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

解决办法:

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

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

解决办法:

12345678910111213
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);}

下面的js不是太靠谱

12345678
if (navigator.userAgent.toLowerCase().indexOf("chrome") >= 0) {  $(window).load(function(){    $(‘input:-webkit-autofill‘).each(function(){      var clone = $(this).clone(true, true);      $(this).after(clone).remove();    });  });}

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

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

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

网上大部分文章是使用Cookie实现记住用户名、密码。不管是在前端,还是后端都可以实现。本文不对Cookie存储展开讨论。可自行谷歌

原文:http://zcoder.cn/2015/01/14/front-end/chrome-autofill/

时间: 2024-10-10 22:35:31

Chrome 自动填充的表单是淡黄色的背景怎么办!的相关文章

Chrome 自动填充的表单是淡黄色的背景,有方法自定义吗

input:-webkit-autofill { -webkit-box-shadow: 0 0 0px 1000px white inset; }

解决浏览器自动填充form表单账号和密码输入框的问题

用js去清除input的value值是无效的,因为浏览器填充账号密码的动作是在js执行完之后发生的. 浏览器会自动寻找第一个输入框和最后一个密码框自动填充,我们可以给它添加一些假的密码框,让其无法自动填充. 解决办法: 在自己的input框前后添加假的<input type="password"style="width:0;height:0;float:left;visibility:hidden"/> <input type="pass

表单 对数据库字段自动加密解密表单提交(THINKPHP3.2)

1.config配置变量 'MODEL_FIELD_FLAG' => TRUE,//表单加密开关 'MODEL_FIELD_NAME_PRE' => 'mlm_',//表单加密前缀 'MODEL_FIELD_EMCODE' => 'md5',//加密方式 'MODEL_FIELD_EMCODE_KEY' => '[email protected]'//加密key 2.控制器层 $model  继承基础类 BaseModel BaseRelationModel 任意一个的自定义模型

使用jQuery将数据快速填充到表单

作为WEB程序员,我们经常与表单打交道.例如在通过表单编辑一些数据时,读取后台数据并填充到表单是一件繁琐的事情,尤其是表单域很多而且包含radio,checkbox,select等的时候.你一定见过下面的代码: <select name="area"> <option value="nankai" <?php if($area=='nankai') echo 'selected="selected"';?>>南

jquery自动将form表单封装成json的具体实现

前端页面:<span style="font-size:14px;"> <form action="" method="post" id="tf"> <table width="100%" cellspacing="0" cellpadding="0" border="0"> <tr> <th&

Java 创建、填充PDF表单域

表单域,可以按用途分为多种不同的类型,常见的有文本框.多行文本框.密码框.隐藏域.复选框.单选框和下拉选择框等,目的是用于采集用户的输入或选择的数据.下面的示例中,将分享通过Java编程在PDF中添加以及填充表单域的方法.这里填充表单域可分为2种情况,一种是在创建表单域时填充,一种是加载已经创建好表单域的文档进行填充.此外,对于已经创建表单域并填写好的文档,也可以设置只读,防止修改.编辑. 要点概括: 1.创建表单域 2.填充表单域 3.设置表单域只读 工具:Free Spire.PDF for

【转】Java创建填充pdf表单域

表单域,可以按用途分为多种不同的类型,常见的有文本框.多行文本框.密码框.隐藏域.复选框.单选框和下拉选择框等,目的是用于采集用户的输入或选择的数据.下面的示例中,将分享通过Java编程在PDF中添加以及填充表单域的方法.这里填充表单域可分为2种情况,一种是在创建表单域时填充,一种是加载已经创建好表单域的文档进行填充.此外,对于已经创建表单域并填写好的文档,也可以设置只读,防止修改.编辑. 要点概括: 1.创建表单域 2.填充表单域 3.设置表单域只读 工具: Free Spire.PDF fo

[Axure RP] – 鼠标滑入按钮时自动下拉表单的设计示例

转:http://blog.qdac.cc/?p=2197 Axure RP 是个好东东呀,大大方便了程序员与客户之间的前期调研时的交流.不过有一些控制并没有鼠标移入和移出的操作,比如 HTML 按钮,为了模拟鼠标移入或移出时动态显示下拉列表啥的效果,我们使用了动态面板来做处理.当然了,条条大路通罗马,这条大路也许不是最佳的,仅供参考. 1.拖一个动态面板到编辑区: 2.双击添加一个状态,我们命名为“正常”,以代表鼠标没有滑过时的状态: 3.双击“正常”状态,进入正常状态编辑页面: 4.在动态面

puppeteer 填充基础表单

main.js const pptr = require("puppeteer"); const gotoUrl = "http://127.0.0.1:5500/index.html"; (async () => { const browser = await pptr.launch({ headless: false, slowMo: 250, }); const page = await browser.newPage(); page.on("