2009-11-12 15 views
5

J'ai donc une page qui utilise les scripts AJAX Prototype et Mootools.Question de conflit Prototype/Mootools

Il y a beaucoup plus de Mootools que Prototype, donc je me demande si Prototype a une fonction similaire à $j = jQuery.noConflict(); de jQuery que je peux utiliser pour redéfinir l'alias $ pour Prototype?

Merci!

Répondre

8

La nouvelle version de MooTools a un mode sans conflit. Malheureusement, Prototype ne le fait pas, ce qui signifie que le $ devra être lié à Prototype.

Pour activer le mode sans échec Dollar, mettez à niveau votre version de MooTools et assurez-vous d'inclure MooTools après Prototype.

<script type="text/javascript" src="prototype.js" /> 
<script type="text/javascript" src="mootools.js" /> 

Après cela, $ sera lié à un prototype. Dans les scripts MooTools, remplacez toutes les références $ par document.id.

// Before 
var X = new Class({ 
    initialize: function(element){ 
     this.element = $(element); 
    } 
}); 


// After 
var X = new Class({ 
    initialize: function(element){ 
     this.element = document.id(element); 
    } 
}); 

ou vous pouvez utiliser une fermeture:

(function(){ 

    var $ = document.id; 

    this.X = new Class({ 
     initialize: function(element){ 
      this.element = $(element); 
     } 
    }); 

})(); 

Plus d'informations sur le dollar mode sans échec est disponible sur le blog de MooTools:

http://mootools.net/blog/2009/06/22/the-dollar-safe-mode/

+0

Merci, je espérait que Prototype avait quelque chose de similaire à cela, car il est de loin la plus petite mise en œuvre, mais naturellement, on n'est jamais aussi chanceux. – Marty

+1

Bien que je suis d'accord que vous ne voulez pas une bibliothèque de 200 Ko (compressé), MooTools 67 kb compressé est très respectable. Ne basez pas votre choix sur la taille, mais sur la fonctionnalité. MooTools fait tout ce que Prototype fait et je recommande de laisser tomber Prototype. Utilisez également le site Web pour créer une version personnalisée de MooTools et supprimer tout ce dont vous n'avez pas besoin. –

3

J'ai une solution très simple:

<script src='mootools.js'></script> 
<script>$moo = $; delete ($);</script> 
<script src='prototype.js></script> 



<script> 

(function ($){ 


//here you can use $ of moo tools 

})($moo); 


//here you can use $ of prototype 


</script>