Récemment, je suis tombé sur un problème où je voulais désactiver la saisie semi-automatique dans tous les navigateurs.
Chrome a une nouvelle fonctionnalité dans les paramètres où vous pouvez ajouter un numéro de carte. Et l'exigence était également de désactiver cela.
Ce qui a fonctionné dans tous les navigateurs était de faire cette saisie semi-automatique = faux au niveau du formulaire.
Mais ce n'est pas conforme aux règles w3, où elles imposent d'avoir autocomplete = off | on.
Quelqu'un peut-il m'expliquer pourquoi les faux travaux dans tous les navigateurs?
même ie8, tout firefox, safari etc. Mais n'est pas conforme.
Vous avez raison. La définition de l'attribut de saisie semi-automatique sur "off" ne désactive pas Chrome remplissage automatique dans les versions plus récentes de Chrome.
Cependant, vous pouvez définir la saisie semi-automatique sur autre chose que "on" ou "off" ("false", "true", "nofill") et cela désactivera Chrome remplissage automatique.
Ce comportement est probablement dû au fait que l'attribut de saisie semi-automatique attend une valeur "on" ou "off" et ne fait rien si vous lui donnez autre chose. Donc, si vous lui donnez autre chose que ces valeurs, le remplissage automatique s'effondre/ne fait rien.
Avec la version actuelle de Chrome il a été constaté que la définition de l'attribut de saisie semi-automatique sur "off" fonctionne réellement maintenant.
En outre, j'ai constaté que cela ne fonctionne que si vous définissez l'attribut de saisie semi-automatique dans chaque <input>
balise du formulaire.
Il y a eu une réponse à cette ambiguïté dans les listes de bogues de Chromium ici .
Avertissement: cela s'est avéré être vrai dans Chrome version 47.0.2526.106 (64 bits)
Après Chrome version 72.XX:
Chrome ignore autocomplete="off"
autocomplete="no-fill"
ou autocomplete="randomText"
au niveau du champ et du formulaire.
La seule option que j'ai trouvée consiste à suivre une solution de contournement en utilisant Chrome pour remplir la saisie automatique sur une zone de texte et un mot de passe factices, puis les masquer de la vue utilisateur.
Rappelez-vous l'ancienne méthode avec style="display: hidden"
ou style="visibility: hidden"
est également ignoré.
RÉPARER:
Créez donc un DIV
avec height: 0px;overflow:hidden
qui rendra toujours les éléments HTML mais les masquera de la vue de l'utilisateur.
Exemple de code:
<div style="overflow: none; height: 0px;background: transparent;" data-description="dummyPanel for Chrome auto-fill issue">
<input type="text" style="height:0;background: transparent; color: transparent;border: none;" data-description="dummyUsername"></input>
<input type="password" style="height:0;background: transparent; color: transparent;border: none;" data-description="dummyPassword"></input>
</div>
Ajoutez simplement le div ci-dessus dans le formulaire HTML et cela devrait fonctionner!
Utilisez autocomplete = "my-field-name" au lieu de autocomplete = "off ". Faites attention à ce que vous appelez, car certaines valeurs sont toujours reconnues comme autocomplete = "country". J'ai également constaté que l'utilisation de l'attribut d'espace réservé a aidé dans certains scénarios délicats.
Exemple:<input type="text" name="field1" autocomplete="my-field-name1" placeholder="Enter your name">
Chrome a récemment cessé d'utiliser autocomplete = "off" parce qu'ils pensaient qu'il était surutilisé par les développeurs qui n'avaient pas beaucoup réfléchi à la question de savoir si le formulaire devait être complété automatiquement. . Ainsi, ils ont retiré l'ancienne méthode et nous ont fait en utiliser une nouvelle pour nous assurer que nous ne voulions vraiment pas qu'elle soit complétée automatiquement.
autocomplete = "none" fonctionne parfaitement pour angularjs et angular 7
Compléter automatiquement la valeur autre que off et faux fonctionne.
autoComplete="nope"
autoComplete="foo"
autoComplete="boo"
autoComplete="anythingGoesHere"
Testé sur chrome 76 et réagit 16.9.0