Ich weiß, dass es eine ähnliche Frage zu Stackoverflow gibt, aber keine der Lösungen dort hat für mich funktioniert.
<form autocomplete="off" id="search_form" method="post" action="">
<input autocomplete="off" type="text" />
</form>
Wie Sie sehen, habe ich autocomplete=off
auf BEIDES Formular und Eingabefeld gesetzt, aber Google Chrome zeigt diese Liste der automatischen Vervollständigung immer noch an. Dies ist bei anderen Browsern wie Firefox und Safari nicht der Fall.
Jede andere Lösung, als autocomplete=off
auf das Formular-Tag zu setzen?
Dies ist auf eine Entwurfsentscheidung von Chrome zurückzuführen (jeder Chrome-Benutzer möchte dieses Verhalten).
Der Grund dafür ist, was Google Priorität der Wahlkreise nennt:
Es gibt verschiedene Möglichkeiten, um zu arbeiten, aber es ist sehr wahrscheinlich, dass diese in zukünftigen Chrome-Versionen behoben werden, da die Chrome-Entwickler ihr Verhalten als korrekt und Ihre Problemumgehung als Fehler betrachten.
Selbst wenn die Problemumgehung funktioniert, führt dies zu verwirrendem Verhalten für den Benutzer. Sie erwarten, dass das automatische Ausfüllen der Einstellungen den Einstellungen entspricht.
Viele Benutzer haben sich bereits entschieden, die Einstellungen für die automatische Vervollständigung von Apps mit Plug-Ins oder Skripts zu ignorieren, bei denen nur die automatische Vervollständigung auf der Seite deaktiviert wird - sie hatten diese Wahl bereits.
Sie sollten am besten mit der Annahme umgehen, dass Autocomplete funktionieren kann, und dies berücksichtigen.
Ich persönlich hasse es, wenn Websites mein Passwort nicht zurückrufen und diejenigen, die Browsererweiterungen verwenden, außer Kraft setzen. Ich erstelle jedoch auch Anwendungen für meinen Job, und das Abrufen von Passwörtern gilt als Sicherheitsrisiko, da ein Benutzer seinen Computer möglicherweise nicht gesperrt lässt. Meiner Meinung nach ist das Sperren der Computer durch Benutzer nicht für die lokale IT, nicht für die Anwendung von Bedeutung. Die lokale IT kann die automatische Vervollständigung von Kennwörtern für alle Webanwendungen deaktivieren, wenn ihren Benutzern nicht vertraut werden kann.
Um die Sicherheitsprüfungen zu bestehen, müssen leider einige Anwendungen die automatische Vervollständigung deaktivieren. Es gibt verschiedene Möglichkeiten, dies zu tun, aber sie sind alle schrecklich. Der erste Hack ist, die Passworteingabe komplett neu zu machen:
<input type="hidden" name="password" id="realPassword" />
<input type="password" name="{randomly generated}"
onchange="document.getElementById('realPassword').value = this.value" />
Ich habe alles zur Vereinfachung inliniert, aber dies sollte Ihnen eine Vorstellung von dem Hack geben - kein Plug-In oder Browser kann eine Eingabe automatisch mit einem völlig neuen Namen füllen.
Diese Lösung bricht ab, wenn Sie ARIA und Labels ordnungsgemäß erstellen (da der Browser/die Erweiterung die Eingabe vom Label finden und automatisch füllen kann).
Option 2, auch schrecklich, besteht darin, zu warten, bis die Autovervollständigung abgefeuert wurde, und dann das Feld auszublenden:
<input type="text" name="username"
onchange="window.setTimeout(function() {
document.getElementById('password').value = '';
}, 100)" />
<input type="password" id="password" />
Wie ich schon sagte, böse.
Es kann ein Fehler in Google Chrome sein. Sie können nicht durch das Erstellen einer versteckten Eingabe betrügen. Die Funktion zum automatischen Abschließen erhält den ersten Eingabetext, um die Daten zu füllen.
<form autocomplete="off" id="search_form" method="post" action="">
<input type="text" style="display:none" />
<input autocomplete="off" type="text" />
</form>
Dies scheint ein wiederkehrendes Problem in Google Chrome zu sein, obwohl das Hinzufügen von Autovervollständigung zur Form did in meinem Build hinzugefügt wurde. In neueren Versionen ist dies möglicherweise nicht mehr der Fall.
Dies ist ein Hack. Geben Sie Ihrer Eingabe eine ID, sagen Sie foo
und in JavaScript:
if (navigator.userAgent.toLowerCase().indexOf('chrome') >= 0) {
setTimeout(function () {
document.getElementById('foo').autocomplete = 'off';
}, 1);
}
Prüfen Sie, ob dies für Sie funktioniert. Der einzige Nachteil ist, dass für diejenigen, die Chrome und mit deaktiviertem JavaScript verwenden, das Feld trotzdem automatisch ausgefüllt wird.
Das Attribut autocomplete
ist neu in HTML5
.
Da Sie DOCTYPE
nicht erwähnt haben, könnte dies meiner Meinung nach der einzig mögliche Grund sein. Weitere Informationen finden Sie unter MDNs Deaktivieren der automatischen Formulareingabe .
Fügen Sie den folgenden HTML5 DOCTYPE
hinzu.
<!DOCTYPE html>
FYI: In einigen Browsern müssen Sie möglicherweise eine
autocomplete
- Funktion für .__ aktivieren. Dies funktioniert (siehe "Einstellungen" im Menü des Browsers).
Sie sind verwenden es korrekt und erwähnen das autocomplete
-Attribut unter form
element. Es ist jedoch nicht erforderlich, dass es für input
-Tag gesondert erwähnt wird.
<form autocomplete="off" id="search_form" method="post" action="">
<input type="text" />
</form>
Update: Hier finden Sie eine Liste von Lösungen in autocomplete-Attribut und Webdokumenten mit XHTML .
versuchen Sie das, arbeitete für mich, nachdem ich ein bisschen herumgespielt hatte
if ( navigator.userAgent.toLowerCase().indexOf('chrome') >= 0 ) {
$('input[autocomplete="off"]').each( function(){
var type = $(this).attr( 'type');
$(this).attr( 'type', '_' + type );
$(this).attr( 'type', type );
});
}
wenn Sie den AJAX - Aufruf verwenden, um Daten an das Backend zu senden. Nach dem Aufruf von AJAX sollten die Kennwortfelder leer sein. Dann wird die Kennwort-Eingabeaufforderung nicht gespeichert.
ZB: $ (# Foo) .val ("");