728 Stimmen

Chrome ignoriert autocomplete="off"

Ich habe eine Webanwendung erstellt, die ein Tagbox-Dropdown verwendet. Dies funktioniert in allen Browsern gut, außer im Chrome-Browser (Version 21.0.1180.89).

Trotz des input-Feldes UND des form-Feldes mit dem Attribut autocomplete="off" besteht Chrome darauf, eine Dropdown-Verlaufsliste früherer Einträge für das Feld anzuzeigen, was die Tagbox-Liste auslöscht.

17 Stimmen

Technisch wurde diese Frage etwa 5 Monate vor der als "Diese Frage hat hier bereits eine Antwort" bezeichneten Frage gestellt. Diese Frage ist das Duplikat, da sie nach dieser gestellt wurde.

0 Stimmen

Ehrlich gesagt, was wenn das der Grund für das Deaktivieren von autocomplete=off ist. Was ist, wenn der Plan ist, sicherzustellen, dass das Web so detailliert und beschrieben ist, dass der Browser, den Sie gerade verwenden, jedes Feld automatisch ausfüllen kann, wie es ihre neueste Version möchte. Wenn das der Fall wäre, müssten wir alle Felder beschreiben - und der Browser würde das automatische Ausfüllen für alle Felder deaktivieren, die außerhalb des Bereichs des Autocomplete-Skripts/Apps liegen... Ich wette darauf, dass dies der Fall ist.

87 Stimmen

7 Jahre und immer noch können wir die automatische Vervollständigung nicht richtig deaktivieren... so eine Schande...

-1voto

chrisbergr Punkte 188

Ich musste dieses Problem auf einer Drupal-Seite mit einem riesigen Webformular ansprechen. Da ich den HTML-Code nicht für jedes Eingabefeld bearbeiten kann, habe ich die folgende generische jQuery-Lösung entwickelt.

    // Form Autocomplete FIX
    function is_mobile() {
        if( screen.width < 500 || navigator.userAgent.match(/Android/i) || navigator.userAgent.match(/webOS/i) || navigator.userAgent.match(/iPhone/i) || navigator.userAgent.match(/iPod/i) ) {
            return true;
        }
        return false;
    }
    jQuery( 'input[autocomplete="off"]' ).each( function() {
        if( is_mobile() ) {
            return;
        }
        jQuery( this ).attr( 'readonly', true );
    } );
    jQuery( 'input[autocomplete="off"]' ).focus( function() {
        if( is_mobile() ) {
            return;
        }
        jQuery( this ).removeAttr( 'readonly' );
        jQuery( this ).focus();
    } );
    jQuery( 'input[autocomplete="off"]' ).blur( function() {
        if( is_mobile() ) {
            return;
        }
        jQuery( this ).attr( 'readonly', true );
    } );

Browsererkennung von hier.

Ich denke, es gibt eine Möglichkeit, diesen Code zu optimieren (ich würde gerne einige Ratschläge bekommen), aber Sie werden die Idee davon bekommen.

-1voto

user3389 Punkte 479

Ich habe eine Lösung gefunden, die für mich funktioniert. Sie deaktiviert nicht die automatische Vervollständigung, ermöglicht aber eine Anpassung. Getestet in Chrome 96, Opera 82

/* Ändern Sie Autocomplete-Stile in Chrome */
input:-webkit-autofill,
input:-webkit-autofill:hover,
input:-webkit-autofill:focus,
textarea:-webkit-autofill,
textarea:-webkit-autofill:hover,
textarea:-webkit-autofill:focus,
select:-webkit-autofill,
select:-webkit-autofill:hover,
select:-webkit-autofill:focus {
    border: none;
    border-bottom: 1px solid;
    -webkit-text-fill-color: #000;
    -webkit-box-shadow: 0 0 0 1000px transparent inset;
}

-2voto

camelCaseD Punkte 2213

Ich habe die folgende Lösung entwickelt, die alle Felder abfragt, die das Attribut autocomple="off" haben, dann den Wert auf ein Leerzeichen setzt, einen Timer für ca. 200 ms einstellt und dann den Wert wieder auf einen leeren String setzt.

Beispiel:

// Hack, um das automatische Ausfüllen in Chrome zu verhindern
var noFill = document.querySelectorAll("input[autocomplete=off]");

noFill.forEach(function(el) {
    el.setAttribute("value", " ");
    setTimeout(function() {
        el.setAttribute("value", "");
    }, 200);
});

Ich habe 200 ms für den Timer gewählt, weil nach einigen Experimenten 200 ms die Zeit zu sein scheinen, die mein Computer benötigt, damit Chrome aufhört, die Felder automatisch auszufüllen. Ich bin offen für Vorschläge, welche anderen Zeitintervalle für andere Personen besser funktionieren.

0 Stimmen

Die Zeitabstimmung variiert für mich zu sehr, um nützlich zu sein - Ich habe Ähnliches versucht und es variiert auf derselben Seite im selben Browser.

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