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...

2voto

Alexander Abakumov Punkte 12151

autocomplete="off" funktioniert jetzt, also können Sie einfach Folgendes tun:

Getestet im aktuellen Chrome 70 sowie in allen Versionen ab Chrome 62.

Demo:

  • das obere input hat die automatische Vervollständigung aktiviert
  • das untere input hat die automatische Vervollständigung durch Hinzufügen von autocomplete="off" deaktiviert

2 Stimmen

@AntonKuznetsov Bitte werfen Sie einen genaueren Blick auf das HTML von JSFiddle: Das untere input hat autocomplete="off", während das obere dies nicht hat. Daher soll der Auto-Completer nur für das untere input deaktiviert werden, aber auf Ihrem Screenshot testen Sie die Autovervollständigung oben. Daher ist dies immer noch der richtige Weg, um die Autovervollständigung für Chrome 70 zu deaktivieren. Ich wäre dankbar, wenn Sie es gründlicher prüfen und diesem Post ein Upvote geben anstatt einen Downvote.

1 Stimmen

Das ist die richtige Antwort für Chrome 81 (81.0.4044.138)

2voto

Tony Punkte 470

Die einzige Lösung, die auf Chrome und Firefox funktioniert und erfolgreich getestet wurde, besteht darin, das input mit einem form zu umschließen, das autocomplete="off" wie unten gezeigt hat:

2voto

Swapnil Navalakha Punkte 279

Nach langem Suchen fand ich heraus, dass das automatische Dropdown-Menü in Chrome (Version 83.0.4103.116) nicht angezeigt wird, wenn wir die Attribute "name" und "id" im Eingabefeld entfernen. z.B. der Code wie folgt

  Die Autovervollständigung funktioniert, wenn das name- und id-Attribut nicht im Eingabefeld gesetzt sind

  Die Autovervollständigung funktioniert hier, da das id-Attribut gesetzt ist

1voto

Carlos Guerra Punkte 24

Es scheint, dass das Chrome-Autocomplete-Ereignis bei DOMContentLoaded ausgelöst wird, und in der neuesten Version von Chrome (110.0.5481.178) jetzt autocomplete="nope" und autocomplete="new-password" oder zufälliges Attribut ignoriert, also wenn Sie den readonly-Trick oder andere JQuery- und Js-Zufälligkeiten nicht verwenden möchten, können Sie die Eingaben (E-Mail, Passwort und Telefon hauptsächlich) einfach auf Text setzen und im load-Ereignis einfach wieder auf den richtigen Typ umstellen, dies sollte mindestens 1ms nach dem load-Ereignis geschehen, denn wenn es sofort gemacht wird, wird es vom Browser automatisch vervollständigt, verwenden Sie also diesen Trick:

Setzen Sie den Eingabetyp type auf "text" und speichern Sie den echten Typ in einem Attribut oder einer Klasse wie folgt:

Dann, im Fenster load-Ereignis, verwenden Sie die setTimeout-Funktion und es ist erledigt, die Eingabe wird den richtigen Typ haben und wird nicht automatisch ausgefüllt

window.addEventListener('load', ()=>{
    document.querySelectorAll('input[data-on-load-type]').forEach(trickedInput=>{
        trickedInput.setAttribute('type', trickedInput.getAttribute('data-on-load-type'))
    });
});

Bearbeiten: möchte nur mehr Informationen darüber hinzufügen, wie das Autocomplete zu funktionieren scheint.

Das Autocomplete passiert meistens, wenn ein Passwort und mindestens ein anderes Eingabeelement im DOM sind, der Browser wird alles als autocompletable behandeln, auch wenn sie sich nicht in einem

-Tag befinden oder das autocomplete-Attribut auf nope oder new-password gesetzt ist, also wenn ein Passwortfeld gefunden wird und jedes andere autocompletable Eingabefeld wie E-Mail, Telefon oder Adresse vorhanden ist, werden diese ausgefüllt, außer wenn sie display: none; haben, dann wird der Browser trotzdem versuchen, jedes andere sichtbare Eingabeelement auszufüllen, auch wenn es nicht mit einem Kontakt- oder Anmeldeformular zusammenhängt, wie z.B. eine Eingabesuche in einer Suchleiste, und wenn Sie ein Skript haben, um die Eingaben anzuzeigen, werden sie manchmal ausgefüllt, wenn ein Passwort im DOM vorhanden ist, also ist dies ein großes Problem und Browser sollten respektieren, wenn etwas nicht automatisch ausgefüllt werden soll. Sobald der Browser also weiß, dass es ein Passwortfeld im DOM gibt, scheint er einen Listener an Autocomplete-Eingaben anzuhängen, wenn sich deren Anzeige ändert, daher habe ich diese Lösung gefunden, indem ich den Typ auf Text setze und ihn dann mit einer kleinen Verzögerung nach dem load-Ereignis auf den richtigen Typ ändere, es scheint ziemlich gut zu funktionieren, bisher.

1voto

Touqeer Punkte 555

MAR 2020

Ich stehe vor diesem Problem und leider hat keines der Lösungen für mich funktioniert. Also habe ich den kleinen Hack angewendet, der gut funktioniert.

$('#password').on('click', function (event) {
  $('#password').removeAttr('readonly');
  $('#password').focus();
});

$('#password').on('blur', function (event) {
  $('#password').attr('readonly', 'readonly');
});

Wenn Sie auf das Passwort-Eingabefeld klicken, beginnt es, Vorschläge anzuzeigen, aber wenn Sie den Fokus auf das Eingabefeld setzen, werden keine Vorschläge angezeigt. So habe ich mein Problem gelöst.

Ich hoffe, es wird jemandem helfen.

1 Stimmen

Ich habe festgestellt, dass am 21.11. das Hinzufügen von $(document).ready(function(){ $('#password').prop('readonly', false); }); gut funktioniert hat

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