我对Google Chrome浏览器及其表单自动填充功能存在设计问题。如果Chrome记住了一些登录名/密码,它将背景色更改为黄色。
以下是一些屏幕截图:
如何删除该背景或仅禁用此自动填充?
我对Google Chrome浏览器及其表单自动填充功能存在设计问题。如果Chrome记住了一些登录名/密码,它将背景色更改为黄色。
以下是一些屏幕截图:
如何删除该背景或仅禁用此自动填充?
Answers:
将“白色”更改为所需的任何颜色。
input:-webkit-autofill {
-webkit-box-shadow: 0 0 0 1000px white inset !important;
}
box-shadow: inset 0 0 0 1000px white !important;
如果你们想要透明的输入字段,则可以使用过渡和过渡延迟。
input:-webkit-autofill,
input:-webkit-autofill:hover,
input:-webkit-autofill:focus,
input:-webkit-autofill:active {
-webkit-transition-delay: 9999s;
-webkit-transition: color 9999s ease-out, background-color 9999s ease-out;
}
-webkit-box-shadow
。还消除了为此声明指定颜色值的需要:默认值仍然适用。
解决方案在这里:
if (navigator.userAgent.toLowerCase().indexOf("chrome") >= 0) {
$(window).load(function(){
$('input:-webkit-autofill').each(function(){
var text = $(this).val();
var name = $(this).attr('name');
$(this).after(this.outerHTML).remove();
$('input[name=' + name + ']').val(text);
});
});
}
在Firefox中,您可以使用autocomplete =“ off / on”属性禁用表单上的所有自动完成功能。同样,可以使用相同的属性设置各个项目的自动完成功能。
<form autocomplete="off" method=".." action="..">
<input type="text" name="textboxname" autocomplete="off">
您可以在Chrome中对其进行测试,因为它应该可以工作。
autocomplete="off"
这些天无法转弯。
如果要保留自动填充以及输入元素附带的任何数据,附加的处理程序和功能,请尝试以下脚本:
if (navigator.userAgent.toLowerCase().indexOf("chrome") >= 0)
{
var _interval = window.setInterval(function ()
{
var autofills = $('input:-webkit-autofill');
if (autofills.length > 0)
{
window.clearInterval(_interval); // stop polling
autofills.each(function()
{
var clone = $(this).clone(true, true);
$(this).after(clone).remove();
});
}
}, 20);
}
它将进行轮询,直到找到任何自动填充元素,然后将其克隆(包括数据和事件),然后将其插入DOM中的相同位置并删除原始元素。一旦发现要克隆的副本,它将停止轮询,因为自动填充有时在页面加载后需要一秒钟。这是先前代码示例的变体,但功能更强大,并保持了尽可能多的功能。
(确认可以在Chrome,Firefox和IE 8中使用。)
以下CSS删除了黄色背景色,并将其替换为您选择的背景色。它不会禁用自动填充功能,并且不需要jQuery或Javascript黑客。
input:-webkit-autofill {
-webkit-box-shadow:0 0 0 50px white inset; /* Change the color to your own background color */
-webkit-text-fill-color: #333;
}
input:-webkit-autofill:focus {
-webkit-box-shadow: /*your box-shadow*/,0 0 0 50px white inset;
-webkit-text-fill-color: #333;
}
复制的解决方案来自: 覆盖浏览器表单填充并使用HTML / CSS突出显示输入
答案的组合对我有用
<style>
input:-webkit-autofill,
input:-webkit-autofill:hover,
input:-webkit-autofill:focus,
input:-webkit-autofill:active {
-webkit-box-shadow: 0 0 0px 1000px #373e4a inset !important;
-webkit-text-fill-color: white !important;
}
</style>
这是Jason's的MooTools版本。也可以在Safari中修复它。
window.addEvent('domready',function() {
$('username').focus();
if ((navigator.userAgent.toLowerCase().indexOf(\"chrome\") >= 0)||(navigator.userAgent.toLowerCase().indexOf(\"safari\") >= 0))
{
var _interval = window.setInterval(function ()
{
var autofills = $$('input:-webkit-autofill');
if (autofills.length > 0)
{
window.clearInterval(_interval); // stop polling
autofills.each(function(el)
{
var clone = el.clone(true,true).inject(el,'after');;
el.dispose();
});
}
}, 20);
}
});
这可以解决Safari和Chrome上的问题
if(navigator.userAgent.toLowerCase().indexOf("chrome") >= 0 || navigator.userAgent.toLowerCase().indexOf("safari") >= 0){
window.setInterval(function(){
$('input:-webkit-autofill').each(function(){
var clone = $(this).clone(true, true);
$(this).after(clone).remove();
});
}, 20);
}
在您的标签中,只需插入这一小段代码。
autocomplete="off"
但是,请勿将其放在用户名/电子邮件/ idname字段中,因为如果您仍在使用自动完成功能,它将在此字段中禁用它。但是我找到了解决方法,只需将代码放在密码输入标签中,因为无论如何您永远不会自动完成密码。此修复程序应删除电子邮件/用户名字段上的颜色强制和行自动完成功能,并允许您避免使用Jquery或javascript之类的大型黑客程序。
如果您想完全摆脱它,我已经调整了前面的答案中的代码,因此它也可以在悬停,活动和集中进行工作:
input:-webkit-autofill, input:-webkit-autofill:hover, input:-webkit-autofill:active, input:-webkit-autofill:focus {
-webkit-box-shadow: 0 0 0 1000px white inset;
}
!important
是必要的,但谢谢,它帮助了我很多。
那该解决方案呢:
if ($.browser.webkit) {
$(function() {
var inputs = $('input:not(.auto-complete-on)');
inputs.attr('autocomplete', 'off');
setTimeout(function() {
inputs.attr('autocomplete', 'on');
}, 100);
});
}
它将关闭自动完成和自动填充(因此黄色背景消失),等待100毫秒,然后将自动完成功能转回不进行自动填充的状态。
如果您有需要自动填充的输入,请给它们提供auto-complete-on
CSS类。
没有一个解决方案对我有用,用户名和密码输入仍在填充中,并且背景为黄色。
所以我问自己:“ Chrome如何确定在给定页面上应自动填充的内容?”
“它会查找输入ID,输入名称吗?表单ID?表单动作?”
通过对用户名和密码输入的实验,发现只有两种方法会导致Chrome无法找到应自动填充的字段:
1)将密码输入置于文本输入之前。2)给他们相同的名称和ID ...或不给名称和ID。
页面加载后,可以使用javascript更改页面上输入的顺序,也可以动态为其提供名称和ID。
而且Chrome不知道是什么原因...自动完成功能不起作用。
疯狂破解,我知道。但这对我有用。
Chrome 34.0.1847.116,OSX 10.7.5
我为密码字段解决了此问题,如下所示:
将输入类型设置为文本而不是密码
使用jQuery删除输入文本值
使用jQuery将输入类型转换为密码
<input type="text" class="remove-autofill">
$('.js-remove-autofill').val('');
$('.js-remove-autofill').attr('type', 'password');
Arjans解决方案的更新。尝试更改值时,它不会允许您。这对我来说很好。当您专注于输入时,它将变为黄色。它足够接近。
$(document).ready(function (){
if(navigator.userAgent.toLowerCase().indexOf("chrome") >= 0 || navigator.userAgent.toLowerCase().indexOf("safari") >= 0){
var id = window.setInterval(function(){
$('input:-webkit-autofill').each(function(){
var clone = $(this).clone(true, true);
$(this).after(clone).remove();
});
}, 20);
$('input:-webkit-autofill').focus(function(){window.clearInterval(id);});
}
});
$('input:-webkit-autofill').focus(function(){window.clearInterval(id);});
试试这个代码:
$(function(){
setTimeout(function(){
$('[name=user_password]').attr('type', 'password');
}, 1000);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script>
<input name="user_password" type="password">
票价namrouti答案是正确的。但是,当选择输入时,背景仍然变为黄色。添加!important
修复问题。如果您还想要textarea
并且select
具有相同的行为,只需添加textarea:-webkit-autofill, select:-webkit-autofill
仅输入
input:-webkit-autofill {
background-color: rgb(250, 255, 189) !important;
}
输入,选择,文本区域
input:-webkit-autofill, textarea:-webkit-autofill, select:-webkit-autofill {
background-color: rgb(250, 255, 189) !important;
}
添加autocomplete="off"
不会削减它。
将输入类型属性更改为type="search"
。
Google不会将自动填充应用于具有搜索类型的输入。
希望这可以节省您一些时间。
最终的解决方案:
$(document).ready(function(){
var contadorInterval = 0;
if (navigator.userAgent.toLowerCase().indexOf("chrome") >= 0)
{
var _interval = window.setInterval(function ()
{
var autofills = $('input:-webkit-autofill');
if (autofills.length > 0)
{
window.clearInterval(_interval); // stop polling
autofills.each(function()
{
var clone = $(this).clone(true, true);
$(this).after(clone).remove();
setTimeout(function(){
// $("#User").val('');
$("#Password").val('');
},10);
});
}
contadorInterval++;
if(contadorInterval > 50) window.clearInterval(_interval); // stop polling
}, 20);
}else{
setTimeout(function(){
// $("#User").val('');
$("#Password").val('');
},100);
}
});
<input type="text" name="foo" autocomplete="off" />
相似问题:链接