IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques & Frameworks Discussion :

Incompatibilité Prototype / jQuery


Sujet :

Bibliothèques & Frameworks

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 88
    Points : 72
    Points
    72
    Par défaut Incompatibilité Prototype / jQuery
    Bonjour à tous !

    J'utilise le framework Rico+Prototype depuis quelques années pour gérer la partie Ajax de notre application. Malheureusement, un client a besoin de faire fonctionner jQuery au sein d'une page où il y a déjà prototype et rico inclus.

    Lorsque je commente l'inclusion de prototype.js, la partie jQuery fonctionne bien.

    Lorsque j'inclus prototype.js, par contre, j'ai quelques erreurs Javascript sur la console de Firebug. Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jQuery(window).bind is not a function
    Il semblerait que l'inclusion de prototype empêche de rajouter les fonctions définies vers la ligne 2285 de jQuery.js :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    ...
     
    jQuery.fn.extend({
     
    	/** @id jQuery.bind **/
    	bind: function( type, data, fn ) {
    		return type == "unload" ? this.one(type, data, fn) : this.each(function(){
    			jQuery.event.add( this, type, fn || data, fn && data );
    		});
    	},
     
    	/** @id jQuery.one **/
    	one: function( type, data, fn ) {
    		return this.each(function(){
    			jQuery.event.add( this, type, function(event) {
    				jQuery(this).unbind(event);
    				return (fn || data).apply( this, arguments);
    			}, fn && data);
    		});
    	},
     
    	/** @id jQuery.unbind **/
    	unbind: function( type, fn ) {
    		return this.each(function(){
    			jQuery.event.remove( this, type, fn );
    		});
    	},
     
    	/** @id jQuery.trigger **/
    	trigger: function( type, data, fn ) {
    		return this.each(function(){
    			jQuery.event.trigger( type, data, this, true, fn );
    		});
    	},
     
    ...
    Vu mes compétences en Javascript, je ne garantis pas que ce soit ça le problème, mais c'est ce dont j'ai l'impression.

    J'avais bien vu qu'il était possible qu'il y ait un problème avec la coexistence de 2 frameworks, mais c'est une hypothèse de travail; Je ne peux pas influer la dessus.
    En jetant un oeil sur ce lien : http://docs.jquery.com/Using_jQuery_...ther_Libraries j'ai pu voir qu'il pouvait y avoir un conflit entre prototype et jQuery car ils définissaient tous deux la méthode "$". Mais mon problème vient encore avant, car dans l'erreur signalée, il n'y a pas de $, et aussi pour la raison suivante : lorsque j'ai ajouté l'appel à noConflict(), j'avais mis un breakpoint (merci Firebug) dans cette méthode. Or l'erreur venait avant que je rentre dans le breapoint. En plus, l'appel à noConflict() est ce que je fais en premier.

    Je suis donc un peu perdu, et si quelqu'un saurait me diriger vers une solution praticable pour avoir les 2 frameworks travaillant de pair, ce serait parfait.

    En tout cas, merci de votre patience et de votre attention !
    Joël.

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Tu appelles bien Prototype avant jQuery ? Sinon, cela pose problème.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 88
    Points : 72
    Points
    72
    Par défaut
    Oui oui, j'avais vu que l'ordre des includes était important.

    Maintenant je peux revérifier demain si c'est vraiment le cas, mais d'après la structure de la page, la partie application (qui inclut prototype.js) est dans le header de la page, tandis que la partie customer (qui inclut donc jquery.js) est directement dans le code.

    Du coup, oui, je pense que Prototype (et Rico du coup) est inclus avant jQuery.

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Si Prototype est appelé avant jQuery et que tu utilises bien jQuery.noConflict(), il n'y a aucune raison pour que cela ne fonctionne pas.
    En revanche, l'incompatibilité vient peut-être de Rico (je ne le connais pas celui-là !)

Discussions similaires

  1. Incompatibilité prototype / jQuery ($)
    Par Ghunter59 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 27/10/2009, 12h58
  2. [Prototype/JQuery]debuter avec ajax
    Par kanabzh29 dans le forum jQuery
    Réponses: 3
    Dernier message: 04/09/2008, 09h57
  3. [Prototype/JQuery] tableau avec ajax
    Par friedamichelle dans le forum jQuery
    Réponses: 3
    Dernier message: 26/08/2008, 16h57
  4. [Prototype/JQuery] création d'un t'chat
    Par joa_tcherno dans le forum jQuery
    Réponses: 4
    Dernier message: 10/03/2008, 14h42
  5. Réponses: 3
    Dernier message: 07/01/2008, 10h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo