Jquery.conflict()

nanong - 13 janv. 2013 à 13:20
 nanong - 4 févr. 2013 à 20:21
Salut à tous,

depuis un bon bout de temps je me cassse la tête avec cette affaire de conflit, en fait j'utilise plusieurs bibliothèque(prototypes et jquery). J'ai pu trouver le bout de code qui soulage ce pb:

<script type="text/javascript" src="other_lib.js"></script>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$.noConflict();
jQuery(document).ready(function($) {
// Code that uses jQuery's $ can follow here.
});
// Code that uses other library's $ can follow here.
</script>


le problème est le suivant: les codes qui utilisent les biliothèques suivantes ne se trouvent pas dans cette page, donc si j'ecris un truc du genre :
<script  src="ressources//wowslider.js"; ?>" type="text/javascript"></script>
à l'interieur de la fonction ca plante, comment dois-je donc appeler un lien javascript à l'interieur de la balise javascript??

Merci pour vos réponses

4 réponses

cs_AlexN Messages postés 694 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 8 janvier 2014 19
1 févr. 2013 à 09:10
salut,

jQuery et prototype fonctionnent bien ensemble avec le noConflict().
Par contre, $ est un raccourci utilisé par les deux librairies.
$.noConflict() est ambigu et peut très bien faire appel à prototype ou jQuery en fonction du moteur javascript qui est derrière et la manière dont sont chargées ces deux librairies.
jQuery.noConflict() est préférable à $.noConflict().

Il y a une erreur de syntaxe dans :
<script  src="ressources//wowslider.js"; ?>" type="text/javascript"></script>


au lieu de :

<script  src="ressources//wowslider.js" type="text/javascript"></script>


Je ne comprend ce que veux dire :


le problème est le suivant: les codes qui utilisent les biliothèques suivantes ne se trouvent pas dans cette page


Que veux-tu dire ? Que le code de prototype n'est pas dans une balise script et directement écrit dans la page ?
0
desole Alex, je n'étais pas la le week end, pour l'erreur de syntaxe j'avais tout juste oublier de l'enlever vue que ca provenait d'un echo.
Bon en fait,je dois ecris cette methode de conflict dans la balise <script></script> comme ceci:
<script type="text/javascript">(a)
jQuery.noConflict();
jQuery(document).ready(function($) {
// Code that uses jQuery's $ can follow here.//(ici jquery)
});
// Code that uses other library's $ can follow here.//(ici autre bibliothèque)
</script>


Le code qui doit entrer dans la partie reservée pour le code utilisant jquery se trouve dans une autre page, donc je doit l'importer avec un truc du genre
<script type="text/javascript" src="include/code.js"></script>
(b).
Mais le problème est que si j'écris ca(b) dans la zone marquée en jaune,ca ne sera pas pris en compte, car la balise de fermeture </script> fermera la première(a).
0
cs_AlexN Messages postés 694 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 8 janvier 2014 19
4 févr. 2013 à 20:03
Ah oui ! Mais non !
Ce n'est pas normal ce que tu me racontes.
Déjà, comme tu l'as deviné, inclure du javascript dans du javascript, ce n'est pas possible.
Si, dans ton jQuery(document).ready(), tu dois utiliser du code jQuery provenant d'un autre fichier, tu dois faire une inclusion de ce fichier après l'instruction d'inclusion de jQuery et de préférence après l'instruction noConflict(). Comme :

<script type="text/javascript" src="include/jQuery.js"></script>
<script type="text/javascript">
jQuery.noConflict();
</script>
<script type="text/javascript" src="include/code.js"></script>


puis l'utiliser en faisant l'appel approprié :

<script type="text/javascript">
jQuery.noConflict();
jQuery(document).ready(function($) {
   // Code that uses jQuery's $ can follow here.
   // Appel du point d'entrée dans code.js
});
// Code that uses other library's $ can follow here.//(ici autre bibliothèque)
</script>


Après, il y a la méthode barbare : tu charges le fichier js coté serveur (php), en mode texte, tu le parses pour exclure les éventuelles balises <script> et tu écris le résultat (le javascript) dans la fonction ready(), pour que ce soit interprété coté client à la réception de la page (ready()).

<script type="text/javascript">
jQuery.noConflict();
jQuery(document).ready(function($) {
   // Code that uses jQuery's $ can follow here.
   <?php

   // 1) Lecture du fichier code.js en mode texte
   // 2) Extraction du javascript
   // 3) Ecriture du javascript dans le html.

   ?>
});
// Code that uses other library's $ can follow here.//(ici autre bibliothèque)
</script>
0
je vais essayer, mais je crois que j'ai deja employe la première methode et ca n'a pas fonctionné, peut etre que j'ai aussi oublie quelque chose. Merci de ta reponse, je te tiens informé de l'avancé.
0
Rejoignez-nous