Ich habe eine Webanwendung erstellt, die ein Tagbox-Dropdown verwendet. Dies funktioniert in allen Browsern außer dem Chrome-Browser (Version 21.0.1180.89) hervorragend.
Obwohl sowohl die input
Felder als auch das form
Feld das autocomplete="off"
Attribut enthalten, besteht Chrome darauf, einen Dropdown-Verlauf der vorherigen Einträge für das Feld anzuzeigen, wodurch die Tagbox-Liste gelöscht wird.
html
google-chrome
autocomplete
forms
Herr Fett
quelle
quelle
Antworten:
AKTUALISIEREN
Es scheint, dass Chrome jetzt die Attribute
style="display: none;"
oder ignoriertstyle="visibility: hidden;
.Sie können es in etwas ändern wie:
Nach meiner Erfahrung vervollständigt Chrome nur die erste
<input type="password">
und die vorherige automatisch<input>
. Also habe ich hinzugefügt:Nach oben
<form>
und der Fall wurde gelöst.quelle
display: none;
wird das Element verschwinden, nichts über die automatische Vervollständigung.Verhindern Sie die automatische Vervollständigung von Benutzername (oder E-Mail) und Passwort:
Verhindern Sie die automatische Vervollständigung eines Felds ( funktioniert möglicherweise nicht ):
Erläuterung:
autocomplete
funktioniert<input>
trotz immer noch an einemautocomplete="off"
, aber Sie könnenoff
zu einem zufälligen String wechseln , wienope
.Andere "Lösungen" zum Deaktivieren der automatischen Vervollständigung eines Feldes (dies ist nicht der richtige Weg, aber es funktioniert):
1.
HTML:
JS (Onload):
oder mit jQuery:
2.
HTML:
JS (Onload):
oder mit jQuery:
So fügen Sie mit jQuery mehr als ein Feld hinzu:
Arbeitet in:
Chrome: 49+
Firefox: 44+
quelle
new-password
ist ein guter Haken für jede versteckte Eingabe, die eigentlich kein Passwort ist, dankeautocomplete="nope"
tatsächlich für mich gearbeitet, es sei denn, ich füge es meinen beiden Formularfeldern hinzu. Als ob ich es in einem der beiden Felder haben könnte und dieses Feld dann nicht automatisch vervollständigt wird, aber das andere Feld wird immer noch automatisch vervollständigt, aber sobald ich es in beide Felder lege, beginnen beide wieder mit der automatischen Vervollständigung.Es scheint, dass Chrome jetzt ignoriert, es
autocomplete="off"
sei denn, es befindet sich auf dem<form autocomplete="off">
Tag.quelle
Moderner Ansatz
Nehmen Sie einfach Ihre Eingabe vor
readonly
und entfernen Sie sie im Fokus. Dies ist ein sehr einfacher Ansatz, und Browser füllen keinereadonly
Eingaben. Daher wird diese Methode akzeptiert und von zukünftigen Browser-Updates niemals überschrieben.Der nächste Teil ist optional. Gestalten Sie Ihre Eingabe entsprechend, damit sie nicht wie eine
readonly
Eingabe aussieht .ARBEITSBEISPIEL
quelle
modern approach
. Weniger als 1% der Benutzer auf der Welt haben Javascript deaktiviert. Ehrlich gesagt ist es niemandem wert, sich einem so kleinen Publikum anzupassen, wenn eine große Mehrheit der Websites auf Javascript angewiesen ist. Ich entwickle schon sehr lange Websites und 100% meiner Websites verwenden Javascript und verlassen sich stark darauf. Wenn Benutzer Javascript deaktiviert haben, ist dies ihr eigenes Problem und ihre Wahl, nicht meine. Sie können nicht mindestens 90% der Websites online besuchen oder nutzen, wenn diese deaktiviert sind ... Ihre Ablehnung ist völlig irrelevant.Für eine zuverlässige Problemumgehung können Sie diesen Code zu Ihrer Layoutseite hinzufügen:
Chrome berücksichtigt Autocomplete = off nur, wenn mindestens ein anderes Eingabeelement im Formular mit einem anderen Autocomplete-Wert vorhanden ist.
Dies funktioniert nicht mit Kennwortfeldern - diese werden in Chrome sehr unterschiedlich behandelt. Weitere Informationen finden Sie unter https://code.google.com/p/chromium/issues/detail?id=468153 .
UPDATE: Der Fehler wurde vom Chromium Team am 11. März 2016 als "Won't Fix" geschlossen. Eine vollständige Erklärung finden Sie im letzten Kommentar in meinem ursprünglich eingereichten Fehlerbericht . TL; DR: Verwenden Sie semantische Autocomplete-Attribute wie autocomplete = "new-street-address", um zu vermeiden, dass Chrome das automatische Ausfüllen durchführt.
quelle
Nun, ein bisschen spät zur Party, aber es scheint, dass es ein bisschen Missverständnisse darüber gibt, wie
autocomplete
es funktionieren soll und was nicht. Gemäß den HTML-Spezifikationen kann der Benutzeragent (in diesem Fall Chrome) Folgendes überschreibenautocomplete
:https://www.w3.org/TR/html5/forms.html#autofilling-form-controls:-the-autocomplete-attribute
Im Fall von Chrome haben die Entwickler im Wesentlichen gesagt: "Wir überlassen dies dem Benutzer, um in seinen Einstellungen zu entscheiden, ob er arbeiten möchte
autocomplete
oder nicht. Wenn Sie es nicht möchten, aktivieren Sie es nicht in Ihrem Browser." .Es scheint jedoch, dass dies für meinen Geschmack ein wenig übereifrig ist, aber es ist so, wie es ist. In der Spezifikation werden auch die möglichen Auswirkungen eines solchen Schrittes auf die Sicherheit erörtert:
Nachdem ich die gleiche Frustration wie alle anderen erlebt hatte, fand ich eine Lösung, die für mich funktioniert. Es ist ähnlich wie die
autocomplete="false"
Antworten.Ein Mozilla-Artikel spricht genau dieses Problem an:
https://developer.mozilla.org/en-US/docs/Web/Security/Securing_your_site/Turning_off_form_autocompletion
Der folgende Code sollte also funktionieren:
Und so sollte jeder der folgenden sein:
Das Problem, das ich sehe, ist, dass der Browser-Agent möglicherweise intelligent genug ist, um das
autocomplete
Attribut zu lernen und es beim nächsten Anzeigen des Formulars anzuwenden. Wenn dies der Fall ist, kann ich das Problem nur umgehen,autocomplete
indem ich den Attributwert beim Generieren der Seite dynamisch ändere .Ein erwähnenswerter Punkt ist, dass viele Browser
autocomplete
Einstellungen für Anmeldefelder (Benutzername und Passwort) ignorieren . Wie der Mozilla-Artikel besagt:Zum Schluss noch ein paar Infos, ob das Attribut zum
form
Element oder zuminput
Element gehört. Die Spezifikation hat wieder die Antwort:Damit. Das Einfügen in das Formular sollte für alle Eingabefelder gelten. Das Hinzufügen zu einem einzelnen Element sollte nur für dieses Element gelten (auch wenn das Formular kein Element enthält). Wenn überhaupt
autocomplete
nicht eingestellt, wird standardmäßig verwendeton
.Zusammenfassung
So deaktivieren Sie
autocomplete
das gesamte Formular:Oder wenn Sie es dynamisch tun müssen:
Deaktivieren
autocomplete
eines einzelnen Elements (unabhängig davon, ob die Formulareinstellung vorhanden ist oder nicht)Oder wenn Sie es dynamisch tun müssen:
Und denken Sie daran, dass bestimmte Benutzeragenten selbst Ihre am härtesten umkämpften Deaktivierungsversuche außer Kraft setzen können
autocomplete
.quelle
Die Lösung ist derzeit zu verwenden
type="search"
. Google wendet das automatische Ausfüllen nicht auf Eingaben mit einer Art von Suche an.Siehe: https://twitter.com/Paul_Kinlan/status/596613148985171968
Update 04/04/2016: Sieht so aus, als wäre das behoben! Siehe http://codereview.chromium.org/1473733008
quelle
Chrome Version 34 ignoriert jetzt das
autocomplete=off
, siehe hier .Viele Diskussionen darüber, ob dies eine gute oder eine schlechte Sache ist? Was ist deine Meinung?
quelle
Browser kümmert sich nicht um Autocomplete = Off Auto oder füllt sogar Anmeldeinformationen in falsches Textfeld?
Ich habe es behoben, indem ich das Passwortfeld auf schreibgeschützt gesetzt und aktiviert habe, wenn der Benutzer darauf klickt oder die Tabulatortaste für dieses Feld verwendet.
Korrigieren Sie das automatische Ausfüllen des Browsers: schreibgeschützt und setzen Sie das Schreiben auf den Fokus (per Mausklick und Durchblättern von Feldern)
Update: Mobile Safari setzt den Cursor in das Feld, zeigt jedoch keine virtuelle Tastatur an. New Fix funktioniert wie zuvor, behandelt jedoch die virtuelle Tastatur:
Live-Demo https://jsfiddle.net/danielsuess/n0scguv6/
// UpdateEnd
Übrigens mehr Informationen zu meiner Beobachtung:
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, würde manchmal sogar die automatische Vervollständigung = aus nicht verhindern, dass Anmeldeinformationen in falsche Felder eingegeben werden, jedoch nicht in Benutzer- oder Spitznamenfelder.
quelle
Sie können verwenden
autocomplete="new-password"
Arbeitet in:
quelle
TL; DR: Teilen Sie Chrome mit, dass dies eine neue Passworteingabe ist und keine alten als Vorschläge für die automatische Vervollständigung bereitgestellt werden:
autocomplete="off"
funktioniert aufgrund einer Entwurfsentscheidung nicht - viele Untersuchungen zeigen, dass Benutzer Passwörter viel länger und schwerer hacken können, wenn sie sie in einem Browser oder Passwortmanager speichern können.Die Spezifikation für
autocomplete
hat sich geändert und unterstützt jetzt verschiedene Werte, damit Anmeldeformulare einfach automatisch ausgefüllt werden können:Wenn Sie diese nicht bereitstellen, versucht Chrome immer noch zu raten, und wenn dies der Fall ist, wird dies ignoriert
autocomplete="off"
.Die Lösung besteht darin, dass auch
autocomplete
Werte für Formulare zum Zurücksetzen von Kennwörtern vorhanden sind:Sie können dieses
autocomplete="new-password"
Flag verwenden, um Chrome anzuweisen, das Kennwort nicht zu erraten, selbst wenn eines für diese Website gespeichert ist.Chrome kann Kennwörter für Websites auch direkt mithilfe der Anmeldeinformations-API verwalten , die ein Standard ist und möglicherweise irgendwann universelle Unterstützung bietet.
quelle
Ich habe den endlosen Kampf mit Google Chrome mit zufälligen Zeichen gelöst. Wenn Sie die automatische Vervollständigung immer mit einer zufälligen Zeichenfolge rendern, wird sie sich nie an etwas erinnern.
Hoffe, dass es anderen Menschen helfen wird.
quelle
Autocomplete="Off"
funktioniert nicht mehrVersuchen Sie beispielsweise, nur eine zufällige Zeichenfolge anstelle von
"Off"
zu verwendenAutocomplete="NoAutocomplete"
Ich hoffe, es hilft.
quelle
Wenn Chrom das ignoriert
autocomplete="off"
, löse ich es mit einer dummen Art und Weise, bei der "gefälschte Eingabe" verwendet wird, um Chrom zu betrügen, um es zu füllen, anstatt die "echte" zu füllen.Beispiel:
Chrome füllt die "gefälschte Eingabe" aus, und beim Senden übernimmt der Server den Wert "echte Eingabe".
quelle
Ich poste diese Antwort, um eine aktualisierte Lösung für dieses Problem zu finden. Ich verwende derzeit Chrome 49 und es gibt keine Antwort auf diese Frage. Ich suche auch nach einer Lösung, die mit anderen Browsern und früheren Versionen funktioniert.
Fügen Sie diesen Code am Anfang Ihres Formulars ein
Verwenden Sie dann für Ihr echtes Passwortfeld
Kommentieren Sie diese Antwort, wenn dies nicht mehr funktioniert oder wenn Sie ein Problem mit einem anderen Browser oder einer anderen Version haben.
Genehmigt am:
quelle
Für alle, die nach einer Lösung suchen, finde ich es endlich heraus.
Chrome befolgt nur die automatische Vervollständigung = "Aus", wenn es sich bei der Seite um eine HTML5-Seite handelt (ich habe XHTML verwendet).
Ich habe meine Seite in HTML5 konvertiert und das Problem ist verschwunden (facepalm).
quelle
Ändern Sie das Attribut für den Eingabetyp in
type="search"
.Google wendet keine automatische Füllung auf Eingaben mit einer Art von Suche an.
quelle
Bis letzte Woche schienen die beiden folgenden Lösungen für Chrome, IE und Firefox zu funktionieren. Mit der Veröffentlichung von Chrome Version 48 (und immer noch in 49) funktionieren sie jedoch nicht mehr:
Folgendes im Passworteingabeelement:
autocomplete = "aus"
Um dies schnell zu beheben, habe ich zunächst versucht, das Kennworteingabeelement zunächst auf deaktiviert zu setzen, und dann ein setTimeout in der Dokumentbereitschaftsfunktion verwendet, um es wieder zu aktivieren.
Aber das schien so verrückt zu sein und ich suchte weiter und fand @tibalts Antwort in Deaktivieren von Chrome Autofill . Seine Antwort ist, autocomplete = "new-password" in der Passworteingabe zu verwenden, und dies scheint in allen Browsern zu funktionieren (ich habe meine Fixnummer 1 oben zu diesem Zeitpunkt beibehalten).
Hier ist der Link in der Google Chrome-Entwicklerdiskussion: https://code.google.com/p/chromium/issues/detail?id=370363#c7
quelle
autocomplete=off
wird in modernen Browsern weitgehend ignoriert - hauptsächlich aufgrund von Passwort-Managern usw.Sie können versuchen, dies hinzuzufügen.
autocomplete="new-password"
Es wird nicht von allen Browsern vollständig unterstützt, funktioniert jedoch bei einigenquelle
autocomplete="off"
funktioniert normalerweise, aber nicht immer. Dies hängtname
vom Eingabefeld ab. Namen wie "Adresse", "E-Mail", "Name" werden automatisch vervollständigt (Browser glauben, dass sie Benutzern helfen), wenn Felder wie "Code", "Pin" - nicht automatisch vervollständigt werden (fallsautocomplete="off"
festgelegt).Meine Probleme waren - Autocomplete hat mit dem Google Address Helper rumgespielt
Ich habe es behoben, indem ich es umbenannt habe
von
zu
Getestet in Chrom 71.
quelle
Anstelle von autocomplete = "off" verwenden Sie autocomplete = "false" ;)
von: https://stackoverflow.com/a/29582380/75799
quelle
Keine Ahnung, warum dies in meinem Fall funktioniert hat, aber auf Chrome habe ich verwendet
autocomplete="none"
und Chrome hat aufgehört, Adressen für mein Textfeld vorzuschlagen.quelle
Ab Chrome 42
2015-05-21T12:50:23+00:00
funktioniert keine der Lösungen / Hacks in diesem Thread (ab ) zum Deaktivieren der automatischen Vervollständigung für ein einzelnes Feld oder das gesamte Formular.BEARBEITEN: Ich habe festgestellt, dass Sie tatsächlich nur ein Dummy-E-Mail-Feld in Ihr Formular einfügen müssen (Sie können es mit ausblenden
display: none
), bevor die anderen Felder die automatische Vervollständigung verhindern. Ich gehe davon aus, dass Chrome mit jedem automatisch ausgefüllten Feld eine Art Formularsignatur speichert und ein weiteres E-Mail-Feld einschließt, das diese Signatur beschädigt und das automatische Ausfüllen verhindert.Die gute Nachricht ist, dass, da die "Formularsignatur" dadurch beschädigt wird, keines der Felder automatisch vervollständigt wird, sodass kein JS erforderlich ist, um die gefälschten Felder vor dem Senden zu löschen.
Alte Antwort:
Das einzige, was ich als noch brauchbar befunden habe, ist das Einfügen von zwei Dummy-Feldern vom Typ E-Mail und Passwort vor den realen Feldern. Sie können sie so einstellen, dass sie
display: none
ausgeblendet werden (es ist nicht klug genug, diese Felder zu ignorieren):Leider müssen sich die Felder in Ihrem Formular befinden (andernfalls werden beide Eingabesätze automatisch ausgefüllt). Damit die gefälschten Felder wirklich ignoriert werden, müssen Sie einige JS auf dem Formular-Submit ausführen, um sie zu löschen:
Beachten Sie von oben, dass das Löschen des Werts mit Javascript die automatische Vervollständigung überschreibt. Wenn es also akzeptabel ist, das richtige Verhalten bei deaktiviertem JS zu verlieren, können Sie all dies mit einer JS-Autovervollständigung "Polyfill" für Chrome vereinfachen:
quelle
Ich hatte ein ähnliches Problem, bei dem das Eingabefeld entweder einen Namen oder eine E-Mail enthielt. Ich habe autocomplete = "off" gesetzt, aber Chrome hat immer noch Vorschläge erzwungen. Es stellte sich heraus, dass der Platzhaltertext die Wörter "Name" und "E-Mail" enthielt.
Zum Beispiel
Ich habe es umgangen, indem ich in die Wörter im Platzhalter ein Leerzeichen von Null eingefügt habe. Keine automatische Vervollständigung von Chrome mehr.
quelle
Verwenden Sie in Chrome 48+ diese Lösung:
Stellen Sie gefälschte Felder vor echte Felder:
Verstecke gefälschte Felder:
Du hast es geschafft!
Dies funktioniert auch für ältere Versionen.
quelle
autocomplete="off"
auf demform
Tag. Versuchen Sie auch, gefälschte Eingaben unmittelbar nach demform
Tag zu platzieren.Nach dem Chrome v. 34 funktioniert die Einstellung
autocomplete="off"
am<form>
Tag nichtIch habe die Änderungen vorgenommen, um dieses nervige Verhalten zu vermeiden:
name
und dasid
der PassworteingabepasswordInput
)(Bisher hat Chrome das gespeicherte Passwort nicht in die Eingabe eingefügt, aber das Formular ist jetzt fehlerhaft.)
Damit das Formular funktioniert, müssen Sie diesen Code ausführen, wenn der Benutzer auf die Schaltfläche "Senden" klickt oder wenn Sie das Senden des Formulars auslösen möchten:
In meinem Fall habe ich früher
id="password" name="password"
die Passworteingabe eingegeben, also habe ich sie zurückgesetzt, bevor ich die Übermittlung ausgelöst habe.quelle
Nachdem Sie alle Lösungen ausprobiert haben, scheint Folgendes für die Chrome-Version 45 zu funktionieren: Formular mit Kennwortfeld:
quelle
Ich habe gerade auf Chrome 49 aktualisiert und die Lösung von Diogo Cid funktioniert nicht mehr.
Ich habe eine andere Problemumgehung vorgenommen, um die Felder zur Laufzeit nach dem Laden der Seite auszublenden und zu entfernen.
Chrome ignoriert jetzt die ursprüngliche Problemumgehung, indem die Anmeldeinformationen auf das erste angezeigte
type="password"
Feld und das vorherigetype="text"
Feld angewendet werden. Daher habe ich beide Felder mithilfe von CSS ausgeblendetvisibility: hidden;
Ich weiß, dass es vielleicht nicht sehr elegant erscheint, aber es funktioniert.
quelle
Ich fand diese Lösung am besten geeignet:
Es muss nach dom ready oder nach dem Rendern des Formulars geladen werden.
quelle
Obwohl ich der Meinung bin, dass die automatische Vervollständigung eine Benutzerwahl sein sollte, gibt es Zeiten, in denen Chrome zu eifrig damit umgeht (andere Browser möglicherweise auch). Beispielsweise wird ein Kennwortfeld mit einem anderen Namen weiterhin automatisch mit einem gespeicherten Kennwort gefüllt und das vorherige Feld mit dem Benutzernamen gefüllt. Dies ist besonders dann problematisch, wenn es sich bei dem Formular um ein Benutzerverwaltungsformular für eine Web-App handelt und Sie nicht möchten, dass das automatische Ausfüllen es mit Ihren eigenen Anmeldeinformationen auffüllt.
Chrome ignoriert Autocomplete = "off" jetzt vollständig. Während die JS-Hacks gut funktionieren mögen, habe ich einen einfachen Weg gefunden, der zum Zeitpunkt des Schreibens funktioniert:
Setzen Sie den Wert des Passwortfeldes auf das Steuerzeichen 8 (
"\x08"
in PHP oder
in HTML). Dadurch wird verhindert, dass Chrome das Feld automatisch ausfüllt, da es einen Wert hat, aber kein tatsächlicher Wert eingegeben wird, da dies das Rücktastezeichen ist.Ja, das ist immer noch ein Hack, aber es funktioniert bei mir. YMMV.
quelle
form
zum Erstellen neuer und Bearbeiten vorhandener Benutzer wiederverwenden kann, wurde durch einfaches Überschreiben voninput
Werten über JS die automatische Vervollständigung entfernt.