Tout d'abord, je suis le créateur de webshims lib (un de ceux qui polyfills). Pour répondre à votre question:
Vaut-il la création d'une des formes polyfill pour un projet?
Non, il est vraiment difficile de le faire juste pour un seul projet. Eh bien, je l'ai fait, tout simplement parce que je veux utiliser les technologies modernes.
Est-il utile d'utiliser un des formulaires de polyfill comme webshims lib pour un projet?
Oui, absolument! Et voici pourquoi:
1. Nice normalisé de Balisage déclaratif de l'API
Après, y compris webshims et les scripts suivants:
//polyfill forms (constraint validation) and forms-ext (date, range etc.)
$.webshims.polyfill('forms forms-ext');
Vous pouvez simplement écrire vos widgets et vos contraintes dans votre formulaire:
<input type="date" />
<input type="date" min="2012-10-11" max="2111-01-01" />
<input type="range" disabled />
<input type="email" required placeholder="Yo you can use a placeholder" />
Cela permettra de créer de 3 différents widgets et chaque sont configurés différemment. Pas de supplément de JS besoin standardisé, propre et maigre code.
2. Normalisé DOM-API
En va de même pour l'API DOM. Voici deux exemples: la Combinaison de deux champs de date et de la combinaison d'un champ avec un champ de date.
3. fonctionne sans JS dans les navigateurs modernes
Dégrade gracieusement dans les vieux navigateurs et fonctionne bien dans les modernes.
4. Moins de la taille du fichier dans les navigateurs modernes
Particulièrement bon pour mobile (iOS 5, Blackberry n'a pas de support pour la date par exemple)
5. Mieux UX [pour la plupart mobile]
Meilleur mobile UX (meilleure entrée de l'INTERFACE utilisateur pour le toucher, de meilleures performances, s'adapte au système), si vous l'utilisez: type="email", type="number" et type="date"type="range"
Mais que dire encore de la personnalisation?
Je suis un développeur dans une agence plus grande et vous avez absolument raison, la plupart des clients, et la plupart des concepteurs ne tolère pas beaucoup de différences, mais j'ai encore envie d'utiliser des technologies modernes, ce qui signifie webshims lib peut vous donner le meilleur des deux mondes.
La personnalisation de la contrainte de validation
Les polyfills destinés à la prise de la partie
//polyfill constraint validation
$.webshims.polyfill('forms');
Personnalisation de l'INTERFACE utilisateur de l'erreur-bulle:
//on DOM-ready
$(function(){
$('form').bind('firstinvalid', function(e){
//show the invalid alert for first invalid element
$.webshims.validityAlert.showFor( e.target );
//prevent browser from showing native validation message
return false;
});
});
génère le balisage suivant:
<!-- the JS code above will generate the following custom styleable HTML markup for the validation alert -->
<span class="validity-alert-wrapper" role="alert">
<span class="validity-alert">
<span class="va-arrow"><span class="va-arrow-box"></span></span>
<span class="va-box">Error message of the current field</span>
</span>
</span>
Personnaliser le style d'un invalide valide champ de formulaire:
.form-ui-invalid {
border-color: red;
}
.form-ui-valid {
border-color: green;
}
Personnalisation du texte de la validité d'alerte:
<input required data-errormessage="Hey this is required!!!" />
Et maintenant, quel est le point:
- fonctionne toujours sans JS
- les navigateurs modernes charger uniquement le code de personnalisation (3 ko min/format gzip) et les anciens navigateurs ne charger l'API supplémentaire (environ 13kb min/gzip) (formes sont beaucoup plus que juste la contrainte de validation de l'API, par exemple, il y a aussi la mise au point, espace réservé, sortie et ainsi de suite)
Et qu'est-ce que votre spéciale à titre d'exemple, la personnalisation de l'datefield?
Pas de problème:
//configure webshims to use customizable widget UI in all browsers
$.webshims.setOptions('forms-ext', {
replaceUI: true
});
$.webshims.polyfill('forms forms-ext');
Et aussi ici:
- fonctionne toujours sans JS dans les navigateurs modernes
- les navigateurs modernes seulement de charger l'INTERFACE utilisateur et l'INTERFACE utilisateur de l'API de la colle, mais pas les DOM-API (valueAsNumber, valueAsDate...)
Et maintenant, voici la meilleure:
//configure webshims to use customizable widget UI in all non mobile browsers, but a customizable one in all desktop and all non-capable mobile browsers
$.webshims.setOptions('forms-ext', {
//oh, I know this is bad browser sniffing :-(
replaceUI: !(/mobile|ipad|iphone|fennec|android/i.test(navigator.userAgent))
});
$.webshims.polyfill('forms forms-ext');
- moins de la taille du fichier et une meilleure UX pour les navigateurs mobiles (la plupart des clients, et la plupart des concepteurs vont vous aimer pour avoir un autre de l'INTERFACE utilisateur dans le mobile!!!)
- fonctionne toujours sans JS dans les navigateurs modernes
- les navigateurs modernes seulement de charger l'INTERFACE utilisateur et l'INTERFACE utilisateur de l'API de la colle, mais pas les DOM-API (valueAsNumber, valueAsDate...)