Es scheint, dass das Chrome-Autocomplete-Ereignis bei DOMContentLoaded
ausgelöst wird, und in der neuesten Version von Chrome (110.0.5481.178) jetzt autocomplete="nope"
und autocomplete="new-password"
oder zufälliges Attribut ignoriert, also wenn Sie den readonly-Trick oder andere JQuery- und Js-Zufälligkeiten nicht verwenden möchten, können Sie die Eingaben (E-Mail, Passwort und Telefon hauptsächlich) einfach auf Text setzen und im load
-Ereignis einfach wieder auf den richtigen Typ umstellen, dies sollte mindestens 1ms nach dem load
-Ereignis geschehen, denn wenn es sofort gemacht wird, wird es vom Browser automatisch vervollständigt, verwenden Sie also diesen Trick:
Setzen Sie den Eingabetyp type
auf "text" und speichern Sie den echten Typ in einem Attribut oder einer Klasse wie folgt:
Dann, im Fenster load
-Ereignis, verwenden Sie die setTimeout
-Funktion und es ist erledigt, die Eingabe wird den richtigen Typ haben und wird nicht automatisch ausgefüllt
window.addEventListener('load', ()=>{
document.querySelectorAll('input[data-on-load-type]').forEach(trickedInput=>{
trickedInput.setAttribute('type', trickedInput.getAttribute('data-on-load-type'))
});
});
Bearbeiten: möchte nur mehr Informationen darüber hinzufügen, wie das Autocomplete zu funktionieren scheint.
Das Autocomplete passiert meistens, wenn ein Passwort und mindestens ein anderes Eingabeelement im DOM sind, der Browser wird alles als autocompletable behandeln, auch wenn sie sich nicht in einem
-Tag befinden oder das autocomplete
-Attribut auf nope oder new-password gesetzt ist, also wenn ein Passwortfeld gefunden wird und jedes andere autocompletable Eingabefeld wie E-Mail, Telefon oder Adresse vorhanden ist, werden diese ausgefüllt, außer wenn sie display: none;
haben, dann wird der Browser trotzdem versuchen, jedes andere sichtbare Eingabeelement auszufüllen, auch wenn es nicht mit einem Kontakt- oder Anmeldeformular zusammenhängt, wie z.B. eine Eingabesuche in einer Suchleiste, und wenn Sie ein Skript haben, um die Eingaben anzuzeigen, werden sie manchmal ausgefüllt, wenn ein Passwort im DOM vorhanden ist, also ist dies ein großes Problem und Browser sollten respektieren, wenn etwas nicht automatisch ausgefüllt werden soll. Sobald der Browser also weiß, dass es ein Passwortfeld im DOM gibt, scheint er einen Listener an Autocomplete-Eingaben anzuhängen, wenn sich deren Anzeige ändert, daher habe ich diese Lösung gefunden, indem ich den Typ auf Text setze und ihn dann mit einer kleinen Verzögerung nach dem load-Ereignis auf den richtigen Typ ändere, es scheint ziemlich gut zu funktionieren, bisher.
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...
0 Stimmen
@user3071434 und diese Antwort ist nutzlos, weil sie nicht funktioniert.
3 Stimmen
Ich habe hier eine Erklärung gefunden developer.mozilla.org/en-US/docs/Web/Security/…
0 Stimmen
Versuchen Sie github.com/terrylinooo/disableautofill.js
0 Stimmen
Ich hasse Websites, die es meinem Browser nicht erlauben, die automatische Vervollständigung zu verwenden.
2 Stimmen
Siehe bugs.chromium.org/p/chromium/issues/detail?id=370363#c7 Link, der empfiehlt, autocomplete="new-password" zu verwenden.
0 Stimmen
Wollte nicht noch eine weitere "Antwort" zu all dem hinzufügen, deshalb werde ich nur kommentieren, aber nachdem ich so viele Lösungen für unseren Vue.js-App-Suchfilter ausprobiert habe, habe ich mich für dies entschieden, weil Chrome dies zu respektieren scheint:
0 Stimmen
Bis zum 31.12.2022 scheint die Lösung "new-password" in Chromium-basierten Browsern für alle registrierten Formulardaten anpassbar zu sein: Wenn Sie z.B. autocomplete="new-user-street-address-email-password-phone" als Attribut zu Ihrem Formular hinzufügen, werden die entsprechenden Daten nicht automatisch ausgefüllt.