728 Stimmen

Chrome ignoriert autocomplete="off"

Ich habe eine Webanwendung erstellt, die ein Tagbox-Dropdown verwendet. Dies funktioniert in allen Browsern gut, außer im Chrome-Browser (Version 21.0.1180.89).

Trotz des input-Feldes UND des form-Feldes mit dem Attribut autocomplete="off" besteht Chrome darauf, eine Dropdown-Verlaufsliste früherer Einträge für das Feld anzuzeigen, was die Tagbox-Liste auslöscht.

17 Stimmen

Technisch wurde diese Frage etwa 5 Monate vor der als "Diese Frage hat hier bereits eine Antwort" bezeichneten Frage gestellt. Diese Frage ist das Duplikat, da sie nach dieser gestellt wurde.

0 Stimmen

Ehrlich gesagt, was wenn das der Grund für das Deaktivieren von autocomplete=off ist. Was ist, wenn der Plan ist, sicherzustellen, dass das Web so detailliert und beschrieben ist, dass der Browser, den Sie gerade verwenden, jedes Feld automatisch ausfüllen kann, wie es ihre neueste Version möchte. Wenn das der Fall wäre, müssten wir alle Felder beschreiben - und der Browser würde das automatische Ausfüllen für alle Felder deaktivieren, die außerhalb des Bereichs des Autocomplete-Skripts/Apps liegen... Ich wette darauf, dass dies der Fall ist.

87 Stimmen

7 Jahre und immer noch können wir die automatische Vervollständigung nicht richtig deaktivieren... so eine Schande...

0voto

Nishant Punkte 330

Ich benutze Chrome - Version 64.0.3282.140 (Offizieller Build) (64-Bit) und habe folgenden Code zusammen mit dem Formularnamen verwendet und es hat für mich funktioniert.

....

    setTimeout(function(){
        document.formNameHere.reset();
    },500);

0 Stimmen

Das Problem besteht darin, dass der Benutzer weiterhin wählen kann, die gespeicherten Passwörter nach der ersten Reinigung zu verwenden, indem er einfach entweder Benutzername / Passwort-Felder fokussiert. Zumindest in Chrome fordert es dazu auf, gespeicherte Anmeldeinformationen zu verwenden. Dies bricht im Grunde jeden anderen Versuch, Felder zu reinigen / zurückzusetzen.

0voto

Brennan Cheung Punkte 3403

Keine der Lösungen hat funktioniert, außer indem ich ihm ein gefälschtes Feld für die automatische Vervollständigung gegeben habe. Ich habe ein React-Komponente erstellt, um dieses Problem zu lösen.

import React from 'react'

// Google Chrome weigert sich hartnäckig, das HTML-Attribut autocomplete="off" zu respektieren, daher
// müssen wir ihm ein "gefälschtes" Feld geben, damit er es automatisch ergänzt, das nie "benutzt" wird.

const DontBeEvil = () => (

)

export default DontBeEvil

0voto

jonh Punkte 213

Ich nenne das den Vorschlaghammer-Ansatz, aber er scheint für mich zu funktionieren, wo alle anderen Ansätze, die ich versucht habe, gescheitert sind:

Hinweis: Die input Name- und ID-Attribute sollten nichts enthalten, was dem Browser einen Hinweis auf die Daten geben würde, da diese Lösung sonst nicht funktioniert. Ich benutze zum Beispiel "fa" anstelle von "FullAddress".

Und das folgende Skript beim Seitenaufruf (dieses Skript verwendet JQuery):

$("[data-autocomplete-ninja]").each(function () {
    $(this).focus(function () {
        $(this).data("ninja-name", $(this).attr("name")).attr("name", "");
    }).blur(function () {
        $(this).attr("name", $(this).data("ninja-name"));
    });
});

Die obige Lösung sollte verhindern, dass der Browser Daten aus anderen Formularen autofillt oder aus vorherigen Sendungen im selben Formular.

Im Grunde genommen entferne ich das Name-Attribut, während das Eingabefeld im Fokus ist. Solange Sie nichts machen, was das Name-Attribut benötigt, während das Element im Fokus ist, wie z.B. Selektoren nach Elementnamen verwenden, sollte diese Lösung harmlos sein.

0voto

gem007bd Punkte 1005

Für dieses Problem habe ich diese CSS-Lösung verwendet. Es funktioniert für mich.

input{
  text-security:disc !important;
  -webkit-text-security:disc !important;
  -moz-text-security:disc !important;
}

0 Stimmen

Es hilft auch nicht, der Anwendungsfall für Textsicherheit ist völlig anders und nicht mit der Autovervollständigung verwandt

0voto

Fei Sun Punkte 321

Ich habe eine nahezu perfekte Lösung für dieses Problem: Entfernen Sie "type=password" von allen Passwort-Eingabeelementen, nachdem sie alle in den DOM geladen wurden, geben Sie eine Verzögerung, um das "type=password" zurückzusetzen. Chrome wird den geänderten Typ für das automatische Ausfüllen ignorieren. Beispiel:

setTimeout(()=>{ele.type="password"},3000)

Oder ändern Sie den Typ über ein Ereignis:

ele.oninput=function(){ele.type="password"}

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