Formulaire et remplissage automatique (long)
Publié : 10 mai 2004, 08:23
Bonjour,
J'ai cherché à savoir comment on peut optimiser son code HTML pour la fonction « Préremplir les champs » de Mozilla. J'ai trouvé un article sur la fonction équivalente sur Internet Explorer http://www.developersdex.com/gurus/articles/223.asp : en gros, si on entre une fois quelque chose dans un champ du genre :
IE s'en souvient pour un prochain champ avec name="nom". À ce que j'ai compris, Firefox fait pareil (?).
L'ennui, c'est si le prochain formulaire est plutôt :
ou
... tout est à recommencer.
Comme le dit l'article, Microsoft a un attribut propriétaire pour contourner le problème : vcard_name. Avec lui, ces trois champs sont reconnus comme demandant la même information :
C'est propriétaire (l'attribut, pas les valeurs vCard qui sont un standard - liste complète dans l'article mentionné) mais j'ai testé et Mozilla sait parfaitement faire correspondre la valeur de cet attribut avec son propre schéma.
Une deuxième solution est de remplacer la valeur de l'attribut name, du genre :
Ça marche parfaitement avec Internet Explorer 6, mais Mozilla ne reconnaît plus rien (d'un autre côté, il peut l'apprendre pour une prochaine fois, tout comme Firefox).
La troisième solution que j'ai trouvée est d'utiliser le schéma interne de Mozilla, que l'on trouve sous forme de fichiers *.tbl (ce sont des fichiers texte) dans Mozilla/defaults/wallet/. Pour reprendre les trois exemples d'avant, ça donne :
Là c'est IE qui ne reconnaît plus rien (mais il peut aussi l'apprendre pour une prochaine fois).
En somme, on a trois solutions : une propriétaire, mais qui marche avec IE et Mozilla, et deux autres, légèrement avantageuses pour l'un ou l'autre, mais qui reste meilleures que des valeurs arbitraires.
Le schéma de Mozilla est aussi beaucoup plus complet que les valeurs vCard : on a des valeurs comme (simple exemple) BillTo.Street.Line1 (1re ligne de l'adresse de facturation) ou ShipTo.Street.Line1 (1re ligne de l'adresse de livraison), très utile pour le commerce électronique.
Une RFC était d'ailleurs censé standardiser ces champs http://www.ietf.org/rfc/rfc3106.txt mais je n'ai vu que la barre Google qui la comprenait http://toolbar.google.com/autofill_help.html.
Voilà. J'espère avoir tout compris et ne pas avoir écrit de trop grosses bêtises. Si quelqu'un veut faire des corrections, qu'il ne se gêne pas, c'est pour ça que j'écris ici ! J'ai testé aussi sur Opera, mais la « Baguette magique » ne semble fonctionner que lorsqu'on revisite un site (??). Pour les navigateurs sous Mac ou Linux, je n'ai pas testé. Si quelqu'un veut le faire...
J'ai cherché à savoir comment on peut optimiser son code HTML pour la fonction « Préremplir les champs » de Mozilla. J'ai trouvé un article sur la fonction équivalente sur Internet Explorer http://www.developersdex.com/gurus/articles/223.asp : en gros, si on entre une fois quelque chose dans un champ du genre :
Code : Tout sélectionner
Votre nom : <input name="nom">
L'ennui, c'est si le prochain formulaire est plutôt :
Code : Tout sélectionner
Your name : <input name="name">
Code : Tout sélectionner
Votre nom : <input name="champ1">
Comme le dit l'article, Microsoft a un attribut propriétaire pour contourner le problème : vcard_name. Avec lui, ces trois champs sont reconnus comme demandant la même information :
Code : Tout sélectionner
<input name="nom" vcard_name="vCard.DisplayName">
<input name="name" vcard_name="vCard.DisplayName">
<input name="champ1" vcard_name="vCard.DisplayName">
Une deuxième solution est de remplacer la valeur de l'attribut name, du genre :
Code : Tout sélectionner
<input name="vCard.DisplayName"> <!-- (pour le prénom et le nom) -->
<input name="vCard.Email"> <!-- (adresse privée) -->
<input name="vCard.Homepage"> <!-- (le site perso) -->
La troisième solution que j'ai trouvée est d'utiliser le schéma interne de Mozilla, que l'on trouve sous forme de fichiers *.tbl (ce sont des fichiers texte) dans Mozilla/defaults/wallet/. Pour reprendre les trois exemples d'avant, ça donne :
Code : Tout sélectionner
<input name="name"> <!-- (pour le prénom et le nom) -->
<input name="home.email"> <!-- (adresse privée) -->
<input name="home.uri"> <!-- (le site perso) -->
En somme, on a trois solutions : une propriétaire, mais qui marche avec IE et Mozilla, et deux autres, légèrement avantageuses pour l'un ou l'autre, mais qui reste meilleures que des valeurs arbitraires.
Le schéma de Mozilla est aussi beaucoup plus complet que les valeurs vCard : on a des valeurs comme (simple exemple) BillTo.Street.Line1 (1re ligne de l'adresse de facturation) ou ShipTo.Street.Line1 (1re ligne de l'adresse de livraison), très utile pour le commerce électronique.
Une RFC était d'ailleurs censé standardiser ces champs http://www.ietf.org/rfc/rfc3106.txt mais je n'ai vu que la barre Google qui la comprenait http://toolbar.google.com/autofill_help.html.
Voilà. J'espère avoir tout compris et ne pas avoir écrit de trop grosses bêtises. Si quelqu'un veut faire des corrections, qu'il ne se gêne pas, c'est pour ça que j'écris ici ! J'ai testé aussi sur Opera, mais la « Baguette magique » ne semble fonctionner que lorsqu'on revisite un site (??). Pour les navigateurs sous Mac ou Linux, je n'ai pas testé. Si quelqu'un veut le faire...