J'ai un input type text
pour que l'utilisateur modifie change son adresse électronique et son mot de passe dans la page de configuration du compte .
Comment peut arrêter Chrome remplir automatiquement l'entrée.
Chrome rappelez-vous le input data
de connectez-vous à la page et remplissez-le automatiquement dans la page de configuration du compte.
Chrome remplit automatiquement la input
change mon email et mon mot de passe in page de configuration du compte
Définissez-vous explicitement les valeurs comme vides? Par exemple:
<input type="text" name="textfield" value="">
Cela devrait empêcher les navigateurs de placer des données là où elles ne devraient pas. Vous pouvez également ajouter l'attribut autocomplete à la balise de formulaire:
<form autocomplete="off" ...></form>
Nous ne sommes plus dépendants des hacks pour cela. Vous pouvez définir la saisie semi-automatique sur new-password et cela fonctionnera comme prévu.
<input type="password" name="pwd" autocomplete="new-password">
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attr-autocomplete
Solution 1: Placer 2 lignes de code sous la balise <form ..>
fait l'affaire.
<form id="form1" runat="server" >
<input style="display:none" type="text" name="fakeusernameremembered"/>
<input style="display:none" type="password" name="fakepasswordremembered"/>
...
Solution 2: Il supprime les attributs "name" et "id" des éléments et les assigne après 1ms. Mettez ceci dans le document préparez-vous.
$('form[autocomplete="off"] input, input[autocomplete="off"]').each(function () {
var input = this;
var name = $(input).attr('name');
var id = $(input).attr('id');
$(input).removeAttr('name');
$(input).removeAttr('id');
setTimeout(function () {
$(input).attr('name', name);
$(input).attr('id', id);
}, 1);
});
Solution 3: Testé sous Chrome 60.0.3112.101
<input type="password" name="pwd" autocomplete="new-password">
Ce problème persiste depuis la version 55.0.2883.87 m. (sous Windows 10)
Des solutions telles que la définition de l'attribut autocomplete sur un formulaire
ou l'ajout de faux champs de saisie et la suppression de l'attribut name avant l'envoi ne fonctionnent plus, car Chrome les ignore ou les complète automatiquement lors de la suppression.
Le seul moyen de le faire fonctionner correctement est de définir l'attribut autocomplete sur "new-password"
<input type="text" name="text" autocomplete="new-password">
même sur des entrées de type non mot de passe.
La dernière version de Chrome (46.0.2490.86) semble avoir à nouveau changé de comportement. Cette fois, la saisie automatique n'a rien à voir avec autocomplete
ou readonly
ou les solutions de contournement suggérées ici (et sur ces rapports de bogue https://code.google.com/p/chromium/issues/detail?id=468153 , https://bugs.chromium.org/p/chromium/issues/detail?id=587466 )
La saisie automatique examine maintenant le label en regard de la zone de saisie et génère un remplissage automatique basé sur celui-ci (ainsi que l'id et le nom). Un indice important est la capacité de saisie automatique de remplir plusieurs champs à la fois (par exemple, rue, banlieue et état). Il semble utiliser plusieurs techniques (label, name, id) pour discerner la relation spatiale entre les champs.
Une solution de contournement consiste donc à insérer du texte indésirable dans l'étiquette à l'intérieur d'une plage cachée ...
S<span style="display:none">_</span>uburb:
... et masquer/supprimer l'identifiant et le nom. C'était la seule chose qui empêchait Suburb AutoFill pour moi.
Malheureusement, autocomplete="off"
ne fonctionnait plus pour moi. Alors voici ma solution:
Commencez par lire, puis supprimez les attributs "name
" et "id
" des éléments. Après 1 ms, définissez à nouveau ces attributs avec les valeurs lues auparavant. Pour moi ça marche :)
<form autocomplete="off"><br />
<input type="text" name="username" id="username" /><br />
<input type="password" name="password" id="password" /><br />
</form>
<pre>
$('form[autocomplete="off"] input, input[autocomplete="off"]').each(function(){
var input = this;
var name = $(input).attr('name');
var id = $(input).attr('id');
$(input).removeAttr('name');
$(input).removeAttr('id');
setTimeout(function(){
$(input).attr('name', name);
$(input).attr('id', id);
}, 1);
});
</pre>
J'ai presque failli sauter par la fenêtre pour tenter de résoudre ce problème ... Google semble maintenant ignorer la saisie semi-automatique activée et désactivée. J'avais utilisé un correctif plus ancien (par exemple, de faux champs de mot de passe masqués - qui ne fonctionnaient plus non plus). Basé sur les spécifications de niveau de vie, vous devez utiliser des jetons à remplissage automatique. Vous devez les utiliser dans le contexte de cas d'utilisation approprié. J'espère que c'est utile.
Chrome ignore autocomplete = "n'importe quoi" et les champs cachés. Une solution de contournement HTML/CSS utiliserait un champ de mot de passe absolu avant le vrai:
<input type="text" name="username" required>
<input style="visibility: hidden; position: absolute; left:-99999px" type="password" name="fakepasswordfieldtoturnoffautocomplete">
<input type="password" name="password" required>
MODIFIER:
Comme indiqué dans de nombreuses réponses dans des questions en double, la solution de travail la plus élégante à ce jour est la suivante:
<input type="password" readonly onfocus="this.removeAttribute('readonly');"/>
Essayez l'élément de mot de passe caché
<form>
<input type="text" name="fakeusername" class="fake-autofill-fields"/>
<input type="password" name="fakepassword" class="fake-autofill-fields"/>
...
...
</form>
<script>
$(document).ready(function () {
$(".fake-autofill-fields").show();
window.setTimeout(function () {
$(".fake-autofill-fields").hide();
}, 1);
});
</script>
J'avais un problème similaire. Après toutes les tentatives ont échoué. J'ai essayé ce hack de mise
type = "search"
au lieu de texte. Même si ce n'est pas un joli bidouillage. Cela ne pose aucun problème dans la majorité des cas. la recherche de type n'est pas différente du texte pour l'instant.
En définissant autocomplete = "new-password", cela fonctionne . Avant de tester, vous effacez d'abord les données de navigation
Cela marche:
<form autocomplete="off" ...></form>
Testé sur Chrome 56.0.2924.87 (64 bits)
Essaye ça:
<div id="form_container">
<input type="text" name="username" autocomplete="off">
<input type="password" name="pwd" autocomplete="off">
<input tytep="submit" name="login" id="login" value="Log In">
</div>`
Le code jQuery:
jQuery("#login").click(function(){
jQuery("#form_container").wrap('<form method="post"></form>');
jQuery("form").submit();
});
Si vous n'enroulez pas vos champs de saisie dans un formulaire, le remplissage automatique de Chrome ne s'affichera pas.
Lorsque vous cliquez sur le bouton Soumettre, il suffit de taper les champs autour du formulaire et de déclencher un submit()
sur ce formulaire.
Entrez une valeur '' (espace vide) pour le champ du nom d'utilisateur et Chrome ne remplit pas automatiquement le nom d'utilisateur ou le mot de passe.
<input type = 'text' value = ' ' name = 'username' />
Si vous remplissez le nom d'utilisateur avec une valeur entrée par l'utilisateur, indiquez un '' s'il n'y a pas de valeur entrée par l'utilisateur.