Foundation : corriger l'erreur Uncaught TypeError: a.indexOf is not a function

Le framework Foundation fournit les outils pour créer une application fonctionnant en interface utilisateur. Il fournit des templates en HTML et des composants CSS et JavaScript pour aider les développeurs à créer plus rapidement un site internet ou une application. Le framework fait notamment appel à JQuery, la célèbre librairie JavaScript pour faciliter l'écriture de code. Le message d'erreur "Uncaught TypeError: a.indexOf is not a function" est lié à la compatibilité avec cette librairie.

Depuis la version 5 du Framework, la version de JQuery demandée a également évolué. La nouvelle version requise est la version 2.1. Or, la version 1.8, antérieure à la version 2.1 a apporté comme changement majeur l'abandon de certaines méthodes qui ne sont plus supportées. Vous devez vous assurer de bien les modifier dans votre code. C'est le cas des méthodes basées sur les évènements ".load()", ".unload()" ou encore ".error()". Elles ne sont plus disponibles. Pour détecter ces évènements, vous devez utiliser la méthode standard de JQuery pour les évènements : ".on()".

//Ne fonctionne plus à partir de JQuery 1.8
$(window).load(function(){...});
//On utilise la fonction générique ".on()" avec l'évènement en paramètre à la place
$(window).on('load', function(){ ...});

Le même problème peut se poser dans l'autre sens. Si vous incluez une fonction utilisant une version plus récente de JQuery, comme une librairie nécessitant JQuery 3.3, vous devez la supprimer ou remplacer la version de cette librairie par une version plus ancienne compatible avec la version 2.1 de JQuery. Par exemple, la fonction "escapeSelector()", apparue avec la version 3.0 de JQuery, ne peut pas être utilisée avec la version 5 de Foundation.

Ces recommandations sont valables pour toutes les versions du Framework. Assurez-vous de regarder les prérequis en ce qui concerne la version de JQuery si vous voyez ce message d'erreur.