431 Stimmen

Gibt es eine W3C gültige Möglichkeit, die automatische Vervollständigung in einem HTML-Formular zu deaktivieren?

Bei Verwendung des xhtml1-transitional.dtd doctype, der eine Kreditkartennummer mit folgendem HTML-Code erfasst

<input type="text" id="cardNumber" name="cardNumber" autocomplete='off'/>

führt zu einer Warnung des W3C-Validators:

Es gibt kein Attribut "Autovervollständigen".

Gibt es eine W3C / Standards Weg zum Browser Auto-Vervollständigung auf sensible Felder in einem Formular zu deaktivieren?

427voto

Nick Presta Punkte 27458

Hier ist ein guter Artikel des MDC, der die Probleme (und Lösungen) der automatischen Formularvervollständigung erläutert. Microsoft hat etwas Ähnliches veröffentlicht aquí ebenfalls.

Um ehrlich zu sein, wenn dies etwas ist, das Ihren Nutzern wichtig ist, scheint es angemessen, Standards auf diese Weise zu "brechen". Amazon zum Beispiel verwendet das Attribut "Autovervollständigen" sehr häufig, und es scheint gut zu funktionieren.

Wenn Sie die Warnung ganz entfernen möchten, können Sie JavaScript verwenden, um das Attribut auf Browser anzuwenden, die es unterstützen (IE und Firefox sind die wichtigsten Browser), indem Sie someForm.setAttribute( "autocomplete", "off" ); someFormElm.setAttribute( "autocomplete", "off" );

Wenn Ihre Website HTTPS verwendet, schaltet der IE die automatische Vervollständigung automatisch ab (wie auch einige andere Browser, soweit ich weiß).

Update

Da diese Antwort immer noch viele Stimmen erhält, möchte ich darauf hinweisen, dass Sie in HTML5 das Attribut "autocomplete" für Ihr Formularelement verwenden können. Siehe die Dokumentation beim W3C zu finden.

65voto

Henrik Paul Punkte 65301

Es würde mich sehr überraschen, wenn das W3C eine Möglichkeit vorgeschlagen hätte, die mit (X)HTML4 funktionieren würde. Die Autovervollständigungsfunktion ist vollständig browserbasiert und wurde erst in den letzten Jahren eingeführt (lange nachdem der HTML4-Standard geschrieben wurde).

Es würde mich allerdings nicht überraschen, wenn HTML5 eine solche Funktion hätte.

Edita: Wie ich dachte, HTML5 tut das haben Funktion. Um Ihre Seite als HTML5 zu definieren, verwenden Sie den folgenden Doctype (d. h. setzen Sie diesen als allerersten Text in Ihren Quellcode). Beachten Sie, dass nicht alle Browser diesen Standard unterstützen, da er noch im Entwurfsstadium ist.

<!DOCTYPE html>

58voto

RuudKok Punkte 5222

HTML 4 : Nein

HTML 5 : Ja

Das Attribut autocomplete ist ein Aufzählungsattribut. Das Attribut hat zwei Zustände. Der auf entspricht dem Zustand on, und das Schlüsselwort aus entspricht dem Zustand "Aus". Das Attribut kann auch weggelassen werden. Das fehlende Wert ist standardmäßig der auf Zustand. Die Website aus Zustand zeigt an, dass durch Standardmäßig wird der Name des Autofill-Feldes für die Steuerelemente im Formular gesetzt auf aus Der Status "on" bedeutet, dass die Steuerelemente im Formular standardmäßig des Formulars ihre autofill Feldname auf "ein" gesetzt.

Referenz: W3

32voto

Phantom Watson Punkte 2628

Nein, aber die automatische Vervollständigung des Browsers wird oft dadurch ausgelöst, dass das Feld die gleiche name als Felder, die zuvor ausgefüllt wurden. Wenn Sie einen geschickten Weg finden könnten, um ein randomisierter Feldname kann die Autovervollständigung keine zuvor eingegebenen Werte für das Feld übernehmen.

Wenn Sie ein Eingabefeld mit einem Namen wie " email_<?= randomNumber() ?> "und lassen Sie dann das Skript, das diese Daten empfängt, in einer Schleife die POST- oder GET-Variablen nach etwas durchsuchen, das dem Muster " email_[some number] ", könnten Sie das durchziehen, und der Erfolg wäre (praktisch) garantiert, unabhängig vom Browser .

31voto

David Waters Punkte 11759

Nein, ein guter Artikel ist hier in Özila Wiki .

Ich würde weiterhin die ungültigen attribute . Ich denke, hier sollte der Pragmatismus über die Validierung siegen.

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