Skip to content

Désactiver le remplissage automatique de mots de passe dans Firefox

Non ? un bug dans Firefox ??

Oui et non … étant donné que c’est sur une fonctionnalité qui ne fait pas partie du standard HTML, on ne peut pas tellement se plaindre.

Voici le problème : j’ai un champ password sur un formulaire HTML et je souhaite que Firefox ne le remplisse pas automatiquement. Pour ça il existe l’attribut autocomplete, qu’on utilise de la manière suivante :

 <input type= »password » name= »pass » id= »pass » autocomplete= »off » />

Problème : je ne sais pas pourquoi, mais ça ne fonctionne pas à tous les coups. Pour certains champs, Firefox remplit systématiquement le champ avec le mot de passe enregistré, même avec le autocomplete= »off ».

J’avais pensé mettre un bout de javascript à la fin de mon code pour vider le champ, mais ça ne marche pas non plus. Apparemment, Firefox fait l’autocomplete après le rendu complet de la page.

Du coup, voici la solution (un peu brutale) que j’ai trouvé sur le site VerySimple Dev Blog :

<script language=”JavaScript” type=”text/javascript”>
// this brutally clears a password field in firefox
// compliments of verysimple.com
function clearPwBox()
{
if (document.getElementById)
{
var pw = document.getElementById(’MyPasswordFieldName’);
if (pw != null)
{
pw.value = ”;
}

}
}
window.setTimeout(”clearPwBox()”, 100);
</script>

Le principe est le suivant : on définit une fonction qui est appelée après 100ms et qui effectue notre initialisation par dessus le remplissage du champ par Firefox.

Violent, mais pour l’instant, il n’y a pas mieux. Espérons que les développeurs corrigent rapidement ce bug.

L’article sur VerySimple Dev Blog ]

Published inFirefoxProgrammation
Loading Facebook Comments ...

One Comment

  1. Fabrice Fabrice

    Une autre solution qui permet en plus, si le champ est de type= »text », de désactiver les suggestions qu’aurait pu retenir le navigateur (nom, prénom, etc.)

    function disableAutocomplete(elementId)
    {
    var e = document.getElementById(elementId);
    if(e != null)
    {
    e.setAttribute(« autocomplete », « off »);
    }
    }

    disableAutocomplete(‘password’);

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.