web-dev-qa-db-fra.com

autocomplete = 'off' ne fonctionne pas sur firefox

Je suis confronté à un problème de navigateur:

J'ai créé 2 pages de connexion du même domaine. 

  1. www.example.com/login.cfm
  2. www.example.com/newLogin.cfm

Je mets le nom de formulaire différent pour 2 formulaires avec dans ces deux pages. De plus, je mets autocomplete = 'off' pour le deuxième formulaire et pour les champs de texte de ce formulaire (mais le premier formulaire est activé).

Maintenant, si j'enregistre le nom d'utilisateur et le mot de passe au moment de la connexion à partir de www.testDomain.com/login.cfm dans le navigateur, la liste des noms d'utilisateur est automatiquement renseignée dans le champ du nom d'utilisateur de la deuxième page de connexion, même si la fonction de finalisation automatique est désactivée. Je dois bloquer ceci pour des raisons de sécurité. Y a-t-il un moyen de faire ça? J'utilise FireFox V21.

17
Deepak Kumar Padhy

$("#CVV").on("focusout", function() {
    if ($(this).val() == "") {  
      $(this).attr("type", "text");
    }   
});
<input type="text" name="username" class="input" ID="CVV" onfocus="removeErr('CVV'); $(this).attr('type', 'password');">
36
albert.garipov

C’est la solution la plus propre que j’ai trouvée pour empêcher Firefox de se compléter automatiquement. 

 <!-- The text and password here are to prevent FF from auto filling my login credentials because it ignores autocomplete="off"-->
 <input type="text" style="display:none">
 <input type="password" style="display:none">

Ajoutez ce code snip-it au-dessus de votre entrée de type mot de passe.

Autant que je sache, Firefox recherche une entrée de type Mot de passe et renseigne le mot de passe, puis ajoute le nom d'utilisateur à l'entrée de type texte au-dessus. Sans un nom ou un identifiant, les entrées ne sont pas ajoutées à la publication, mais c'est toujours un hack. 

30
Bob The Janitor

Cela fonctionne pour moi:

<input type="text" name="username" value=" " onclick="if(this.value == ' ') this.value=''" >

Cliquez sur ici pour plus d'informations à ce sujet.

1
zavero.kris

J'ai été rencontré ce problème pendant une longue période. Firefox a été gardé des valeurs d'entrée même la page recharger. La définition de autocomplete sur off n'a pas résolu.

La mise en cache de formulaire est un mécanisme très utile pour l'expérience utilisateur. Mais, dans le faible pourcentage de cas d'utilisation tels que la traduction de valeurs de zones de texte ou de textes dans d'autres langues, cela m'a donné mal à la tête.

Pour résoudre ce problème, il vous suffit de réinitialiser le formulaire après le chargement de la page en tant que

 $('form').trigger("reset");
0
Cataclysm

https://bugzilla.mozilla.org/show_bug.cgi?id=956906

http://lists.w3.org/Archives/Public/public-webapps/2014JanMar/0015.html

La saisie semi-automatique a été désactivée pour les champs de saisie du type de mot de passe. Les liens ci-dessus mentionnent cela respectivement pour FireFox et IE, mais je vois que définir l'auto-complétion sur off pour le formulaire ne fonctionne pas non plus.

0
user3350272

grâce à l'idée de albert.garipov, j'ai conçu une solution qui imite les fonctionnalités du type mot de passe. cela ne montre pas le mot de passe à l'entrée

<input type="text" id="password" onkeyup="OnChangePassword()">

function OnChangePassword()
{ 
  if ($("#password").val() == "") {
      $("#password").attr('type', 'text');
  }
  if ($("#password").val() != "") {
      $("#password").attr('type', 'password');
  }
}
0
user7323849

Un moyen de ne pas trouver ces champs dans Firefox est de changer leur type en masqué avant la publication.

Vous pouvez utiliser jQuery ou JavaScript pour le définir sur onclientclick dans le bouton d'envoi.

Exemple: <script type="text/javascript"> function setHidden() { $('.input').prop('type', 'hidden'); } </script>

<input type="text" name="username" class="input">
<input type="password" name="password" class="input" >
<asp:Button ID="ubtnLogin" Text='OK' runat="server" OnClick="btnLogin_Click" OnClientClick='setHidden();' />

N'oubliez pas de vider le cache de votre navigateur avant de tester ou d'utiliser le mode privé (CTRL + MAJ + P).

0
CPJ

J'ai essayé tout ce qui précède avec Firefox 52 et rien n'a fonctionné. Je l’ai cependant fait fonctionner avec jQuery et en remplaçant la valeur par la valeur originale, ou:

jQuery(window).load( function () {
    email = jQuery('#auth_user_email');
    email.prop('value', email.attr('value'));
});

où, dans jQuery, prop est la valeur actuelle du document et attr est l'original lorsque le document est extrait/chargé pour la première fois. J'ai utilisé la fonction de chargement parce qu'elle s'exécute après la fonction Ready et je pense définitivement qu'après la saisie semi-automatique écrase la valeur d'entrée. vous pouvez également faire la même chose avec la saisie du mot de passe.

0
lucas

J'ai aussi remarqué ce comportement récemment - Firefox uniquement; il semble y avoir un problème avec l'attribut ' autocomplete = "off" '.

Habituellement, il fonctionnait très bien jusqu’à il ya un mois - et a cessé à l’époque La version 30.0 de Firefox est sortie.

Fonctionne toujours très bien sur Chrome + IE;

0
yarg

Firefox version 61 cela semble être suffisant pour désactiver la complétion automatique dans les formulaires:

<input type="password" hidden />

Toutes les entrées après celle-ci en haut du formulaire sont ignorées.

0
Darko Tasevski
Try this :
<input type="password" style="display:none">
<input type="password" name="password">

Le type doit être identique. Le mot de passe caché sera rempli au lieu de l’entrée du mot de passe réel.

S'il s'agit d'un nouveau mot de passe (ou réinitialisé), utilisez autocomplete = "nouveau-mot de passe" au lieu de autocomplete = "off" .

J'espère que ça aide.

0
ahammani