Je voudrais savoir si il y a une sorte de spécial de balisage pour permettre le Chrome fonctionnalité de saisie automatique d'un formulaire spécifique. Je n'ai trouvé que des questions sur la façon de le désactiver, mais je voudrais savoir si je peux ajouter une sorte de balisage pour le code html, afin de dire au navigateur "c'est la saisie de l'adresse" ou "c'est le champ du code POSTAL" de remplir correctement (supposé l'utilisateur activé cette fonctionnalité).
Réponses
Trop de publicités?C'est une excellente question et dont la documentation est étonnamment difficile à trouver. En fait, dans de nombreux cas, vous trouverez que le Chrome de la fonctionnalité de saisie automatique "fonctionne, tout simplement." Par exemple, l'extrait suivant du code html produit une forme qui, au moins pour moi (Chrome v. 18), est rempli automatiquement après avoir cliqué dans le premier champ:
<!DOCTYPE html>
<html>
<body>
<form method="post">
First name:<input type="text" name="fname" /><br />
Last name: <input type="text" name="lname" /><br />
E-mail: <input type="text" name="email" /><br />
Phone: <input type="text" name="phone" /><br />
Address: <input type="text" name="address" /><br />
</form>
</body>
</html>
Cependant, cette réponse n'est pas satisfaisante, car elle laisse la solution dans le domaine de la "magie". Creuser plus profond, j'ai appris que Chrome (et d'autres de saisie automatique les navigateurs prenant en charge) se fondent principalement sur des indices contextuels pour déterminer le type de données qui doivent être incorporées dans les éléments de formulaire. Des exemples de tels indices contextuels inclure l' name
d'un élément d'entrée, le texte qui entoure l'élément, et aucun texte de l'espace réservé.
Récemment, cependant, le Chrome, l'équipe a reconnu que ce n'est pas une solution satisfaisante, et ils ont commencé appuyant sur de normalisation dans ce domaine. Un post très instructif sur le Google Webmasters groupe a récemment discuté de cette question, en expliquant:
Malheureusement, jusqu'à maintenant, il a été difficile pour les webmasters afin de s'assurer que le Chrome et d'autres pour remplir les formulaires, les fournisseurs peuvent analyser leur forme correctement. Certaines normes n'existent pas; mais ils ont mis de lourdes charges sur la mise en œuvre du site web, de sorte qu'ils ne sont pas beaucoup utilisés dans la pratique.
(Les "normes", ils se réfèrent est la plus récente version de la spécification mentionnée dans Avalanchis réponse ci-dessus.)
Le Google post pour décrire leur solution proposée (qui est rencontré par de lourdes critiques dans les commentaires du post). Ils proposent l'utilisation d'un nouvel attribut à cet effet:
Juste ajouter un attribut à l'élément d'entrée, par exemple un champ d'adresse de courriel pourrait ressembler à:
<input type="text" name="field1" x-autocompletetype="email" />
...où l' x-
signifie "expérimentale" et sera supprimé si et quand cela devient une norme. Lire le post pour plus de détails, ou si vous voulez creuser plus profond, vous trouverez une explication plus complète de la proposition sur le whatwg wiki.
Mise à JOUR:
Comme l'a souligné dans ces perspicace réponses, toutes les expressions régulières Chrome pour identifier et reconnaître les champs communs peuvent être trouvés en autofill_regex_constants.cc.utf8
(archivé ici). Donc pour répondre à la question initiale, assurez-vous que les noms de champs html sont accompagnés par ces expressions. Voici quelques exemples:
-
prénom:
"first.*name|initials|fname|first$"
-
e-mail:
"e.?mail"
-
adresse (ligne 1):
"address.*line|address1|addr1|street"
-
code postal:
"zip|postal|post.*code|pcode|^1z$"
De mes tests, l' x-autocomplete
balise ne fait rien. Au lieu d'utiliser autocomplete
tags sur vos balises input, et de définir leurs valeurs en fonction de la spécification HTML ici http://www.whatwg.org/specs/web-apps/current-work/multipage/association-of-controls-and-forms.html#autofill-field .
Exemple:
<input name="fname" autocomplete="given-name" type="text" placeholder="First Name" required>
Le formulaire parent tag besoins de saisie semi-automatique="on" et method="POST".
On dirait que nous allons obtenir plus de contrôle sur cette fonctionnalité de saisie automatique, il y a une nouvelle API expérimentale à venir à google Chrome Canary, qui peut être utilisé pour accéder aux données, après avoir demandé à l'utilisateur de:
http://www.chromium.org/developers/using-requestautocomplete http://blog.alexmaccaw.com/requestautocomplete