Hello !
Après de nombreuses recherches, tant sur les sites français que les sites anglais, je sèche complètement sur un soucis de conflit entre scripts.
Le soucis que je rencontre est très simple. Je souhaite mettre un module de slideshow sur la page d'accueil de mon site Joomla, le soucis c'est qu'il utilise MooTools, provoquant un conflit avec jQuery, et empêchant donc ce dernier de charger.
J'ai vu plusieurs solutions à ça. Tout d'abord le fameux script noconflict, à placer en tête du header, afin d'éviter que jQuery utilise le $. Ensuite l'utilisation d'un module utilisant la librairie jQuery, excluant donc toute forme de conflit. Enfin la modification manuelle de toutes les variables dans les appels jQuery.
Pour la première solution, qui me paraissait la plus simple, je voulais essayer un plugin, mais je me suis rendu compte que le script était déjà appelé. Seulement, il l'était après les appels vers MooTools :
Ayant lu que ce script devait être appelé avant tous les autres, j'ai vite compris d'où venait le problème. Mais je n'ai pas trouvé comment le résoudre. Dans les fichiers de mon template, je vois bien l'appel demandé en premier :
Et, je ne vois aucun appel vers MooTools, donc soit il est effectué par une extension, mais je ne sais pas laquelle, parce que rien ne l'indique dans le header que j'ai montré plus haut, soit je passe complètement à coté de quelque chose. D'ailleurs je ne sais même pas (Parce que mes connaissances en développement web sont correctes, voire médiocre) s'il est possible qu'une extension puisse faire des appels de librairie avant, et si c'est une extension qui appelle MooTools, sachant que ce dernier est appelé malgré tout, même sans le module qui ne fonctionne pas sur la page.
Ne comprenant donc pas le problème je suis retourné voir la doc sur jQuery, et ait tenté d'utiliser leur plugin. Mais le problème est resté le même, rien n'a changé. Je suis donc à nouveau retourner lire leur documentation, et j'ai vu que la dernière solution consistait à récupérer chaque fichier javascript appelé dans le header pour modifier à la main les "$". Solution que j'aimerais garder en dernier recours, du fait que je me fais pas du tout confiance pour ne pas faire une connerie.
Et donc, j'en viens à ma question : D'où sort cet appel MooTools ? Puis-je le déplacer après l'appel du noconflict ?
Merci d'avance, je sais qu'il y a déjà des sujets là dessus, mais j'ai du en lire des dizaines, sans trouver ma solution, s'il y en a un qui possède ma solution, j'aimerais qu'on me le montre, car je sèche complètement et je désespère un peu de trouver une solution.
Ps : Je sais que c'est mal d'utiliser plusieurs librairies à la fois... Mais les modules slideshow en jQuery ne m'ont vraiment pas plu :/
Après de nombreuses recherches, tant sur les sites français que les sites anglais, je sèche complètement sur un soucis de conflit entre scripts.
Le soucis que je rencontre est très simple. Je souhaite mettre un module de slideshow sur la page d'accueil de mon site Joomla, le soucis c'est qu'il utilise MooTools, provoquant un conflit avec jQuery, et empêchant donc ce dernier de charger.
J'ai vu plusieurs solutions à ça. Tout d'abord le fameux script noconflict, à placer en tête du header, afin d'éviter que jQuery utilise le $. Ensuite l'utilisation d'un module utilisant la librairie jQuery, excluant donc toute forme de conflit. Enfin la modification manuelle de toutes les variables dans les appels jQuery.
Pour la première solution, qui me paraissait la plus simple, je voulais essayer un plugin, mais je me suis rendu compte que le script était déjà appelé. Seulement, il l'était après les appels vers MooTools :
Ayant lu que ce script devait être appelé avant tous les autres, j'ai vite compris d'où venait le problème. Mais je n'ai pas trouvé comment le résoudre. Dans les fichiers de mon template, je vois bien l'appel demandé en premier :
Et, je ne vois aucun appel vers MooTools, donc soit il est effectué par une extension, mais je ne sais pas laquelle, parce que rien ne l'indique dans le header que j'ai montré plus haut, soit je passe complètement à coté de quelque chose. D'ailleurs je ne sais même pas (Parce que mes connaissances en développement web sont correctes, voire médiocre) s'il est possible qu'une extension puisse faire des appels de librairie avant, et si c'est une extension qui appelle MooTools, sachant que ce dernier est appelé malgré tout, même sans le module qui ne fonctionne pas sur la page.
Ne comprenant donc pas le problème je suis retourné voir la doc sur jQuery, et ait tenté d'utiliser leur plugin. Mais le problème est resté le même, rien n'a changé. Je suis donc à nouveau retourner lire leur documentation, et j'ai vu que la dernière solution consistait à récupérer chaque fichier javascript appelé dans le header pour modifier à la main les "$". Solution que j'aimerais garder en dernier recours, du fait que je me fais pas du tout confiance pour ne pas faire une connerie.
Et donc, j'en viens à ma question : D'où sort cet appel MooTools ? Puis-je le déplacer après l'appel du noconflict ?
Merci d'avance, je sais qu'il y a déjà des sujets là dessus, mais j'ai du en lire des dizaines, sans trouver ma solution, s'il y en a un qui possède ma solution, j'aimerais qu'on me le montre, car je sèche complètement et je désespère un peu de trouver une solution.
Ps : Je sais que c'est mal d'utiliser plusieurs librairies à la fois... Mais les modules slideshow en jQuery ne m'ont vraiment pas plu :/
Commentaire