1026 Stimmen

Entfernen der Hintergrundfarbe von Eingaben für die Chrome-Autovervollständigung?

In einem Formular, an dem ich gerade arbeite, füllt Chrome die Felder für E-Mail und Kennwort automatisch aus. Das ist in Ordnung, aber Chrome ändert die Hintergrundfarbe in ein helles Gelb.

Das Design, an dem ich arbeite, verwendet hellen Text auf dunklem Hintergrund, so dass dies das Aussehen des Formulars wirklich durcheinander bringt - ich habe starke gelbe Kästchen und fast unsichtbaren weißen Text. Sobald das Feld fokussiert ist, werden die Felder wieder normal angezeigt.

Ist es möglich, Chrome davon abzuhalten, die Farbe dieser Felder zu ändern?

4 Stimmen

Die Tatsache, dass diese Frage überhaupt gestellt werden muss, zeigt, wie weltfremd Google ist.

4voto

andi Punkte 21

Danke Benjamin!

Die Mootools-Lösung ist ein wenig komplizierter, da ich keine Felder mit Hilfe von $('input:-webkit-autofill') Ich habe also das Folgende verwendet:

if (navigator.userAgent.toLowerCase().indexOf("chrome") >= 0) {

  window.addEvent('load', function() {
    setTimeout(clearWebkitBg, 20);
    var elems = getElems();
    for (var i = 0; i < elems.length; i++) {
      $(elems[i]).addEvent('blur', clearWebkitBg);
    }
  });
}
function clearWebkitBg () {
  var elems = getElems();
  for (var i = 0; i < elems.length; i++) {
    var oldInput = $(elems[i]);
    var newInput = new Element('input', {
      'name': oldInput.get('name'),
      'id': oldInput.get('id'),
      'type': oldInput.get('type'),
      'class': oldInput.get('class'),
      'value': oldInput.get('value')
    });
    var container = oldInput.getParent();
    oldInput.destroy();
    container.adopt(newInput);
  }
}
function getElems() {
  return ['pass', 'login']; // ids
}

3voto

FlorianB Punkte 1967

Leider hat keine der oben genannten Lösungen bei mir im Jahr 2016 (ein paar Jahre nach der Frage) funktioniert.

Hier ist also die aggressive Lösung, die ich verwende:

function remake(e){
    var val = e.value;
    var id = e.id;
    e.outerHTML = e.outerHTML;
    document.getElementById(id).value = val;

    return true;
}

<input id=MustHaveAnId type=text name=email autocomplete=on onblur="remake(this)">

Im Grunde genommen wird das Tag gelöscht, während der Wert gespeichert wird, und dann neu erstellt und der Wert zurückgesetzt.

0 Stimmen

Die Lösung von fareed namrouti funktioniert bei mir unter Chrome 51.0.2704.106 / OSX 10.11.5.

3voto

nh-labs Punkte 631

Und das hat bei mir funktioniert (Chrome 76 getestet)

input:-internal-autofill-selected {
    background-color: transparent;
}

3voto

Das funktioniert bei mir.

.input:-webkit-autofill {transition: background-color 5000s ease-in-out 0s;}

3 Stimmen

Das funktioniert, aber Sie brauchen die Lockerung oder Verzögerung nicht zu beachten: .input:-webkit-autofill {transition: background-color 5000s} funktioniert auch. Alternativ, da der Grund, dass dies funktioniert, ist, dass es nur verlangsamt den Übergang, so dass es nicht bemerkbar ist, könnte eine bessere Lösung sein input:-webkit-autofill { transition: background-color 1s 5000s; } da diese eher verzögert den Übergang für diesen Zeitraum

2voto

BigClap Punkte 27

Dies ist eine komplexe Lösung für diese Aufgabe.

(function($){
    if (navigator.userAgent.toLowerCase().indexOf("chrome") >= 0) {
       $('input, select').on('change focus', function (e) {
            setTimeout(function () {
                $.each(
                    document.querySelectorAll('*:-webkit-autofill'),
                    function () {
                        var clone = $(this).clone(true, true);
                        $(this).after(clone).remove();
                        updateActions();
                    })
            }, 300)
        }).change();
    }
    var updateActions = function(){};// method for update input actions
    updateActions(); // start on load and on rebuild
})(jQuery)

*:-webkit-autofill,
*:-webkit-autofill:hover,
*:-webkit-autofill:focus,
*:-webkit-autofill:active {
    /* use animation hack, if you have hard styled input */
    transition: all 5000s ease-in-out 0s;
    transition-property: background-color, color;
    /* if input has one color, and didn't have bg-image use shadow */
    -webkit-box-shadow: 0 0 0 1000px #fff inset;
    /* text color */
    -webkit-text-fill-color: #fff;
    /* font weigth */
    font-weight: 300!important;
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" name="name" autocomplete="name"/>
<input type="email" name="email" autocomplete="email"/>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X