618 Stimmen

Chrome Autofill deaktivieren

Ich habe Probleme mit dem Autofill-Verhalten von Chrome in verschiedenen Formularen gehabt.

Die Felder im Formular haben alle sehr gebräuchliche und genaue Namen, wie "E-Mail", "Name" oder "Passwort", und sie haben auch autocomplete="off" gesetzt.

Das Autovervollständigen-Flag hat erfolgreich das Autovervollständigen-Verhalten deaktiviert, bei dem eine Dropdown-Liste mit Werten angezeigt wird, sobald Sie mit der Eingabe beginnen, aber es hat nicht die Werte geändert, mit denen Chrome die Felder automatisch ausfüllt.

Dieses Verhalten wäre in Ordnung, wenn Chrome nicht die Eingaben falsch ausfüllen würde, z. B. die Telefoneingabe mit einer E-Mail-Adresse. Kunden haben sich darüber beschwert. Es ist also erwiesen, dass es in mehreren Fällen auftritt und nicht auf etwas zurückzuführen ist, das ich lokal auf meinem Rechner gemacht habe.

Die einzige Lösung, die mir derzeit einfällt, ist die dynamische Generierung von benutzerdefinierten Eingabenamen und die anschließende Extraktion der Werte im Backend, aber das scheint ein ziemlich umständlicher Weg zu sein, um dieses Problem zu umgehen. Gibt es irgendwelche Tags oder Macken, die das Autofill-Verhalten ändern, die verwendet werden könnten, um dieses Problem zu beheben?

1354voto

tibalt Punkte 13963

Juni 2023: autocomplete="one-time-code" funktioniert in Chrome https://robindirksen.com/blog/html-autocomplete-one-time-code

Apr 2022: autocomplete="off" funktioniert in Chrome immer noch nicht, und ich glaube nicht, dass es jemals funktioniert hat, nachdem ich mir die Chromium-Fehler im Zusammenhang mit diesem Problem angesehen habe (vielleicht nur für Passwortfelder). Ich sehe Probleme berichtet in 2014 die als "WontFix" geschlossen wurden, und Probleme, die noch offen sind und diskutiert werden [1] [2] . Soweit ich weiß, glaubt das Chromium-Team nicht, dass es einen gültigen Anwendungsfall für autocomplete="off" .

Insgesamt bin ich nach wie vor der Meinung, dass keine der beiden extremen Strategien ("Autovervollständigung immer berücksichtigen=aus" und "Autovervollständigung nie berücksichtigen=aus") gut ist.

https://bugs.chromium.org/p/chromium/issues/detail?id=914451#c66

Sie haben den Eindruck, dass Websites dies nicht richtig nutzen werden, und haben beschlossen, es nicht anzuwenden, und schlagen folgende Ratschläge vor:

In Fällen, in denen Sie die automatische Ausfüllung deaktivieren möchten, schlagen wir vor, dass Sie das Attribut autocomplete zu verwenden, um Ihren Feldern eine semantische Bedeutung zu Felder zu geben. Wenn wir auf ein Autovervollständigungsattribut stoßen, das wir nicht nicht erkennen, versuchen wir nicht, es auszufüllen.

Ein Beispiel: Sie haben ein Adresseingabefeld in Ihrem CRM-Tool das Chrome nicht automatisch ausfüllen soll, können Sie ihm eine semantische Bedeutung geben, die in Bezug auf Ihre Anfrage sinnvoll ist: z. B. autocomplete="neue-benutzer-strassen-adresse". Wenn Chrome darauf stößt, wird er wird er nicht versuchen, das Feld automatisch auszufüllen.

https://bugs.chromium.org/p/chromium/issues/detail?id=587466#c10

Obwohl dieser "Vorschlag" derzeit bei mir funktioniert, ist er möglicherweise nicht immer zutreffend, und es sieht so aus, als ob das Team Experimente durchführt, was bedeutet, dass sich die Autovervollständigungsfunktion in neuen Versionen ändern könnte.

Es ist dumm, dass wir zu diesem Mittel greifen müssen, aber der einzig sichere Weg ist, den Browser so weit wie möglich zu verwirren:

  • Benennen Sie Ihre Eingaben, ohne Informationen an den Browser weiterzugeben, d. h. id="field1" anstelle von id="country" .

  • Satz autocomplete="do-not-autofill" verwenden Sie grundsätzlich jeden Wert, den der Browser nicht als automatisch ausfüllbares Feld erkennen kann.


Januar 2021: autocomplete="off" funktioniert jetzt wie erwartet (getestet mit Chrome 88 macOS).

Damit dies funktioniert, muss das Eingabe-Tag innerhalb eines Formular-Tags liegen


September 2020: autocomplete="chrome-off" deaktiviert die Chrome-Autofill-Funktion.


Originalantwort, 2015:

Bei neuen Chrome-Versionen können Sie einfach autocomplete="new-password" in Ihr Passwortfeld ein und das war's. Ich habe es überprüft, es funktioniert gut.

Diesen Tipp habe ich von einem Chrome-Entwickler in dieser Diskussion erhalten: https://bugs.chromium.org/p/chromium/issues/detail?id=370363#c7

P.S. Beachten Sie, dass Chrome versucht, das Autovervollständigungsverhalten aus Name, ID und jeglichem Textinhalt, der das Feld umgibt, einschließlich Beschriftungen und beliebigen Textknoten, abzuleiten. Wenn es ein Autovervollständigungs-Token gibt wie street-address im Kontext eingeben, füllt Chrome diese automatisch als solche aus. Die Heuristik kann recht verwirrend sein, da sie manchmal nur ausgelöst wird, wenn das Formular zusätzliche Felder enthält, oder nicht, wenn es zu wenige Felder im Formular gibt. Beachten Sie auch, dass autocomplete="no" wird scheinbar funktionieren, aber autocomplete="off" wird aus historischen Gründen nicht. autocomplete="no" teilen Sie dem Browser mit, dass dieses Feld automatisch ausgefüllt werden soll als ein Feld namens "no" . Wenn Sie eindeutige Zufallszahlen erzeugen autocomplete Namen deaktivieren Sie die automatische Vervollständigung.

Wenn Ihre Benutzer fehlerhafte Formulare besucht haben, können ihre Autofill-Informationen korrupt . Es kann eine notwendige Maßnahme sein, dass sie ihre Autofill-Informationen in Chrome manuell korrigieren.

853voto

mike nelson Punkte 19634

Ich habe gerade herausgefunden, dass die aktuelle Version von Chrome, wenn Sie einen Benutzernamen und ein Passwort für eine Website gespeichert haben, Ihren Benutzernamen und Ihre E-Mail-Adresse automatisch in das Feld vor jede type=password Feld. Es kümmert sich nicht darum, wie das Feld heißt - es nimmt einfach an, dass das Feld vor dem Passwort Ihr Benutzername sein wird.

Alte Lösung

Verwenden Sie einfach <form autocomplete="off"> und verhindert das Vorausfüllen von Passwörtern sowie jede Art von heuristischem Ausfüllen von Feldern auf der Grundlage von Annahmen, die ein Browser treffen kann (die oft falsch sind). Im Gegensatz zur Verwendung von <input autocomplete="off"> was anscheinend von der automatischen Kennwortausfüllung ignoriert wird (in Chrome jedenfalls, Firefox befolgt es).

Aktualisierte Lösung

Chrome ignoriert jetzt <form autocomplete="off"> . Daher ist meine ursprüngliche Problemlösung (die ich gelöscht hatte) jetzt der letzte Schrei.

Erstellen Sie einfach ein paar Felder und blenden Sie sie mit "display:none" aus. Beispiel:

<!-- fake fields are a workaround for chrome autofill getting the wrong fields -->
<input style="display: none" type="text" name="fakeusernameremembered" />
<input style="display: none" type="password" name="fakepasswordremembered" />

Dann setzen Sie Ihre echten Felder darunter.

Vergessen Sie nicht, den Kommentar hinzuzufügen, sonst werden sich die anderen in Ihrem Team fragen, was Sie da tun!

Update März 2016

Gerade mit dem neuesten Chrome getestet - alles gut. Dies ist jetzt eine ziemlich alte Antwort, aber ich möchte nur erwähnen, dass unser Team hat es seit Jahren jetzt auf Dutzende von Projekten verwendet. Es funktioniert immer noch großartig, trotz einiger Kommentare unten. Es gibt keine Probleme mit der Zugänglichkeit, da die Felder display:none was bedeutet, dass sie nicht fokussiert werden. Wie ich bereits erwähnt habe, müssen Sie sie vor Ihre wirklichen Felder.

Wenn Sie javascript verwenden, um Ihr Formular zu ändern, benötigen Sie einen zusätzlichen Trick. Zeigen Sie die gefälschten Felder an, während Sie das Formular bearbeiten, und blenden Sie sie dann eine Millisekunde später wieder aus.

Beispielcode mit jQuery (vorausgesetzt, Sie geben Ihren gefälschten Feldern eine Klasse):

$(".fake-autofill-fields").show();
// some DOM manipulation/ajax here
window.setTimeout(function () {
  $(".fake-autofill-fields").hide();
}, 1);

Update Juli 2018

Meine Lösung funktioniert nicht mehr so gut, seit die Anti-Benutzungs-Experten von Chrome hart an der Arbeit sind. Aber sie haben uns einen Knochen zugeworfen in Form von:

<input type="password" name="whatever" autocomplete="new-password" />

Das funktioniert und löst das Problem weitgehend.

Es funktioniert jedoch nicht, wenn Sie kein Passwortfeld haben, sondern nur eine E-Mail-Adresse. In diesem Fall kann es auch schwierig sein, das gelbe Feld und das Ausfüllen zu beenden. Mit der Lösung für gefälschte Felder lässt sich dies beheben.

Manchmal muss man sogar zwei Lose falscher Felder einfügen und sie an verschiedenen Stellen ausprobieren. Ich hatte z. B. bereits falsche Felder am Anfang meines Formulars, aber Chrome hat vor kurzem wieder angefangen, das Feld "E-Mail" auszufüllen - also habe ich es verdoppelt und weitere falsche Felder direkt vor dem Feld "E-Mail" eingefügt, und das hat das Problem gelöst. Wenn man entweder die erste oder die zweite Gruppe von Feldern entfernt, wird das Formular wieder falsch und übereifrig ausgefüllt.

Aktualisierung März 2020

Es ist nicht klar, ob und wann diese Lösung noch funktioniert. Manchmal scheint sie noch zu funktionieren, aber nicht mehr immer.

In den Kommentaren unten finden Sie ein paar Hinweise. Einer, der gerade von @anilyeni hinzugefügt wurde, könnte eine genauere Untersuchung wert sein:

Das habe ich bemerkt, autocomplete="off" funktioniert unter Chrome 80, wenn weniger als drei Elemente in <form> . Ich weiß nicht, was die Logik ist oder wo die entsprechende Dokumentation darüber.

Auch dieser Beitrag von @dubrox könnte relevant sein, obwohl ich ihn nicht getestet habe:

vielen Dank für den Trick, aber bitte aktualisieren Sie die Antwort, da display:none; funktioniert nicht mehr, aber position: fixed;top:-100px;left:-100px; width:5px; tut :)

Aktualisierung APRIL 2020

Ein spezieller Wert für Chrome für dieses Attribut erfüllt die Aufgabe: (getestet bei Eingabe - aber nicht von mir) autocomplete="chrome-off"

Aktualisierung JUNI 2023

Utilice autocomplete="new-password"

Dies funktioniert derzeit.

296voto

Fery Kaszoni Punkte 3890

Nach monatelangem Kampf habe ich festgestellt, dass die Lösung viel einfacher ist, als Sie sich vorstellen können:

Anstelle von autocomplete="off" verwenden. autocomplete="false" ;)

So einfach ist das, und es funktioniert auch in Google Chrome einwandfrei!


Update August 2019 (Dank an @JonEdiger in den Kommentaren)

Hinweis: Viele Informationen im Internet besagen, dass autocomplete='false' von den Browsern jetzt genauso behandelt wird wie autocomplete='off'. Zumindest ab dieser Minute verhindert es die automatische Vervollständigung für diese drei Browser.

Legen Sie ihn auf Formularebene fest und setzen Sie ihn für die Eingaben, die Sie ausschalten möchten, auf einen nicht gültigen Wert wie "none":

<form autocomplete="off"> 
  <input type="text" id="lastName" autocomplete="none"/> 
  <input type="text" id="firstName" autocomplete="none"/>
</form>

147voto

dsuess Punkte 4999

Manchmal sogar autocomplete=off wird nicht verhindern, dass Anmeldedaten in falsche Felder eingegeben werden.

Eine Abhilfe besteht darin, das automatische Ausfüllen im Browser mit readonly-mode zu deaktivieren und writable on focus einzustellen:

 <input type="password" readonly onfocus="this.removeAttribute('readonly');"/>

En focus Ereignis tritt bei Mausklicks und Tabulatoren in Feldern auf.

Aktualisierung:

Mobile Safari setzt den Cursor in das Feld, zeigt aber keine virtuelle Tastatur an. Dieser neue Workaround funktioniert wie zuvor, behandelt aber die virtuelle Tastatur:

<input id="email" readonly type="email" onfocus="if (this.hasAttribute('readonly')) {
    this.removeAttribute('readonly');
    // fix for mobile safari to show virtual keyboard
    this.blur();    this.focus();  }" />

Live-Demo https://jsfiddle.net/danielsuess/n0scguv6/

// UpdateEnd

Erläuterung: Browser füllt Anmeldedaten automatisch in falsches Textfeld ein?

die Eingaben falsch ausfüllen, z. B. die Eingabe der Telefonnummer mit einer E-Mail Adresse

Manchmal bemerke ich dieses merkwürdige Verhalten in Chrome und Safari, wenn es Passwortfelder in die gleiche Form. Ich vermute, dass der Browser nach einem Passwortfeld sucht, um Ihre gespeicherten Anmeldedaten einzugeben. Dann wird füllt automatisch Nutzername in das nächstgelegene textartige Eingabefeld, das vor dem Passwortfeld erscheint in DOM (nur eine Vermutung aufgrund von Beobachtungen). Da der Browser die letzte Instanz ist und Sie ihn nicht kontrollieren können,

Die obige Readonly-Fixierung hat bei mir funktioniert.

103voto

dana Punkte 15935

Wenn Sie eine Suchfeldfunktion implementieren, versuchen Sie, die Option type Attribut zu search wie folgt:

<input type="search" autocomplete="off" />

Dies funktioniert bei mir mit Chrome v48 und scheint ein legitimes Markup zu sein:

https://www.w3.org/wiki/HTML/Elements/input/search

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