Autocomplete de Chrome

Par Syndrome, il y a 11 ans


Les bases HTML/CSS

Bonjour !

J'ai parcouru plusieurs forums dans l'espoir de résoudre un problème qui commence à me les ... 'fin voilà, quoi.

Le problème en question est l'autocomplete des inputs sur Chrome. (J'ai pas eu le cœur de vérifier sur les autres navigateurs, j'suis pas maso non plus ...)

Alors, oui, évidemment, j'ai déjà, sur chaque input, ajouté l'attribut autocomplete="off". Et autant en local, ça marche impec' (sur Chrome, en plus !), autant dés que je l'upload, bah nan, il veut pas. Et le pire c'est qu'il me balance l'autocomplete dans des champs qui n'ont rien à voir.

J'en ai remis une couche en jQuery, mais non, pas mieux. Comme dirait l'autre ... je suis très mal à l'aise.

Help, please ?

45 réponses

Vallyan, il y a 11 ans

ET ta couche de jQuery elle ressemble a quoi ?

Syndrome, il y a 11 ans

Pour info, petite capture d'écran qui parlera sûrement mieux que tous les mots ...

Glaived, il y a 11 ans

ta fermer-relancer chrome ?
ta vérifier dans le code que autocomplete était à off ?

Syndrome, il y a 11 ans

J'avais déjà inspecté le code pour vérifier oui, et je viens de relancer Chrome, sans succès. :/

Vallyan, il y a 11 ans

Essaye de mettre tout le formulaire en autocomplete="off":

<form autocomplete="off">
Glaived, il y a 11 ans
<!DOCTYPE html>
<html lang="fr">
<head>
    <meta charset="utf-8">
</head>
<body>
    <form action="" method="POST" autocomplete="off">
        <input type="text" name="login" autocomplete="off" />
    </form>
</body>
</html>

Fonctionne chez moi, et toi ?

EDIT: Ralf, dégage vall ! xD

Syndrome, il y a 11 ans

Nope, pas mieux. =/

Edit 1 : J'ai supprimé le mot de passe enregistré, et forcément, l'autocomplete a disparu. Je me suis reconnecté sur mon site, en acceptant la sauvegarde du mot de passe, et après avoir actualisé, il recommence. Il est pénible.

Question subsidiaire : si je donne des noms complètement sans rapport à mes champs, est-ce que ça peut jouer ?

Edit 2 : Je confirme que ça ne change rien. ><

Syndrome, il y a 11 ans

J'ai carrément viré les attributs name des mes inputs, dans la mesure où je fais inscription et connexion via jQuery / Ajax. Ça ne change rien. Ça me rend dingue. :')

Vallyan, il y a 11 ans

Tu peux essayer d'ajouter un attribut value="", pour la forcer a etre blank, en plus des autocomplete="off"
@Glaived: Game's on

Syndrome, il y a 11 ans

Pas mieux =/

Syndrome, il y a 11 ans

Pour l'autocomplete :

$("input[type='text'],input[type='password']").attr({autocomplete:"off"});

Tu veux le traitement du formulaire aussi ?

Vallyan, il y a 11 ans

Non, je ne pense pas que ca change.
Plutot que d'utiliser jQuery pour ajouter l'attribut automplete a off, as-tu essayer de faire $.val('') ?

$( document ).ready(function(){
    $("input[type='text'],input[type='password']").val("");
});
Syndrome, il y a 11 ans

J'essaye tout de suite !

Glaived, il y a 11 ans

J'ai regarder coté JS, je donne ma langue à vall =/

Vallyan, il y a 11 ans

Ah bah non, ca me plait la compétition, moi ^^

Syndrome, il y a 11 ans

Bon bah non, pas mieux ... :(

Syndrome, il y a 11 ans

Je vais tenter autre chose : un ajout des champs au chargement de la page, via jQuery. (Ouais, j'ai que ça à faire !)

Vallyan, il y a 11 ans

En supposant que Chrome soit un peu lent pour faire son autofill, et donc que le $.val('') de jQuery soit plus rapide, tu peux ajouter un delay a ton jQuery pour virer les valeurs de champs après que Chrome est fait son autofill:

$( document ).ready(function(){
    setTimeout(function(e){
        $("input[type='text'],input[type='password']").val("");
    }, 1500);
});

En l'occurence il est de 1,5 sec, ce qui est bien trop long on est d'accord, mais au moins ca te dira si sur le principe ca peut marcher ou pas (et je ne vois pas du tout pourquoi ca ne marcherait pas, la ...). Essaye ensuite des trucs un peu plus courts (genre 200 ms).

Syndrome, il y a 11 ans

Toi t'es un p*tin de génie !

Bon ça marche qu'à moitié, mais ça marche. En l'occurrence, il me vide bien les champs, mais il leur laisse le style attribué par l'autofill de Chrome.

Vallyan, il y a 11 ans

vois si tu peux jouer avec l'attribut css:

input:-webkit-autofill {
}
Syndrome, il y a 11 ans

J'ai essayé mais il ne le prend pas en compte. Ce qui est logique, d'ailleurs ! S'il trouve le moyen d'écraser mon css normal, il écrase aussi celui que je peux lui attribuer ! ^^

Vallyan, il y a 11 ans

meme en ajoutant des !important a toutes tes lignes ?

Syndrome, il y a 11 ans

J'ai pas essayé tiens ...

Syndrome, il y a 11 ans

Non plus :(

Syndrome, il y a 11 ans

De toutes façons, il réagit pas avant 1000-1200ms.

J'en reviens à mon idée précédente, une création du formulaire en jQuery. :)

Vallyan, il y a 11 ans

la création, ou (plus simple ?) son chargement en ajax avec $.load() ...

Syndrome, il y a 11 ans

J'ai peur qu'un simple chargement ne suffise pas, mais je vais commencer ça par ça, tu as raison ! :)

Vallyan, il y a 11 ans

Au pire, pour ca tu peux attendre 1,5 secondes avant de lancer ton chargement pour éviter l'autofill (avec un petit loader pour faire patienter ...).

Syndrome, il y a 11 ans

Ça se tente ! J'sais pas toi mais moi j'suis là jusqu'à 6h, donc je te tiens au courant o/

Vallyan, il y a 11 ans

Moi je suis outre-Atlantique ... donc j'irai me coucher après toi sans doute ^^

Syndrome, il y a 11 ans

Ca, ça reste à voir ! Outre-Atlantique, oui mais où ? :) Il est quelle heure chez toi là ?

Vallyan, il y a 11 ans

19h27 ...

Syndrome, il y a 11 ans

Ah ouais. Bon, effectivement, dans 7h au plus je suis couché moi ...

Vallyan, il y a 11 ans

Bon, ca marche ton truc ? Ca sert a rien de faire nuit blanche si t'avance pas, de toute facon :p

Syndrome, il y a 11 ans

Pas encore, mais j'ai pas eu le temps de tout faire ...

Je fais pas nuit blanche, je suis au boulot ! :D

Vallyan, il y a 11 ans

Rassures-moi, t'es pas en France non plus j'espère !?

Syndrome, il y a 11 ans

Euh bah ... si ...

Syndrome, il y a 11 ans

Le load() n'empêche pas l'autofill. Il est foutrement intrusif ce con d'autofill !

Vallyan, il y a 11 ans

Meme avec un setTimeout ? ... J'ai peur d'arriver au bout de mes solutions potentielles ... (qui ne fonctionnent pas de toute facon je te l'accorde ...).

Syndrome, il y a 11 ans

:'D

J'aime pas la solution du setTimeout (sans vouloir t'offusquer mon ami), ça rend vraiment pas top.

Par contre, j'ai avancé sur mon idée de créer les champs en jQuery, je leur ai donné un id type "id"+timestamp, et ça fonctionne niquel. :)

Qu'est ce qui te choquait dans le fait que je sois en métropole ?

Vallyan, il y a 11 ans

Si ton truc en jQuery ne fonctionne pas, et si tu veux vraiment enfler chrome, j'ai peut-etre une solution tordue, pour toi:

1- Mets tes inputs en hidden.

2- A leur place, pour l'utilisateur, mets des div en contenteditable="true", que tu peux customiser comme tu veux pour qu'elle soient visuellement identiques a tes input originaux.

3- Dans ton css, tu peux meme mettre -webkit-text-security: disc; pour que ca mime l'input du password.

4- Au moment de la soumission du formulaire, si c'est de l'ajax tu t'emmerde pas, tu passes le contenu de tes div directement avec un $.text() (auquel cas pas besoin de tes inputs hidden, en fait), si c'est par rechargement de la page que tu envoies le formulaire, alors il faut simplement passer le contenu de tes div dans tes inputs avants de valider la soumission ...

Et alors la, si chrome te fait de l'autofill ... vraiment je ne saurai plus quoi dire ^^

C'est tes horaires qui me font compatir ... il est 3h du mat en France :( ...
enfin je dis ca mais en meme temps peut-etre que ca te plait, toi ... tu bosses dans quoi ?

Syndrome, il y a 11 ans

Ahahahahah, tu vas rire. :')

J'viens d'avoir une idée de grand malade ! Dans la mesure où l'inscription et la connexion sont gérées en Ajax via jQuery, je n'ai pas vraiment besoin d'avoir un formulaire à proprement parler, n'est ce pas ? (Question rhétorique évidemment.)

Du coup j'ai enlevé les balises <form> ... et du coup, ce gros c*n de Google Chrome ne voit rien autofiller !

MOUHAHAHAHAHAHAHA !

Merci de ton aide cela dit ! :)

Syndrome, il y a 11 ans

Effectivement, solution totalement faisable, que je fasse mon envoi en Ajax ou envoi de formulaire ... Quand je pense que t'as cherché ça pour rien ... :D

Je suis réceptionniste de nuit, et non, je n'aime vraiment VRAIMENT pas ça. Mais ça paye les factures, et comme tu peux le constater, ça me laisse suffisamment de temps pour bosser sur ce qui m'intéresse : coder. :)

Vallyan, il y a 11 ans

OK, GG, j'avais pas du tout pensé a ca ! C'était fun de chercher ^^

Bon courage pour le reste de ta nuit ... et bonne continuation pour ton code ;)

Syndrome, il y a 11 ans

C'est surtout fun d'avoir trouvé ... :p

Merci à toi pour ton aide, mine de rien, ça m'a aidé de ne pas me sentir seul ! :)

Bon courage à toi pour ... ce que tu veux, et bonne continuation pour ton code aussi. :) Au plaisir de revenir te demander de l'aide et/ou de t'aider, on sait jamais ... J'suis moins mauvais que j'en ai l'air :p