La nouvelle version du projet DotNetNuke WebControls a vu une partie de son API Javascript réecrite. Celle-ci entre en conflit avec un certain nombre de bilbiothèques JavaScript et nottament jQuery, une bibliothèque vraiment très pratique autant pour les développeurs que pour les intégrateurs. Cela pose réellement problème, puisque le menu disparaît dès que jQuery est déclaré. Or, saviez-vous qu'il existe une solution à cela ? Il suffit d'appeler la méthode jQuery.noConflict() juste après la déclaration de jQuery.
Ce qui donne :
< script type="text/javascript" language="javascript" src="http://code.jquery.com/jquery-latest.js" >< / script >
< script type="text/javascript" language="javascript" > jQuery.noConflict(); < / script >
< script type="text/javascript" language="javascript" src="un_plugin_ici_par_exemple.js" >< / script >
Le problème est créé par l'espace de nom partagé par Dnn et jQuery. En effet, le symbole $ est usé par chacun, et l'un remplissant l'autre avec ses propres fonctions, cela créé un petit objet corrompu.
Après cela, vous ne pouvez plus appeler une fonction jQuery de la sorte :
$( ' mon element ' ).show();
Mais plutôt comme cela :
jQuery( ' mon element ' ).show();
Si vous ne voulez vraiment pas vous passer du symbole $ dans vos fonctions, vous pouvez les inclure dans une déclaration locale plutôt que globale, comme cela =
jQuery(function($) {
$( ' mon element ' ).show();
} ) ;
A noter également que la fonction noConflict peut-être surchargée. mais je vous laisse découvrir cela dans la documentation jQuery : http://docs.jquery.com/Core/jQuery.noConflict
seb