Je viens de découvrir que si vous vous souvenez d'un nom d'utilisateur et d'un mot de passe pour un site, la version actuelle de Chrome remplit automatiquement votre nom d'utilisateur et votre adresse électronique dans le champ le champ avant tout type=password
champ. Il ne se soucie pas du nom du champ - il suppose simplement que le champ précédant le mot de passe sera votre nom d'utilisateur.
Ancienne solution
Il suffit d'utiliser <form autocomplete="off">
et il empêche le pré-remplissage du mot de passe ainsi que tout type de remplissage heuristique des champs basé sur des suppositions que le navigateur peut faire (qui sont souvent fausses). Contrairement à l'utilisation de <input autocomplete="off">
qui semble être pratiquement ignoré par le remplissage automatique du mot de passe (dans Chrome en tout cas, Firefox l'ignore).
Solution actualisée
Chrome ignore désormais <form autocomplete="off">
. Par conséquent, ma solution de rechange originale (que j'avais supprimée) fait maintenant fureur.
Il suffit de créer quelques champs et de les rendre cachés avec "display:none". Exemple :
<!-- fake fields are a workaround for chrome autofill getting the wrong fields -->
<input style="display: none" type="text" name="fakeusernameremembered" />
<input style="display: none" type="password" name="fakepasswordremembered" />
Ensuite, mettez vos vrais champs en dessous.
N'oubliez pas d'ajouter le commentaire, sinon les autres membres de votre équipe se demanderont ce que vous faites !
Mise à jour mars 2016
Je viens de tester avec la dernière version de Chrome - tout va bien. Il s'agit d'une réponse assez ancienne, mais je tiens à préciser que notre équipe l'utilise depuis des années sur des dizaines de projets. Il fonctionne toujours très bien malgré les quelques commentaires ci-dessous. Il n'y a pas de problème d'accessibilité car les champs sont display:none
ce qui signifie qu'ils ne sont pas mis au point. Comme je l'ai mentionné, vous devez les mettre avant vos champs réels.
Si vous utilisez le javascript pour modifier votre formulaire, il y a une astuce supplémentaire dont vous aurez besoin. Affichez les faux champs pendant que vous manipulez le formulaire, puis cachez-les à nouveau une milliseconde plus tard.
Exemple de code utilisant jQuery (en supposant que vous donniez une classe à vos faux champs) :
$(".fake-autofill-fields").show();
// some DOM manipulation/ajax here
window.setTimeout(function () {
$(".fake-autofill-fields").hide();
}, 1);
Mise à jour de juillet 2018
Ma solution ne fonctionne plus aussi bien depuis que les experts en anti-utilisation de Chrome ont travaillé dur. Mais ils nous ont jeté un os sous la forme de.. :
<input type="password" name="whatever" autocomplete="new-password" />
Cela fonctionne et résout en grande partie le problème.
Cependant, cela ne fonctionne pas lorsque vous n'avez pas de champ pour le mot de passe mais seulement une adresse électronique. Dans ce cas également, il peut être difficile de faire en sorte que le système cesse de se comporter en jaune et de préremplir le champ. La solution des faux champs peut être utilisée pour résoudre ce problème.
En fait, il est parfois nécessaire de déposer deux lots de faux champs, et de les essayer à des endroits différents. Par exemple, j'avais déjà des champs factices au début de mon formulaire, mais Chrome a récemment recommencé à pré-remplir le champ "Email". J'ai donc ajouté d'autres champs factices juste avant le champ "Email", ce qui a réglé le problème. En supprimant le premier ou le deuxième lot de champs, on revient à un remplissage automatique incorrect et trop zélé.
Mise à jour en mars 2020
Il n'est pas clair si et quand cette solution fonctionne encore. Il semble qu'elle fonctionne encore parfois, mais pas tout le temps.
Dans les commentaires ci-dessous, vous trouverez quelques indices. L'un d'entre eux, ajouté par @anilyeni, mérite peut-être d'être approfondi :
Comme je l'ai remarqué, autocomplete="off"
fonctionne sous Chrome 80, s'il y a moins de trois éléments dans le fichier <form>
. Je ne sais pas quelle est la logique ni où se trouve la documentation à ce sujet.
Ce message de @dubrox peut également être pertinent, bien que je ne l'aie pas testé :
Merci beaucoup pour l'astuce, mais veuillez mettre à jour la réponse, car display:none;
ne fonctionne plus, mais position: fixed;top:-100px;left:-100px; width:5px;
fait :)
Mise à jour AVRIL 2020
Valeur spéciale pour le chrome pour cet attribut fait le travail : (testé sur l'entrée - mais pas par moi) autocomplete="chrome-off"
1 votes
Veuillez compléter (et clarifier) la phrase "Chrome remplit automatiquement les champs comme". Qu'entendez-vous par "auto-populate", qui semble vouloir dire autre chose que "autocomplete" ? Veuillez également fournir une démo autonome et/ou l'URL d'une démo. Il semble que le problème soit causé par du code JavaScript sur la page ou par un module complémentaire de Chrome.
3 votes
@JukkaK.Korpela L'autocomplétion ressemble à ceci este où il suggère des valeurs au fur et à mesure que vous tapez. L'auto-remplissage ressemble à este où, lorsque la page se charge, le chrome détecte les entrées et devine les valeurs avec lesquelles les remplir, tout en colorant les fonds en jaune. Dans mon cas, il ne devine pas correctement.
1 votes
Duplication possible de Le remplissage automatique des formulaires de Google Chrome et son fond jaune
6 votes
Ce n'est pas un doublon. Celui-ci s'occupe de la désactivation du remplissage automatique, celui-là s'occupe du style de la couleur du remplissage automatique ...
17 votes
Autocomplete="false" au lieu d'autocomplete="off" comme dans la réponse de Kaszoni Ferencz, votez pour cela.
0 votes
Duplication possible de Comment désactiver l'autocomplétion du navigateur sur un champ de formulaire web / balise d'entrée ?
7 votes
Regardez le nombre de réponses à cette question - cela devrait vous dire quelque chose : vous menez une bataille perdue d'avance. Ce n'est plus un problème propre à Chrome, Firefox et d'autres ont suivi le mouvement. Que cela vous plaise ou non, vous devez accepter la décision de l'industrie des navigateurs, à savoir que le remplissage automatique des formulaires est le choix de l'utilisateur. Vous pouvez vous battre contre eux, mais vous perdrez. En fin de compte, la question que vous devriez vous poser n'est pas de savoir comment contourner la saisie automatique, mais plutôt comment créer des formulaires qui fonctionnent bien avec la saisie automatique. Ce n'est pas vous qui devez vous préoccuper de la sécurité, mais les utilisateurs.
0 votes
Je suis d'accord avec @mindplay.dk. Pour en savoir plus sur la controverse, consultez le site groups.google.com/a/chromium.org/forum/#!msg/security-dev/ Même si vous obtenez aujourd'hui une réponse qui fonctionne, les développeurs de Chrome travaillent probablement à la contourner. C'est une version tordue du jeu du chat et de la souris.
1 votes
Les navigateurs n'atteindront probablement pas une stratégie parfaite de remplissage automatique, car il n'existe pas de norme pour identifier les champs de nom d'utilisateur/mot de passe utilisés dans les écrans de connexion. Les navigateurs semblent utiliser l'heuristique avec
type="password"
qui, bien qu'utiles pour de nombreux écrans de connexion réels, produisent également de nombreuses tentatives erronées de remplissage automatique lorsque des entrées de mot de passe (ou masquées) sont utilisées.0 votes
Pour les autres qui tombent sur ce sujet, la meilleure ressource pour comprendre cela a été pour moi cet article de MDN. En bref,
autocomplete="just about anything other than on or off"
semble faire l'affaire. developer.mozilla.org/fr/US/docs/Web/Security/0 votes
Autocomplete="off" works.... Pour moi : <input id="q" type="text" data-bind="textInput : q" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" role="textbox">
21 votes
Désolé, mais la réponse de @mindplay.dk est contre-productive. J'ai des utilisateurs qui se sont connectés à mon site et une page sur le site leur permet d'entrer des informations de compte/pseudo pour d'autres systèmes. Lorsque j'affiche une page pour qu'ils en saisissent un nouveau, leurs informations de connexion pour mon site sont saisies, ce qui est complètement faux et causera des problèmes si/quand les utilisateurs saisissent ces informations par inadvertance. Les deux n'ont rien à voir l'un avec l'autre. Dans ce cas, le navigateur fait quelque chose qui va à l'encontre de ce que veut l'utilisateur.
1 votes
Notez que si votre balise <form> a autocomplete="on", alors elle remplacera autocomplete="false" pour les éléments individuels du formulaire.
8 votes
@mindplay.dk - Mon application web est une application de gestion de flux de travail pour le lieu de travail, donc, non, les préoccupations concernant la sécurité sont les miennes, car elles sont mandatées par la direction et doivent être respectées par tous les employés, alias "les utilisateurs". Cependant, leur demander de configurer eux-mêmes Chrome, IE ou tout autre navigateur va laisser des lacunes dans le processus d'authentification, puisqu'ils peuvent, intentionnellement ou non, finir par utiliser le remplissage automatique. Toutes les applications web ne sont pas du même type, avec les mêmes types d'utilisateurs ou de préoccupations.
0 votes
Le fait d'avoir un placeholder = " " a résolu le problème pour moi dans Chrome. En html, vous pouvez faire cela :
<input id="email" class="validate" type="email" placeholder=" ">
. Alors que le code MVC serait comme ceci :@Html.EditorFor(s => s.Password, "Password", new { htmlAttributes = new { @class = "validate", @id = "pass", placeholder = " " } })
. Vous pouvez utiliser Html.TextBoxFor au lieu de EditorFor si nécessaire.2 votes
C'est assez ennuyeux. J'ai un SPA trop complexe et Chrome détecte de manière aléatoire et erronée plusieurs entrées autour des vues comme des entrées de courrier électronique, je n'ai aucune idée de la raison. Et je ne trouve aucun moyen de le désactiver. Il a même cassé certaines fonctionnalités, principalement liées au filtrage, au masquage ou à la validation (puisque dans certaines d'entre elles, Chrome écrit heureusement le mauvais contenu à la place de l'utilisateur). Passage à l'étoile cette question .
1 votes
Malheureusement, la réponse correcte est (de manière réaliste) simplement "non, cela ne peut pas être fait de manière fiable". Il est clair que Chrome ne veut pas que les sites Web soient en mesure de désactiver cette fonctionnalité, donc tout ce qui hace Le travail effectué dans l'intervalle est susceptible d'être à nouveau désactivé dans une prochaine version.