经过长时间的努力,我终于找到了在每种浏览器中清除自动填充样式的唯一方法:
$('input').each(function() {
var $this = $(this);
$this.after($this.clone()).remove();
});
问题是,它不能在
load
中运行,因为字段的自动填充在事实发生后的某个时间发生。现在,我在load
之后的100毫秒超时中运行它:// Kill autofill styles
$(window).on({
load: function() {
setTimeout(function() {
$('.text').each(function() {
var $this = $(this);
$this.after($this.clone()).remove();
});
}, 100);
}
});
即使在最慢的系统上,这似乎也是安全的,但这确实不是很优雅。是否可以进行某种可靠的事件或检查以查看自动填充是否完成?
编辑:这是自动填充。
autofill http://dl.dropbox.com/u/2463964/autofill.png
最佳答案
与此相关的http://code.google.com/p/chromium/issues/detail?id=46543#c22上存在一个错误,看来(最终)有可能最终可以使用!important
选择器覆盖默认样式,这将是最优雅的解决方案。该代码将是这样的:
input {
background-color: #FFF !important;
}
就目前而言,尽管该错误仍未解决,并且看来您的黑客解决方案是Chrome的唯一解决方案,但是a)Chrome的解决方案不需要
setTimeout
; b)Firefox似乎尊重!important
标志或某种具有高优先级的CSS选择器,如Override browser form-filling and input highlighting with HTML/CSS中所述。这有帮助吗?关于javascript - 检测自动填充的时间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9752285/