经过长时间的努力,我终于找到了在每种浏览器中清除自动填充样式的唯一方法:

$('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/

10-11 20:06