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

460voto

Cava Punkte 4768

Verhindern Sie das automatische Ausfüllen von Benutzername (oder E-Mail) und Passwort:


Verhindern Sie das automatische Ausfüllen eines Feldes (funktioniert möglicherweise nicht):

Erklärung:

autocomplete funktioniert immer noch bei einem , obwohl autocomplete="off" gesetzt ist, aber Sie können off in einen zufälligen String ändern, wie z.B. nope.


Weitere "Lösungen" zur Deaktivierung des automatischen Ausfüllens eines Feldes (es ist nicht der richtige Weg, aber es funktioniert):

1.

HTML:

JS (onload):

(function() {
    var some_id = document.getElementById('some_id');
    some_id.type = 'text';
    some_id.removeAttribute('autocomplete');
})();

oder mit jQuery:

$(document).ready(function() {
    var some_id = $('#some_id');
    some_id.prop('type', 'text');
    some_id.removeAttr('autocomplete');
});

2.

HTML:

JS (onload):

(function() {
    var input = document.createElement('INPUT');
    input.type = 'text';
    document.getElementById('form').appendChild(input);
})();

oder mit jQuery:

$(document).ready(function() {
    $('', {
        type: 'text'
    }).appendTo($('#form'));
});

Um mehr als ein Feld mit jQuery hinzuzufügen:

function addField(label) {
  var div = $('

Funktioniert in:

  • Chrome: 49+

  • Firefox: 44+

0 Stimmen

Es gibt keinen Code, nur wie verhindert Ihre Antwort tatsächlich die automatische Vervollständigung, wenn autocomplete="" eigentlich nur einen booleschen Wert akzeptieren soll.

0 Stimmen

Autocomplete="new-password", wenn es dem Passwortfeld zugewiesen wird, hat bei mir in Chrome funktioniert. autocomplete="off" im Formular hat nicht funktioniert.

5 Stimmen

Das Wichtigste (und einzige, das für mich funktioniert hat) war sicherzustellen, dass das ID- und Name-Eigenschaft Ihres -Feldes keinesfalls "Username" oder "Password" enthielt. Dies hat bei mir effektiv jegliche Autovervollständigung gestoppt, auch bei autocomplete="off".

331voto

Diogo Cid Punkte 3704

AKTUALISIERUNG

Es scheint, dass Chrome jetzt die Attribute style="display: none;" oder style="visibility: hidden; ignorieren.

Sie können es zu etwas ändern wie:

In meiner Erfahrung vervollständigt Chrome nur das erste und das vorherige . Deshalb habe ich hinzugefügt:

An die Spitze des

und der Fall war gelöst.

70 Stimmen

Dies funktioniert nicht mehr, Chrome 40 funktioniert diese Lösung nicht mehr.

14 Stimmen

Nicht nur ist das hässlich, aber ich kann immer noch keine Erklärung zu der Warum Frage finden??

4 Stimmen

Es scheint, dass Chrome sie jetzt ignoriert, wenn display: none verwendet wird, also habe ich die Felder aus der Ansicht mit absoluter Positionierung verschoben...

174voto

ice cream Punkte 2324

Es scheint, dass Chrome jetzt autocomplete="off" ignoriert, es sei denn, es befindet sich auf dem

Tag.

0 Stimmen

Für React verwenden Sie 'autoComplete=off'.

1 Stimmen

Für eine Erklärung, weshalb Chrome diese Änderung vorgenommen hat, siehe diese Antwort: stackoverflow.com/a/39689037/1766230 - Sie priorisieren Benutzer vor Entwicklern.

26 Stimmen

Wenn Sie dem Chrome-Team gültige Gründe für die Verwendung von autocomplete="off" mitteilen möchten, tun Sie dies bitte hier: bugs.chromium.org/p/chromium/issues/detail?id=587466

157voto

J.T. Taylor Punkte 3951

2021 UPDATE:
Ändere zu

Das ist alles. Halte die unten stehende Antwort für Nostalgie.


Für einen zuverlässigen Workaround können Sie diesen Code auf Ihrer Layoutseite hinzufügen:

Chrome respektiert autocomplete=off nur dann, wenn mindestens ein anderes Eingabeelement im Formular einen anderen autocomplete-Wert hat.

Dies funktioniert nicht bei Passwortfeldern - diese werden in Chrome sehr unterschiedlich behandelt. Siehe https://code.google.com/p/chromium/issues/detail?id=468153 für weitere Details.

UPDATE: Das Problem wurde am 11. März 2016 vom Chromium-Team als "wird nicht behoben" geschlossen. Lesen Sie den letzten Kommentar in meinem ursprünglich gemeldeten Fehlerbericht für eine ausführliche Erklärung. TL;DR: Verwenden Sie semantische autocomplete-Attribute wie autocomplete="new-street-address", um zu verhindern, dass Chrome das Autofill ausführt.

2 Stimmen

@Jonathan Cowley-Thom: Versuchen Sie diese Testseiten, die ich mit meinem Workaround erstellt habe. Auf hub.securevideo.com/Support/AutocompleteOn sollten Sie Chrome-Autocomplete-Vorschläge sehen. Versuchen Sie dann dieselben Einträge auf hub.securevideo.com/Support/AutocompleteOff. Sie sollten keine Chrome-Autocomplete-Vorschläge sehen. Ich habe das gerade mit Chrome 45.0.2454.101m und 46.0.2490.71m getestet und es hat wie erwartet funktioniert.

0 Stimmen

Eine weitere Aktualisierung zu dieser Angelegenheit: Ich habe gerade eine Benachrichtigung vom Chrome-Team erhalten, dass dies behoben wurde. Hoffentlich wird dieses Workaround bald nicht mehr benötigt!

0 Stimmen

Siehe meinen Beitrag oben: "Dies wird mit Passwortfeldern nicht funktionieren - diese werden in Chrome sehr anders behandelt. Weitere Details finden Sie unter code.google.com/p/chromium/issues/detail?id=468153."

121voto

Fizzix Punkte 22489

Moderner Ansatz

Machen Sie einfach Ihre Eingabe readonly und entfernen Sie es beim Fokus. Dies ist ein sehr einfacher Ansatz und Browser füllen readonly Eingaben nicht aus. Daher wird diese Methode akzeptiert und von zukünftigen Browser-Updates nie überschrieben.

Der nächste Teil ist optional. Gestalten Sie Ihre Eingabe entsprechend, sodass sie nicht wie eine readonly Eingabe aussieht.

input[readonly] {
     cursor: text;
     background-color: #fff;
}

ARBEITSBEISPIEL

67 Stimmen

@Basit - Und deshalb habe ich es als einen modernen Ansatz bezeichnet. Weniger als 1% der Benutzer weltweit haben Javascript deaktiviert. Ehrlich gesagt lohnt es sich nicht, sich um ein so kleines Publikum zu kümmern, wenn die große Mehrheit der Websites auf Javascript angewiesen ist. Ich entwickle seit sehr langer Zeit Websites, und 100% meiner Websites verwenden Javascript und sind stark darauf angewiesen. Wenn Benutzer Javascript deaktiviert haben, ist das deren eigenes Problem und ihre eigene Entscheidung, nicht meine. Sie werden nicht in der Lage sein, mindestens 90% der Websites online zu besuchen oder zu nutzen, wenn es deaktiviert ist... Dein Downvote ist völlig irrelevant.

38 Stimmen

Dies funktioniert heute nicht in 49. Chrome "Entwickler" beobachtet Stackoverflow-Lösungen und entfernt sie.

1 Stimmen

@puchu - Ich benutze Chrome 49 und es funktioniert einwandfrei? Verwenden Sie das folgende Beispiel, geben Sie einen Benutzernamen und ein Passwort ein, klicken Sie auf "Senden", speichern Sie sie in Ihren gespeicherten Chrome-Anmeldeinformationen, aktualisieren Sie die Seite und Sie werden feststellen, dass sie nicht automatisch ausgefüllt werden - jsfiddle.net/w0wxy9ao/18

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