WFFM et la longue histoire de ses problèmes avec Javascript

WFFM et la longue histoire de ses problèmes avec Javascript

Si vous avez déjà utilisé WFFM sur votre page, vous savez que ce module utilise son propre ensemble de scripts. La façon dont ces scripts sont injectés dans la page a évolué, raison pour laquelle nombre de développeurs front end ne savent plus s’ils mettent à jour leur instance ou s’ils développent de nouvelles pages. Dans cet article, nous examinerons les différentes évolutions de WFFM (scripts uniquement) depuis Sitecore 7.2 jusqu’à la dernière mise à jour, 8.2, et parlerons des bugs les plus communs rencontrés avec chaque version. Nous nous concentrerons sur les pages MVC, qui sont les plus utilisées et rencontrent le plus de problèmes connus.

WFFM v2.4 rev.151103 et Sitecore 7.1 – 7.2

Cette version assemble RequireJS. L’implémentation est relativement buggée et problématique. Ci-dessous, vous trouverez quelques-uns des bugs connus de cette version.

ID du bug = #80478

Description : WFFM ne fonctionne pas avec les autres bibliothèques JavaScript utilisant la fonction define(). Quelques exemples de bibliothèques JS utilisant cette fonction : Slick.js, jquery.cookie.js, et bodyBottom.min.js. Le message d’erreur obtenu est, approximativement : “Error: Mismatched anonymous define() module:”

Cette erreur peut également occasionner des problèmes dans l’éditeur de page/d’expérience. Après avoir ajouté un formulaire MVC, l’éditeur de page/d’expérience cessera de fonctionner.

Solution alternative : demander un correctif à Sitecore.

Résolution : Résolu dans la mise à jour WFFM 8.1 Update 2

Un certain nombre d’erreurs JavaScript apparaissant sur de multiples navigateurs ont été résolues, et un certain nombre de fichiers JS ont été revus pour garantir leur cohérence. (80478, 78916, 82721, 85115, 83997)

ID du bug = (inconnu)

Description : RequireJS utilise la portée globale, et ne vous laisse pas ajouter vos propres scripts à la page en utilisant cette bibliothèque.

Solution alternative : https://community.sitecore.net/developers/f/10/t/2050

WFFM 8.0 rev. 141217 (Update-1)

Depuis cette mise à jour, requiredJS a été exclu du module.

window.$scw = jQuery.noConflict(true);

Cette ligne a été ajoutée à ~\Website\Views\Form\Index.cshtml afin de résoudre les conflits avec jQuery sur votre site web.

WFFM 8.1 rev. 151008 (initial release)

RequireJS est de retour, sans trop d’amélioration par rapport à l’implémentation précédente, WFFM v2.4.

Dans cette version, jQuery.noConflict est absente de l’implémentation WFFM. Vous rencontrerez donc probablement des problèmes de conflit avec la bibliothèque jQuery spécifique à votre site.

 

WFFM 8.1 rev. 160523 (Update 3)

Cette version voit apparaître le paramètre suivant, qui détermine si if bootstrap.min.css doit être ajouté à votre rendu de formulaire WFFM ou non :

<setting name=”WFM.EnableBootstrapCssRendering” value=”false” />

$.noConflict(); est ajouté au fichier main.js, et utiliser deux jQuery sur une seule page ne devrait pas occasionner de problème.

Peu de changements ont été effectués vis-à-vis des scripts JavaScript dans WFFM depuis la mise à jour 8.1 Update 3.

WFFM 9.0+

WFFM n’est plus que partiellement supporté à partir de cette version. Si vous commencez juste le développement, évitez autant que possible de l’utiliser car il ne sera plus supporté dans le futur.