Chrome Autofill deaktivieren

620

Ich bin auf verschiedenen Formularen auf Probleme mit dem Verhalten beim automatischen Ausfüllen von Chrom gestoßen.

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

Das Flag für die automatische Vervollständigung hat das Verhalten bei der automatischen Vervollständigung erfolgreich deaktiviert. Wenn Sie mit der Eingabe beginnen, wird eine Dropdown-Liste mit Werten angezeigt. Die Werte, mit denen Chrome die Felder automatisch ausfüllt, wurden jedoch nicht geändert.

Dieses Verhalten wäre in Ordnung, außer dass Chrome die Eingaben falsch füllt, z. B. die Telefoneingabe mit einer E-Mail-Adresse. Kunden haben sich darüber beschwert, daher wurde überprüft, dass dies in mehreren Fällen geschieht und nicht als Ergebnis von etwas, das ich lokal auf meinem Computer ausgeführt habe.

Die einzige aktuelle Lösung, die ich mir vorstellen kann, besteht darin, dynamisch benutzerdefinierte Eingabenamen zu generieren und dann die Werte im Backend zu extrahieren. Dies scheint jedoch ein ziemlich hackiger Weg zu sein, um dieses Problem zu umgehen. Gibt es Tags oder Macken, die das Verhalten beim automatischen Ausfüllen ändern und zur Behebung dieses Problems verwendet werden können?

templaedhel
quelle
6
Es ist kein Duplikat. Dieser behandelt das Deaktivieren der automatischen Füllung, der eine das Stylen der automatischen Füllfarbe ...
Nicu Surdu
17
autocomplete = "false" anstelle von autocomplete = "off" gemäß der Antwort von Kaszoni Ferencz, stimmen Sie dafür ab.
Roughcoder
7
Schauen Sie sich die Anzahl der Antworten auf diese Frage an - sie sollte Ihnen etwas sagen: Sie kämpfen in einem verlorenen Kampf. Dies ist kein Chrome-Problem mehr, Firefox und andere sind diesem Beispiel gefolgt. Ob es Ihnen gefällt oder nicht, Sie müssen die Entscheidung der Browserbranche akzeptieren. Die automatische Vervollständigung des Formulars ist die Wahl des Benutzers - Sie können sie bekämpfen, aber Sie werden verlieren. Letztendlich sollten Sie sich nicht die Frage stellen, wie ich die automatische Vervollständigung untergraben kann, sondern wie ich Formulare erstelle, die mit der automatischen Vervollständigung gut funktionieren. Ihre Bedenken hinsichtlich der Sicherheit sind nicht Ihre, sondern die der Benutzer.
mindplay.dk
21
Entschuldigung, aber die Antwort von @ mindplay.dk ist kontraproduktiv. Meine Situation ist, dass ich Benutzer habe, die sich auf meiner Site angemeldet haben, und auf einer Seite der Site können sie Konto- / PWD-Informationen für andere Systeme eingeben. Wenn ich einen Diaog für sie einrichte, um einen neuen einzugeben, werden ihre Anmeldeinformationen für meine Site ausgefüllt, was völlig falsch ist und Probleme verursacht, wenn Benutzer diese Informationen versehentlich eingeben. Die beiden haben nichts damit zu tun gegenseitig. In diesem Fall tut der Browser etwas, das den Wünschen des Benutzers widerspricht.
Mike K
8
@ mindplay.dk - Meine Webanwendung ist eine Workflow-Management-Anwendung für den Arbeitsplatz. Nein, die Sicherheitsbedenken sind meine, die vom Top-Management vorgeschrieben werden und von allen Mitarbeitern, auch bekannt als "Benutzer", eingehalten werden müssen. "" Wenn Sie sie jedoch bitten, Chrome, IE oder einen anderen Browser selbst einzustellen, bleiben Lücken im Authentifizierungsprozess, da sie absichtlich oder nicht absichtlich die automatische Ausfüllung verwenden können. Nicht alle Webanwendungen sind vom gleichen Typ, mit den gleichen Arten von Benutzern oder Bedenken.
PoloHoleSet

Antworten:

906

Für neue Chrome-Versionen können Sie einfach autocomplete="new-password"Ihr Passwortfeld eingeben und fertig. Ich habe es überprüft, funktioniert gut.

Ich habe diesen Tipp vom Chrome-Entwickler in dieser Diskussion erhalten: https://bugs.chromium.org/p/chromium/issues/detail?id=370363#c7

PS Beachten Sie, dass Chrome versucht, das Verhalten beim automatischen Ausfüllen aus Name, ID und jeglichem Textinhalt abzuleiten, der das Feld umgibt, einschließlich Beschriftungen und beliebiger Textknoten. Wenn es ein Token für die automatische Vervollständigung wie street-addressim Kontext gibt, füllt Chrome dieses automatisch als solches aus. Die Heuristik kann ziemlich verwirrend sein, da sie manchmal nur ausgelöst wird, wenn das Formular zusätzliche Felder enthält oder nicht, wenn das Formular zu wenige Felder enthält. Beachten Sie auch, dass dies autocomplete="no"anscheinend funktioniert, autocomplete="off"jedoch aus historischen Gründen nicht. autocomplete="no"genannt ist , dass Sie den Browser zu sagen , dass dieses Feld automatisch als Feld abgeschlossen sein sollte "no". Wenn Sie eindeutige Zufallsnamen generieren autocomplete, deaktivieren Sie die automatische Vervollständigung.

Wenn Ihre Benutzer schlechte Formen ihre autofill besucht haben Informationen können korrupt . Es kann eine notwendige Maßnahme sein, wenn sie ihre Informationen zum automatischen Ausfüllen in Chrome manuell eingeben und korrigieren.

Tibalt
quelle
115
'neues Passwort' funktionierte für mich, nachdem ich 'off' und 'false' ausprobiert hatte
Kevin
26
Dies ist jetzt die einzige funktionierende Lösung. Falsch und aus, funktioniert nicht mehr. Sollte jetzt die richtige Antwort sein.
David
5
Der Grund dafür ist, dass das Chrome-Team versucht, empfohlene Werte für die automatische Vervollständigung zu erstellen, wie unter @ developer.google.com/web/fundamentals/design-and-ui/input/… gezeigt. Der Wert "new-password" ist einer der Werte Nur wenige, die zusätzliche Logik haben, und in diesem Fall das automatische
Ausfüllen
30
Funktioniert nicht ab 1.13.2018 Version 63.0.3239.132 (Official Build) (64-Bit)
PellucidWombat
37
Ich wollte nur sagen .. Nachdem ich über dieses Problem gestolpert bin .. Chrome ist ein echtes Stück Arbeit. Jetzt müssen wir durch die Rahmen springen, um die Funktionalität zu deaktivieren, die optional bleiben sollte. In welcher Welt würde das automatische Ausfüllen von Adressen in einer Geschäftsanwendung benötigt, in der die Adresse jedes Mal neu / anders ist. Google wird genauso schlecht wie Microsoft.
Eddy Howard
700

Ich habe gerade festgestellt, dass die aktuelle Version von Chrome Ihren Benutzernamen / Ihre E-Mail-Adresse vor jedem type=passwordFeld automatisch in das Feld ausfüllt, wenn Sie einen gespeicherten Benutzernamen und ein Kennwort für eine Site haben . Es ist egal, wie das Feld heißt - es wird nur das Feld angenommen, bevor das Passwort Ihr Benutzername sein wird.

Alte Lösung

Verwenden Sie <form autocomplete="off">es einfach und es verhindert das Vorfüllen von Passwörtern sowie jede Art von heuristischem Ausfüllen von Feldern basierend auf Annahmen, die ein Browser treffen kann (die oft falsch sind). Im Gegensatz zu einer Verwendung, <input autocomplete="off">die vom automatischen Ausfüllen des Kennworts so gut wie ignoriert zu werden scheint (in Chrome befolgt Firefox dies jedoch).

Aktualisierte Lösung

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

Erstellen Sie einfach ein paar Felder und machen Sie sie mit "display: none" ausgeblendet. 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 legen Sie Ihre realen Felder darunter.

Denken Sie daran, den Kommentar hinzuzufügen, da sich andere Personen in Ihrem Team fragen, was Sie 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 sie seit Jahren für Dutzende von Projekten verwendet. Es funktioniert trotz einiger Kommentare unten immer noch großartig. Es gibt keine Probleme mit der Barrierefreiheit, da die Felder display:nonebedeuten, dass sie nicht fokussiert werden. Wie ich bereits erwähnt habe, müssen Sie sie vorher setzen Ihre realen Felder stellen.

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 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, da die Anti-Usability-Experten von Chrome hart gearbeitet haben. Aber sie haben uns einen Knochen geworfen in Form von:

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

Dies funktioniert und löst meistens das Problem.

Es funktioniert jedoch nicht, wenn Sie kein Kennwortfeld, sondern nur eine E-Mail-Adresse haben. Das kann auch schwierig sein, damit es nicht mehr gelb wird und vorfüllt. Die Lösung für gefälschte Felder kann verwendet werden, um dies zu beheben.

Tatsächlich müssen Sie manchmal zwei gefälschte Felder ablegen und sie an verschiedenen Orten ausprobieren. Zum Beispiel hatte ich bereits zu Beginn meines Formulars gefälschte Felder, aber Chrome hat kürzlich wieder damit begonnen, mein Feld "E-Mail" vorab auszufüllen. Dann habe ich mich verdoppelt und kurz vor dem Feld "E-Mail" weitere gefälschte Felder eingefügt, und das hat das Problem behoben . Wenn Sie entweder das erste oder das zweite Los der Felder entfernen, wird das falsche übereifrige automatische Ausfüllen wiederhergestellt.

Update März 2020

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

In den Kommentaren unten finden Sie einige Hinweise. Eine, die gerade von @anilyeni hinzugefügt wurde, ist möglicherweise eine weitere Untersuchung wert:

Wie ich bemerkt habe, autocomplete="off"funktioniert auf Chrome 80, wenn weniger als 3 Elemente enthalten sind <form>. Ich weiß nicht, was die Logik ist oder wo die zugehörige Dokumentation darüber.

Auch dieser von @dubrox kann relevant sein, obwohl ich ihn nicht getestet habe:

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

Update APRIL 2020

Ein besonderer Wert für Chrome für dieses Attribut ist die Ausführung der Aufgabe: (bei Eingabe getestet - aber nicht von mir) autocomplete="chrome-off"

mike nelson
quelle
7
Ich war mir so sicher, dass dies funktionieren würde, da Sie die heuristische automatische Ausfüllung, die ich bei der Eingabe vor dem Kennwortfeld erlebe, perfekt erklärt haben. Leider hat es bei mir nicht funktioniert, ich habe autocomplete = "off" sowohl auf dem Formular als auch auf allen Eingaben gesetzt und sie werden immer noch gefüllt. Die einzige Lösung, die für mich funktioniert hat, ist der obige Link von goodeye. (Platzieren eines zweiten versteckten Typs = "Passwort" -Eingabe, bevor das Passwort die heuristischen Prüfungen von Chrome auslöst)
Parlament
19
Dies hat früher gut funktioniert, ich habe es auch verwendet, aber seit einem Chrome-Upgrade vor einiger Zeit (zwischen damals und dem 5. Mai) ignoriert Chrome die Formulareigenschaft :(
Tominator
13
Google hat in (Chrome v34, glaube ich) die Entscheidung getroffen, die Richtlinie so zu gestalten, dass Autocomplete = "off", einschließlich Direktiven auf Formularebene, IMMER ignoriert wird. Das wäre in Ordnung, wenn die verdammten Felder tatsächlich richtig wären.
Jammer
10
versuchen Sie autocomplete = "false" nicht autocomplete = "off"
Roughcoder
243
Dieses Attribut ist auch erforderlich:autocomplete="I told you I wanted this off, Google. But you would not listen."
Rybo111
265

Nach Monaten und Monaten des Kampfes habe ich festgestellt, dass die Lösung viel einfacher ist, als Sie sich vorstellen können:

Anstelle von autocomplete="off"Gebrauchautocomplete="false" ;)

So einfach ist das und es funktioniert auch in Google Chrome wie ein Zauber!


Update August 2019 (Gutschrift an @JonEdiger in Kommentaren)

Hinweis: Viele Online-Informationen besagen, dass die Browser jetzt Autocomplete = 'false' als identisch mit Autocomplete = 'off' behandeln. Zumindest ab dieser Minute wird die automatische Vervollständigung für diese drei Browser verhindert.

Stellen Sie es auf Formularebene ein und setzen Sie dann für die Eingaben, die Sie deaktivieren möchten, einen ungültigen Wert wie 'none':

<form autocomplete="off"> 
  <input type="text" id="lastName" autocomplete="none"/> 
  <input type="text" id="firstName" autocomplete="none"/>
</form>
Kaszoni Ferencz
quelle
8
Hat für mich gearbeitet! Aber es gibt eine wichtige Bemerkung: Ich habe 5 Felder auf meiner Webseite: Name, Adresse, Postleitzahl, Telefon und E-Mail. Als ich autocomplete = 'false' in das Formular und in das Feld Name einfügte, funktionierte es immer noch. Als ich jedoch die automatische Vervollständigung = 'false' auch in das Feld Adresse einfügte, wurde die automatische Verfüllung endgültig eingestellt! Sie müssen die Autocomplete-Eigenschaft also nicht in das Anmelde- oder Namensfeld, sondern auch in die folgenden Felder einfügen! (Arbeitete auf Chrome 43.0.2357.81 vom 27.05.2015)
DVD Franco
45
WENN DAS FÜR SIE NICHT FUNKTIONIERT: Beachten Sie, dass Chrome Nutzern auf zwei Arten "hilft". AUTOCOMPLETE fordert Sie auf der Grundlage der vorherigen Übermittlung in demselben Formular auf und wirkt sich auf Personen aus, die das Formular mehrmals verwenden. Die automatische Vervollständigung ist mit autocomplete = "off" deaktiviert. AUTOFILL fordert basierend auf dem Adressbuch von zuvor ausgefüllten ähnlichen Formularen auf anderen Seiten auf. Außerdem werden die Felder hervorgehoben, die geändert werden. Das automatische Ausfüllen kann mit autocomplete = "false" deaktiviert werden.
Genkilabs
4
Dies funktioniert bei mir nicht (Version 43.0.2357.124 m). Dies war wahrscheinlich ein Versehen von Google, das jetzt behoben wurde. Sie scheinen zu denken, "der Benutzer hat immer Recht", indem sie alles automatisch ausfüllen wollen. Das Problem ist, mein Registrierungsformular speichert die Benutzerdaten genau wie das Anmeldeformular, was definitiv nicht das ist, was der Benutzer will ...
rybo111
3
YEP Es funktioniert in Chrome 43.0.2357 !! Dieses Verhalten in Chrome ist so ärgerlich, und ich habe eine Weile gebraucht, um das herauszufinden. Danke für deine Antwort.
Adriano Rosa
3
funktioniert nicht mit Chrome 44.0.2403.157. Wie kann diese Funktion funktionieren und nicht mit verschiedenen Versionen? Es ist lächerlich
Mattijs
120

Manchmal wird sogar autocomplete=offdas Ausfüllen von Anmeldeinformationen in falsche Felder nicht verhindert.

Eine Problemumgehung besteht darin, das automatische Ausfüllen des Browsers im Readonly-Modus zu deaktivieren und die Beschreibbarkeit auf den Fokus zu setzen:

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

Das focusEreignis tritt bei Mausklicks und beim Durchblättern von Feldern auf.

Aktualisieren:

Mobile Safari setzt den Cursor in das Feld, zeigt jedoch keine virtuelle Tastatur an. Diese neue Problemumgehung funktioniert wie zuvor, behandelt jedoch 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: Der Browser füllt die Anmeldeinformationen automatisch in ein falsches Textfeld.

Füllen Sie die Eingaben falsch aus, z. B. indem Sie die Telefoneingabe mit einer E-Mail-Adresse füllen

Manchmal bemerke ich dieses seltsame Verhalten in Chrome und Safari, wenn Kennwortfelder in derselben Form vorhanden sind. Ich denke, der Browser sucht nach einem Passwortfeld, um Ihre gespeicherten Anmeldeinformationen einzufügen. Anschließend wird der Benutzername automatisch in das nächste textähnliche Eingabefeld ausgefüllt, das vor dem Kennwortfeld im DOM angezeigt wird (nur aufgrund von Beobachtungen erraten). Da der Browser die letzte Instanz ist und Sie sie nicht steuern können,

Dieser Readonly-Fix ​​oben hat bei mir funktioniert.

dsuess
quelle
12
Was für eine großartige Lösung :) Sie sollten jquery durch folgende ersetzen: this.removeAttribute ("class")
Roey
Ich habe dies verwendet, um zu verhindern, dass eine Dropdwon-Liste automatisch ausgefüllt wird. Aber auch schreibgeschützt neu gestaltet, damit es nicht so aussah. Tolle Idee!
ComfortablyNumb
1
@Clint: Mein Code-Snippet oben entfernt das schreibgeschützte Attribut, sobald der Benutzer das Feld betritt (per Mausklick oder Tabulatortaste). Ich denke, Sie beziehen sich auf ein Feld, das automatisch gefüllt ist , aber vom Benutzer nicht berührt wird. Was ist dieser Feldzweck - und muss er wirklich geschützt werden? Abhängig vom Szenario kann das Entfernen aller schreibgeschützten Attribute beim Senden eine Option sein. Können Sie einen genaueren Kommentar zu Ihrem Problem hinzufügen? Vielleicht kann ich dir helfen :)
dsuess
1
Wenn Sie JavaScript verwenden. Warum nicht einfach den Wert auf setzen dummyund dann wieder entfernen? Das Hinzufügen und Entfernen von Readonly klingt nach einer gefährlichen Bewegung - was ist, wenn der Browser nicht möchte, dass Sie sich darauf konzentrieren?
Rybo111
1
Anscheinend versucht Google hier, Entscheidungen für uns alle zu treffen. Sie haben das Ticket für autocomplete = "off" geschlossen: bugs.chromium.org/p/chromium/issues/detail?id=468153 . Es ist jedoch ein weiteres Ticket zum Sammeln gültiger Benutzerfälle zum Deaktivieren der automatischen Ausfüllung geöffnet. Beantworten Sie dieses Ticket, um auf dieses Problem aufmerksam zu machen: bugs.chromium.org/p/chromium/issues/detail?id=587466
Norman Xu
80

Wenn Sie eine Suchfeldfunktion implementieren, versuchen Sie, das typeAttribut searchwie folgt festzulegen:

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

Dies funktioniert für mich unter Chrome v48 und scheint ein legitimes Markup zu sein:

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

Dana
quelle
Ja! :) Vielen Dank! Dies funktioniert in Chrome 67.0.3396.99. (Ich denke, Ihr Link sollte lauten: w3.org/wiki/HTML/Elements/input/search ab September 2018).
Andy King
4
Schließlich! funktioniert immer noch Version 69.0.3497.100 (Official Build) (64-Bit) Dies sollte die echte Antwort sein!
Venson
1
Jeder hat Recht und Unrecht und zur gleichen Zeit sollten Sie autocomplete = "off" in das Tag <form autocomplete = "off"> schreiben, anstatt dies einzugeben.
Dadurch
2
Funktioniert auch, wenn Sie autocomplete = "off" für das Formular festlegen (um diese Standardeinstellung formularweit zu ändern) und dann nur type = "search" für die <Eingabe> festlegen müssen
John
9
Nach Chrome Version 72.XX funktioniert dieses Update nicht. Den neuesten Fix
Adheep Mohamed Abdul Kader
65

Versuche dies. Ich weiß, dass die Frage etwas alt ist, aber dies ist ein anderer Ansatz für das Problem.

Mir ist auch aufgefallen, dass das Problem knapp über dem liegt password Feld liegt.

Ich habe beide Methoden ausprobiert

<form autocomplete="off"> und <input autocomplete="off"> aber keiner von ihnen arbeitete für mich.

Also habe ich es mit dem folgenden Snippet behoben - habe einfach ein weiteres Textfeld direkt über dem Feld für den Kennworttyp hinzugefügt und es erstellt display:none .

Etwas wie das:

<input type="text" name="prevent_autofill" id="prevent_autofill" value="" style="display:none;" />
<input type="password" name="password_fake" id="password_fake" value="" style="display:none;" />
<input type="password" name="password" id="password" value="" />

Hoffe es wird jemandem helfen.

Jobin Jose
quelle
1
Dieser hat (für jetzt) ​​für mich gearbeitet. Ich habe festgestellt, dass ich im Laufe der Zeit ungefähr ein halbes Dutzend verschiedene Hacks verwendet habe, und nach einer Weile beschließt Chrome, diesen Hack zu besiegen. Es wird also ein neuer benötigt, wie dieser. In meiner Anwendung habe ich ein Profilaktualisierungsformular mit E-Mail- und Kennwortfeldern, die leer bleiben müssen, sofern der Benutzer keine Änderungen vornehmen möchte. Wenn Chrome jedoch automatisch ausgefüllt wird, wird die Benutzer-ID in das Feld "E-Mail-Bestätigung" eingefügt, was zu allen Arten von Fehlerbedingungen führt, die zu weiteren Fehlerbedingungen führen, da der Benutzer zappelt, wenn er versucht, das Richtige zu tun.
Jeffrey Simon
2
Eine kurze Erklärung, warum dieser Hack (vorerst) funktioniert: Chrome sieht die erste Eingabe von type = password und füllt sie automatisch aus. Es wird davon ausgegangen, dass das Feld direkt davor das Feld userhame sein muss, und dieses Feld wird automatisch mit dem Benutzernamen ausgefüllt. @ JeffreySimon Dies sollte das Phänomen der Benutzer-ID im E-Mail-Bestätigungsfeld erklären (ich habe dasselbe auf meinem Formular gesehen).
MrBoJangles
1
@kentcdodds - nicht sicher, was du damit meinst, dass es nicht mehr funktioniert. Ihr jsbin hat kein Passwortfeld, daher ist eine andere Situation. Ich benutze diese Lösung seit Jahren und habe zuletzt festgestellt, dass sie benötigt wird und erst letzte Woche (März 2015) für mich funktioniert hat.
Mike Nelson
1
Hurra! Eine Lösung, die zu funktionieren scheint! Ich würde empfehlen, dem Feld den Namen zu geben passwordund actual_passwordfür das legitime Feld zu haben, da Google nun das zu betrachten scheint name. Dies bedeutet jedoch, dass Chrome das Kennwort dann nicht speichert. Dies ist die Funktionalität, die ich eigentlich möchte . AAAAARRRRGHH!
Rybo111
2
Update: Dies funktioniert über ein Jahr seit meiner letzten Implementierung. Wir können hier einen soliden Gewinner haben.
MrBoJangles
48

Ich weiß nicht warum, aber das hat mir geholfen und funktioniert.

<input type="password" name="pwd" autocomplete="new-password">

Ich habe keine Ahnung warum, aber autocompelete = "new-password" deaktiviert das automatische Ausfüllen. Es funktionierte in der neuesten Version 49.0.2623.112 Chrome.

Tauras
quelle
Mein Chrom wurde aktualisiert und es funktioniert immer noch für mich. 50.0.2661.87 (64bit)
Tauras
Leider fordert Chrome beim Senden des Formulars (oder wenn die Eingabefelder ausgeblendet / entfernt werden) auf, das geänderte Login zu speichern.
Geschwister
Funktioniert in Version 51.0.2704.79 m
Geoffrey Hale
heiliger F *** warum funktioniert das? Ist das ein Fehler? weil ich es hier getestet und nur in einer Eingabe platziert habe und sowohl für die Eingabe als auch für das Passwort gearbeitet habe, aber ich habe es nur in das Passwort
Leandro RR
Ich habe keine Ahnung. Ich denke, das ist ein Chrom "Ding", das von Entwicklern gemacht wurde. Vielleicht irre ich mich.
Tauras
46

Für mich einfach

<form autocomplete="off" role="presentation">

Erledigt.

Bei mehreren Versionen getestet, war der letzte Versuch auf 56.0.2924.87

Kuf
quelle
@ArnoldRoa Version hinzugefügt, es ist auf unserer Website seit dem Tag, an dem ich es veröffentlicht habe und hatte nur wenige Versionen, in denen es gut funktioniert hat. Welche Version verwendest du? PC / Mac?
Kuf
Funktioniert nicht mit 57.0.2987.110. Chrome hebt es gelb hervor und füllt das Feld mit meinem gespeicherten Passwort vor. Die Seite ist jedoch eine Benutzerverwaltungsseite, keine Anmeldeseite.
1
@Dummy Ich habe es jetzt auf Chrome (57) getestet und es funktioniert immer noch für mich. Haben Sie mit den Eingabefeldern etwas Besonderes gemacht? Kappe Sie setzen Ihren Code irgendwo, wo ich versuchen könnte, zu reproduzieren?
Kuf
3
Version 64.0.3282.186 (Official Build) (64-Bit) Windows. 2018-03-01 FUNKTIONIERT NICHT, um das automatische Ausfüllen zu deaktivieren.
Billy Jean
2
Ziemlich sicher, dass dies die Form / Eingabe von unterstützenden Technologien entfernt. W3c.github.io/using-aria/#ariapresentation
Olex Ponomarenko
25

Sie müssen dieses Attribut hinzufügen:

autocomplete="new-password"

Quelllink: Vollständiger Artikel

Hitesh Kalwani
quelle
Haben Sie Quellen, wie Sie das herausfinden können?
AlexioVay
Funktioniert, ist aber nicht semantisch, da es für Benutzernamen und andere Felder verwendet werden kann.
Robin Andrews
1
Dokumentationsseite: developer.mozilla.org/en-US/docs/Web/Security/…
Justinas
19

Es ist so einfach und knifflig :)

Google Chrome im Grunde für die Suche an jedem ersten sichtbaren Passwort Element innerhalb der <form>, <body>und <iframe>Tags für sie automatisch wieder füllen zu können, so deaktivieren diese Sie ein Dummy - Passwort Element wie folgt hinzufügen müssen:

    • Wenn sich Ihr Kennwortelement in einem <form>Tag befindet, müssen Sie das Dummy-Element unmittelbar nach dem <form>Öffnen des Tags als erstes Element in Ihr Formular einfügen

    • Wenn sich Ihr Kennwortelement nicht in einem <form>Tag befindet, fügen Sie das Dummy-Element unmittelbar nach dem <body>Öffnen des Tags als erstes Element auf Ihrer HTML-Seite ein

  1. Sie müssen das Dummy-Element ausblenden, ohne CSS zu verwenden. Verwenden Sie display:nonedaher grundsätzlich Folgendes als Dummy-Kennwortelement.

    <input type="password" style="width: 0;height: 0; visibility: hidden;position:absolute;left:0;top:0;"/>
Fareed Alnamrouti
quelle
1
Großartige Arbeit, wie haben Sie den Algorithmus von Chrome herausgefunden? Ich habe gerade herausgefunden, dass meine alte Methode, den Wert mit JS zu ändern, nachdem die Seite mit einem setTimeout-Timer geladen wurde, nicht mehr funktioniert. Aber das funktioniert perfekt!
Funktioniert leider nicht für normale TextBox-Eingaben.
eYe
1
eigentlich funktioniert es einfach die name Eigenschaft setzen;)
Fareed Alnamrouti
Auf Chrome 58 funktioniert dies nicht. Verwenden Sie die Breite: 1px. Wenn das Kennwortfeld vollständig ausgeblendet ist, wird es von Chrome normal automatisch ausgefüllt. Auch Z-Index: -999 könnte nützlich sein, damit es keinen Inhalt überlappt.
Cristiancastrodc
1
Funktioniert mit Chrome 67.0 für eckige HTML-Komponenten<form *ngIf="!loggedIn()" #loginForm="ngForm" class="navbar-form navbar-right" (ngSubmit)="login()"><input type="password" style="width: 0;height: 0; visibility: hidden;position:absolute;left:0;top:0;"/><input type="text" #username="ngModel" placeholder="Username" class="form-control" required autocomplete="off" name="username" [(ngModel)]="model.username"><input type="password" #password="ngModel" placeholder="Password" class="form-control" required autocomplete="off" name="password" [(ngModel)]="model.password">...
Junior Mayhé
19

Hier sind meine Lösungsvorschläge, da Google darauf besteht, jede Umgehung, die die Leute zu machen scheinen, außer Kraft zu setzen.

Option 1 - Wählen Sie den gesamten Text beim Klicken aus

Stellen Sie die Werte der Eingaben auf ein Beispiel für Ihren Benutzer (z. B. [email protected]) oder die Bezeichnung des Felds (z. B. Email) ein und fügen Sie focus-selectIhren Eingaben eine Klasse hinzu :

<input type="text" name="email" class="focus-select" value="[email protected]">
<input type="password" name="password" class="focus-select" value="password">

Und hier ist die jQuery:

$(document).on('click', '.focus-select', function(){
  $(this).select();
});

Ich kann wirklich nicht sehen, dass Chrome jemals mit Werten herumspielt. Das wäre verrückt. Hoffentlich ist dies eine sichere Lösung.

Option 2 - Setzen Sie den E-Mail-Wert auf ein Leerzeichen und löschen Sie ihn

Angenommen, Sie haben zwei Eingaben, z. B. E-Mail und Kennwort, setzen Sie den Wert des E-Mail-Felds auf " " (ein Leerzeichen) und fügen Sie das Attribut / den Wert hinzu autocomplete="off". Löschen Sie dies dann mit JavaScript. Sie können den Passwortwert leer lassen.

Wenn der Benutzer aus irgendeinem Grund kein JavaScript hat, stellen Sie sicher, dass Sie die Eingabeserver-Seite kürzen (Sie sollten es wahrscheinlich trotzdem sein), falls er den Speicherplatz nicht löscht.

Hier ist die jQuery:

$(document).ready(function() {
  setTimeout(function(){
    $('[autocomplete=off]').val('');
  }, 15);
});

Ich habe eine Zeitüberschreitung eingestellt 15 da dies 5bei meinen Tests gelegentlich zu funktionieren schien. Daher scheint es eine sichere Sache zu sein, diese Zahl zu verdreifachen.

Wenn der Anfangswert nicht auf ein Leerzeichen gesetzt wird, bleibt die Eingabe in Chrome gelb, als hätte sie automatisch ausgefüllt.

Option 3 - versteckte Eingänge

Fügen Sie dies am Anfang des Formulars ein:

<!-- Avoid Chrome autofill -->
<input name="email" class="hide">

CSS:

.hide{ display:none; }

Stellen Sie sicher, dass Sie die HTML-Notiz behalten, damit Ihre anderen Entwickler sie nicht löschen! Stellen Sie außerdem sicher, dass der Name der versteckten Eingabe relevant ist.

rybo111
quelle
@Vaia - Haben Sie versucht, zu einer anderen Seite zu navigieren und dann die Zurück-Taste zu drücken? Ich bekomme gemischte Ergebnisse - es muss möglicherweise angepasst werden.
Rybo111
Ich habe Option 1 nicht ausprobiert, wenn Sie das meinen. Außerdem musste ich nur das automatische Ausfüllen eines mit Ajax geladenen Modals deaktivieren, das nicht mit der Zurück-Taste aufgerufen wird. Aber wenn es andere Ergebnisse geben wird, werde ich es Ihnen sagen. @ Rybo111
AlexioVay
@ Vaia Ich meinte Option 2 - bitte antworten Sie hier, wenn Sie auf Probleme stoßen. Vielen Dank.
Rybo111
15

Verwenden Sie CSS Text-Security: Disc ohne Typ = Passwort .

html

<input type='text' name='user' autocomplete='off' />
<input type='text' name='pass' autocomplete='off' class='secure' />

or

<form autocomplete='off'>
    <input type='text' name='user' />
    <input type='text' name='pass' class='secure' />
</form>

CSS

input.secure {
    text-security: disc;
    -webkit-text-security: disc;
}
Stiffels
quelle
bester Ansatz, den ich bisher gefunden habe!
Nun
Für meine Zwecke ist das perfekt, danke! Chrome füllt es nicht automatisch aus oder vervollständigt es nicht automatisch, bietet nicht an, es zu speichern, und es ist nicht nur in der Ansicht, sondern auch in der Zwischenablage verdeckt. Ich habe kopiert, was ich eingegeben und in den Editor eingefügt habe, und habe gerade "•••" erhalten •••••••• ". Brillant!
Doug McLean
15

In einigen Fällen schlägt der Browser weiterhin Werte für die automatische Vervollständigung vor, auch wenn das Attribut für die automatische Vervollständigung deaktiviert ist. Dieses unerwartete Verhalten kann für Entwickler ziemlich rätselhaft sein. Der Trick, um die Nicht-Autovervollständigung wirklich zu erzwingen, besteht darin, dem Attribut eine zufällige Zeichenfolge zuzuweisen , zum Beispiel:

autocomplete="nope"
Denis Brezhitskiy
quelle
RE: "Unerwartetes Verhalten" Dieses Verhalten wird von Google vorangetrieben, das glaubt, besser als Entwickler zu wissen, wie jede einzelne Seite funktionieren soll. Manchmal möchte ich nur eine rohe Passworteingabe, ohne Schnickschnack.
Regular Joe
3
Diese Kombination hat ENDLICH für mich funktioniert: role = "präsentation" autocomplete = "nope", getestet in Chrome Version 64.0.3282.186 (Official Build) (64-Bit). Was ein Alptraum!
Billy Jean
2
Die zufällige Zeichenfolge funktioniert für Chrome, jedoch nicht für Firefox. Der Vollständigkeit halber verwende ich sowohl "autocomplete = 'off-no-complete'" als auch setze das readonly-Attribut mit einem onfocus = "this.readOnly = false". Meine App ist eine Unternehmensanwendung, mit der Benutzer Tausende von Adressen eingeben. Der Anwendungsfall, um dies zu steuern, ist also real. Ich kann auch die Verwendung von Javascript garantieren, also habe ich das zumindest für mich
ChronoFish
13

Ich habe festgestellt, dass das Hinzufügen zu einem Formular verhindert, dass Chrome die automatische Ausfüllung verwendet.

<div style="display: none;">
    <input type="text" id="PreventChromeAutocomplete" name="PreventChromeAutocomplete" autocomplete="address-level4" />
</div>

Hier gefunden. https://code.google.com/p/chromium/issues/detail?id=468153#hc41

Wirklich enttäuschend, dass Chrome entschieden hat, dass es besser als der Entwickler weiß, wann Autocomplete ausgeführt werden soll. Hat ein echtes Microsoft-Feeling.

Rob Jensen
quelle
Es ist nicht wirklich die Tatsache, dass Sie PreventChromeAutocomplete sagen. Ich konnte die automatische Vervollständigung zum Laufen bringen, indem ich autocomplete = "off" und name = "somename" sagte. Dies funktioniert jedoch nur, wenn Sie zwei verschiedene Eingaben mit demselben Namen benennen. In Ihrem Fall muss PreventChromeAutocomplete also auf zwei verschiedene Eingaben angewendet worden sein. Sehr seltsam ...
Joe Heyming
11
<input readonly onfocus="this.removeAttribute('readonly');" type="text">

Das Hinzufügen eines schreibgeschützten Attributs zum Tag zusammen mit dem Entfernen des Onfocus-Ereignisses behebt das Problem

Avindu Hewa
quelle
Diese Lösung funktioniert auf Textfeldern
Denis Slonovschi
9

Bei Kombinationen aus Benutzername und Passwort ist dieses Problem leicht zu beheben. Die Chromheuristik sucht nach dem Muster:

<input type="text">

gefolgt von:

<input type="password">

Unterbrechen Sie einfach diesen Prozess, indem Sie Folgendes ungültig machen:

<input type="text">
<input type="text" onfocus="this.type='password'">
Bernesto
quelle
Leider gilt dies nicht nur für Dinge vom Typ Benutzername / Passwort. Chrome überprüft den Platzhaltertext, um zu schließen, was vorgeschlagen werden soll. Zum Beispiel: jsbin.com/jacizu/2/edit
kentcdodds
Es ist gültig, dass Sie die Felder weiterhin mit Browser-Vorschlägen füllen können, wie in Ihrem Beispiel gezeigt, sodass das OP-Problem dadurch nicht wirklich behoben wird. Diese Lösung verhindert lediglich, dass der Browser "automatisch" Kombinationen aus Benutzernamen und Kennwörtern ausfüllt, wie im Beispiel der oberen Antwort. Dies mag für einige von Nutzen sein, ist jedoch keine umfassende Lösung, um nur die automatische Vervollständigung zu deaktivieren, die von Google stammen muss.
Bernesto
4
Wenn Sie jedoch ein Leerzeichen vor Ihrem Platzhaltertext einfügen, wird der automatische Vorschlag basierend auf dem Platzhalter ebenfalls deaktiviert. Auf jeden Fall ein Hack, wenn auch nicht mehr als die anderen Vorschläge. jsbin.com/pujasu/1/edit
Bernesto
Eigentlich ... es schien für Ihr Beispiel zu funktionieren, aber aus irgendeinem Grund funktioniert es bei mir nicht :-(
kentcdodds
Ha! Deshalb wird es Hack genannt ... Haben Sie ein Beispiel, das Sie teilen können, wo es nicht funktioniert?
Bernesto
8

Die von Mike Nelsons bereitgestellte Lösung funktionierte in Chrome 50.0.2661.102 m nicht. Durch einfaches Hinzufügen eines Eingabeelements desselben Typs mit Anzeige: Kein Satz deaktiviert die automatische Vervollständigung des nativen Browsers nicht mehr. Es ist jetzt erforderlich, das Namensattribut des Eingabefelds zu duplizieren, für das Sie die automatische Vervollständigung deaktivieren möchten.

Um zu vermeiden, dass das Eingabefeld innerhalb eines Formularelements dupliziert wird, sollten Sie das nicht angezeigte Element deaktivieren. Dadurch wird verhindert, dass dieses Element als Teil der Formularaktion gesendet wird.

<input name="dpart" disabled="disabled" type="password" style="display:none;">
<input name="dpart" type="password">
<input type="submit">
McCainz
quelle
Für Juni 2016 und Chrome 51.0.2704.106 m ist dies die einzige funktionierende Lösung hier
Denis
Aber wählt das Formular das richtige (sichtbare) Eingabefeld aus, das Sie dann benötigen? Weil es der gleiche Name ist.
AlexioVay
@Vaia: Wenn Sie das deaktivierte Attribut zum doppelten Element hinzufügen, wird verhindert, dass es gesendet wird.
McCainz
8

Im Jahr 2016 begann Google Chrome zu ignorieren, autocomplete=offobwohl es in W3C ist. Die Antwort, die sie gepostet haben :

Der schwierige Teil hier ist, dass irgendwo auf der Reise des Web Autocomplete = Off für viele Formularfelder zum Standard wird, ohne dass wirklich darüber nachgedacht wird, ob dies für Benutzer gut ist oder nicht. Dies bedeutet nicht, dass es keine sehr gültigen Fälle gibt, in denen der Browser keine Daten automatisch ausfüllen soll (z. B. auf CRM-Systemen), aber im Großen und Ganzen sehen wir diese als Minderheitsfälle. Infolgedessen haben wir begonnen, Autocomplete = Off für Chrome Autofill-Daten zu ignorieren.

Was im Wesentlichen sagt: Wir wissen besser, was ein Benutzer will.

Sie haben einen weiteren Fehler geöffnet, um gültige Anwendungsfälle zu veröffentlichen, wenn Autocomplete = Off erforderlich ist

Ich habe in meiner gesamten B2B-Anwendung keine Probleme im Zusammenhang mit der automatischen Vervollständigung gesehen, sondern nur bei der Eingabe eines Kennworttyps.

Das automatische Ausfüllen erfolgt, wenn auf dem Bildschirm ein Kennwortfeld angezeigt wird, auch ein verstecktes. Um diese Logik zu brechen, können Sie jedes Passwortfeld in eine eigene Form bringen, wenn es Ihre eigene Seitenlogik nicht bricht.

<input type=name >

<form>
    <input type=password >
</form>
Norekhov
quelle
4
Könnten Sie bitte hinzufügen, dass das Hinzufügen autocomplete="pineapple"oder ein anderer Kauderwelsch das Problem zu beheben scheint, da Ihre Antwort die aktuellste ist ? Zumindest war es mein Ende!
Douwe de Haan
1
@DouwedeHaan Dies ist in Ordnung, bis das Formular gespeichert wird. Die automatische Vervollständigung gibt Empfehlungen für das gespeicherte Feld "Ananas". Aber vielleicht würde die Verwendung eines zufälligen Hashs für den Wert der automatischen Vervollständigung dies umgehen?
Digout
@ Digout Ich stimme zu. Ein gutes Beispiel wäre, die UUID für solche Dinge zu verwenden. Stellen Sie einfach sicher, dass die Zeichenfolge eindeutig ist!
Douwe de Haan
7

Wenn Sie Probleme beim Beibehalten von Platzhaltern haben, aber das automatische Ausfüllen von Chrome deaktivieren, habe ich diese Problemumgehung gefunden.

Problem

HTML

<div class="form">
    <input type="text" placeholder="name"><br>
    <input type="text" placeholder="email"><br>
    <input type="text" placeholder="street"><br>
</div>

http://jsfiddle.net/xmbvwfs6/1/

Das obige Beispiel führt immer noch zum Problem des automatischen Ausfüllens. Wenn Sie jedoch das required="required"und einige CSS verwenden, können Sie die Platzhalter replizieren, und Chrome erkennt die Tags nicht.

Lösung

HTML

<div class="form">
    <input type="text" required="required">
    <label>Name</label>  
    <br>
    <input type="text" required="required">
    <label>Email</label>    
    <br>
    <input type="text" required="required">
    <label>Street</label>    
    <br>
</div>

CSS

input {
    margin-bottom: 10px;
    width: 200px;
    height: 20px;
    padding: 0 10px;
    font-size: 14px;
}
input + label {
    position: relative;
    left: -216px;
    color: #999;
    font-size: 14px;
}
input:invalid + label { 
    display: inline-block; 
}
input:valid + label { 
    display: none; 
}

http://jsfiddle.net/mwshpx1o/1/

Ryan Grush
quelle
Dies ist die einzige Lösung, die tatsächlich funktioniert. Ich mag es wirklich nicht, aber das ist der miese Zustand, in dem wir uns gerade befinden :-(
kentcdodds
Ab 2017 funktioniert dieser noch einwandfrei. Es benötigt nur dieses Skript, um den inputFokus zu erzwingen, wenn der Benutzer auf den "falschen" Platzhalter klickt: $("label").on("click",function(){ $(this).prev().focus(); });Beachten Sie, dass labeldies nicht vor dem input... Chrome sein kann! Schöne kreative Lösung! +1
Louys Patrice Bessette
7

Ich mochte es wirklich nicht, versteckte Felder zu machen, ich denke, dass es sehr schnell sehr verwirrend wird, wenn man es so macht.

In den Eingabefeldern, deren automatische Vervollständigung Sie stoppen möchten, funktioniert dies. Machen Sie die Felder schreibgeschützt und entfernen Sie im Fokus dieses Attribut wie folgt

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

Dies bedeutet, dass Sie zuerst das schreibgeschützte Attribut entfernen müssen, indem Sie das Feld auswählen. Zu diesem Zeitpunkt werden Sie höchstwahrscheinlich mit Ihren eigenen Benutzereingaben gefüllt und bücken die automatische Ausfüllung , um die Kontrolle zu übernehmen

MZaragoza
quelle
1
Leider funktioniert dies nicht mehr :-( jsbin.com/sobise/edit?html,css,output
kentcdodds
7

Zuvor eingegebene Werte, die von Chrome zwischengespeichert wurden, werden als Dropdown-Auswahlliste angezeigt. Dies kann durch automatische Vervollständigung = Aus deaktiviert werden. Eine explizit gespeicherte Adresse in den erweiterten Einstellungen von Chrome gibt ein Popup-Fenster zum automatischen Ausfüllen an, wenn ein Adressfeld den Fokus erhält. Dies kann durch automatische Vervollständigung = "Falsch" deaktiviert werden. Aber es erlaubt Chrome, zwischengespeicherte Werte in der Dropdown-Liste anzuzeigen.

In einem Eingabe-HTML-Feld werden beide deaktiviert.

Role="presentation" & autocomplete="off"

Bei der Auswahl von Eingabefeldern für das automatische Ausfüllen von Adressen ignoriert Chrome die Eingabefelder, denen das HTML-Element "Label" nicht vorausgeht.

Um sicherzustellen, dass der Chrome-Parser ein Eingabefeld für das Popup zum automatischen Ausfüllen von Adressen ignoriert, kann eine versteckte Schaltfläche oder ein Bildsteuerelement zwischen Beschriftung und Textfeld hinzugefügt werden. Dadurch wird die Chrome-Parsing-Sequenz der Erstellung von Label-Input-Paaren für das automatische Ausfüllen unterbrochen. Kontrollkästchen werden beim Parsen nach Adressfeldern ignoriert

Chrome berücksichtigt auch das Attribut "for" für das Beschriftungselement. Es kann verwendet werden, um die Parsing-Sequenz von Chrom zu unterbrechen.

Momin
quelle
Ich liebe dich. Die einzige Lösung auf dieser Seite, die tatsächlich funktioniert.
Tag Davis Waterbury
Funktioniert nicht im Jahr 2020.
Kai Noack
7

Da wir alle dieses Problem haben, habe ich einige Zeit investiert, um eine funktionierende jQuery-Erweiterung für dieses Problem zu schreiben. Google muss dem HTML-Markup folgen, nicht wir folgen Google

(function ($) {

"use strict";

$.fn.autoCompleteFix = function(opt) {
    var ro = 'readonly', settings = $.extend({
        attribute : 'autocomplete',
        trigger : {
            disable : ["off"],
            enable : ["on"]
        },
        focus : function() {
            $(this).removeAttr(ro);
        },
        force : false
    }, opt);

    $(this).each(function(i, el) {
        el = $(el);

        if(el.is('form')) {
            var force = (-1 !== $.inArray(el.attr(settings.attribute), settings.trigger.disable))
            el.find('input').autoCompleteFix({force:force});
        } else {
            var disabled = -1 !== $.inArray(el.attr(settings.attribute), settings.trigger.disable);
            var enabled = -1 !== $.inArray(el.attr(settings.attribute), settings.trigger.enable);
            if (settings.force && !enabled || disabled)
                el.attr(ro, ro).focus(settings.focus).val("");
        }
    });
};
})(jQuery);

Fügen Sie dies einfach einer Datei wie /js/jquery.extends.js hinzu und fügen Sie es nach jQuery ein. Wenden Sie es beim Laden des Dokuments wie folgt auf jedes Formularelement an:

$(function() {
    $('form').autoCompleteFix();
});

jsfiddle mit Tests

MagicSux
quelle
6

Versuchen Sie den folgenden jQueryCode, der für mich funktioniert hat.

if ($.browser.webkit) {
    $('input[name="password"]').attr('autocomplete', 'off');
    $('input[name="email"]').attr('autocomplete', 'off');
}
Priyanka
quelle
fantastische fantastische Lösungen
DKR
Sie können autocomplete="off"dem Eingabefeld einfach etwas hinzufügen , anstatt jquery zu verwenden. Und das funktioniert übrigens nicht. Vorschläge für Chrome-Passwörter werden weiterhin angezeigt.
Kai Noack
6

Das hat zwei Teile. Chrome und andere Browser speichern zuvor eingegebene Werte für Feldnamen und stellen dem Benutzer auf dieser Grundlage eine Liste für die automatische Vervollständigung zur Verfügung (insbesondere werden Eingaben vom Kennworttyp aus ziemlich offensichtlichen Gründen auf diese Weise nie gespeichert). Sie können hinzufügen autocomplete="off", um dies beispielsweise in Ihrem E-Mail-Feld zu verhindern.

Sie haben dann jedoch Passwortfüller. Die meisten Browser verfügen über eigene integrierte Implementierungen, und es gibt auch viele Dienstprogramme von Drittanbietern, die diese Funktionalität bereitstellen. Das kannst du nicht aufhören. Dies ist der Benutzer, der seine eigene Entscheidung trifft, diese Informationen zu speichern, um sie später automatisch auszufüllen, und sich vollständig außerhalb des Umfangs und des Einflussbereichs Ihrer Anwendung befindet.

Chris Pratt
quelle
Der erste Teil dieser Antwort scheint nicht mehr wahr zu sein: Chrome Bug
Joshua Drake
Ich bin mir nicht sicher, worum es dir geht. Dieser "Fehler" ist nur ein Platzhalter für Chromium, um die Anwendungsfälle von Personen zu sammeln autocomplete="off". Es ist möglich, dass die Absicht darin besteht, es zu entfernen, aber das wird nie explizit angegeben, und es gibt sicherlich nichts, was diesen mentalen Sprung erfordert. Möglicherweise möchten sie nur alternative oder bessere Behandlungsmethoden in Betracht ziehen. Unabhängig davon ist es immer noch Teil der Spezifikation, und auch hier gibt es keinen Hinweis darauf, dass es die Spezifikation verlassen wird. Soweit mir bekannt ist, funktioniert es weiterhin in allen Browsern, einschließlich Chrome.
Chris Pratt
Es gibt einige Fälle, in denen die automatische Vervollständigung = "Aus" von Chrome nicht berücksichtigt wird.
Joshua Drake
1. Einige Einzelfälle sind keine Beweise. 2. Wie ich in meiner Antwort sagte, respektieren Erweiterungen zum Ausfüllen von Formularen und dergleichen dies möglicherweise nicht und oft nicht. Letztendlich liegt es wie bei allen Dingen am Kunden und damit am Benutzer. Sie können lediglich vorschlagen, dass es nicht automatisch ausgefüllt werden soll.
Chris Pratt
6

Wie pro Chromium Fehlerbericht # 352347 Chrome nicht mehr respektiertautocomplete="off|false|anythingelse" , weder auf Formen noch an den Eingängen.

Die einzige Lösung, die für mich funktioniert hat, war das Hinzufügen eines Dummy-Passwortfelds :

<input type="password" class="hidden" />
<input type="password" />
Dr. Gianluigi Zane Zanettini
quelle
6

Mit der Einstellung autocompleteauf offsollte hier funktionieren, habe ich ein Beispiel, das von Google auf der Suchseite verwendet wird. Ich habe dies von inspect element gefunden.

Geben Sie hier die Bildbeschreibung ein

Bearbeiten : Falls offes nicht funktioniert, versuchen Sie es mit falseoder nofill. In meinem Fall funktioniert es mit Chrome Version 48.0

mumair
quelle
5

Hier ist ein schmutziger Hack -

Sie haben Ihr Element hier (Hinzufügen des deaktivierten Attributs):

<input type="text" name="test" id="test" disabled="disabled" />

Und dann am Ende Ihrer Webseite etwas JavaScript einfügen:

<script>
    setTimeout(function(){
        document.getElementById('test').removeAttribute("disabled");
        },100);
</script>
hyper_st8
quelle
5

Andere Lösung, Webkit-basiert. Wie bereits erwähnt, vervollständigt Chrome die E-Mail jedes Mal automatisch, wenn Chrome ein Kennwortfeld findet. AFAIK, dies ist unabhängig von Autocomplete = [was auch immer].

Um dies zu umgehen, ändern Sie den Eingabetyp in Text und wenden Sie die Webkit-Sicherheitsschrift in der gewünschten Form an.

.secure-font{
-webkit-text-security:disc;}

<input type ="text" class="secure-font">

Soweit ich sehen kann, ist dies mindestens so sicher wie der Eingabetyp = Passwort. Es ist sicher kopieren und einfügen. Es ist jedoch anfällig, wenn der Stil entfernt wird, mit dem Sternchen entfernt werden. Natürlich kann der Eingabetyp = Kennwort leicht in den Eingabetyp = Text in der Konsole geändert werden, um automatisch ausgefüllte Kennwörter anzuzeigen, sodass es wirklich ähnlich ist.

Michael.
quelle
Vielen Dank! Dies ist das einzige, was in Chrome 49 funktioniert. Frühere Methoden waren fehlerhaft, da Chrome type="password"jetzt alle Eingaben zu füllen scheint .
Epelc
4

Der einzige Weg, der für mich funktioniert, war: (jQuery erforderlich)

$(document).ready(function(e) {
    if ($.browser.webkit) {
        $('#input_id').val(' ').val('');
    }
});
user3638028
quelle
4

Ich habe das gleiche Problem konfrontiert. Und hier ist die Lösung zum Deaktivieren des automatischen Ausfüllens von Benutzername und Passwort in Chrome (nur mit Chrome getestet).

    <!-- Just add this hidden field before password as a charmed solution to prevent auto-fill of browser on remembered password -->
    <input type="tel" hidden />
    <input type="password" ng-minlength="8" ng-maxlength="30" ng-model="user.password" name="password" class="form-control" required placeholder="Input password">
Thuong
quelle
seltsame Lösung, aber irgendwie ist das das einzige, was für mich auf Chrom 48 funktioniert :)
Jacka