11488 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous,

voici mon soucis, je bosse sur un projet avec joomla qui utilise mootools, pour contourner le problème de compatibilité entre mootools et jquery, j'ai installé le petit script no conflict de jquery. (Je veux faire un slideshow avec jquery sur ma home page de template joomla).

Je ne mis connais pas trop, et je suis confronté à un petit soucis, ce que j'ai tenté n'a pas fonctionné Smiley biggrin .

Voila ma page index.html avec l'appel de la fonction jquery.
<script src="../../../ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>
<script src="slideView.1.2.js" type="text/javascript"></script>
<script type="text/javascript">
     jQuery.noConflict();

$j(function() {
	$j("#slideshow").slideView({
		loop: true
	});
});

</script>


J'y ai intégré la le no conflict jquery et j'ai modifié le $ par $j.

Le problème ne vient pas de la enfin, je crois.
Le problème vient du fichier slideView.1.2.js . J'ai essayé de modifier le $ par $j. Ne vous moqué pas je suis peut être a la ramasse sur ce coup là ! a vous de me le dire . J'avoue c un peu du bricolage. Smiley biggrin

voici ce fameux fichier

/*

	2010.3.9
	SlideView Component
	developled by Robin at ELFVision and PageTalks
	used mainly in the WUSESKY Project
	
	Visit Robin's:
	 http://www.elfvision.com/
 
	 http://pagetalks.com/
 
	
	
*/

     


(function($j) {
$j.iSlideView = {
	build: function(user_options) {
		var defaults = {
			thumb: true,
			thumbPrefix: "thumb_",
			frame: {
				isExist: false
			},
			slideBy : 1,
			speed: 350,
			easeOut: "swing",
			easeIn: "swing",
			easeThumb: "swing",
			loop: false,
			interval: 5000
		},
			options = $j.extend(defaults, user_options),
			getThumbName = function(n,prefix) {
				var arr = n.split("http://pagetalks.com/");
				var tl = n.length;
				var w = arr[arr.length-1].length;
				return n.substr(0,tl-w-1)+"/"+prefix+arr[arr.length-1];
			};
		
		return $j(this).each(function() {
			var x =$j(this),
				list  = x.find("ul"),
				links = list.find("a"),
				images = list.find("img"),
				slidebar,
				thumbList,
				thumbCon,
				desc,
				arrow,
				back = options.leftArrow ? $j(options.leftArrow) : $j("<span class='arrowL arrow'><</span>"),
				next = options.rightArrow ? $j(options.rightArrow) : $j("<span class='arrowR arrow'>></span>"),
				xH,
				xW,
				li,
				liW,
				totalW,
				xTotalH,
				Pointer,
				total,
				tLink,
				isBusy = false,
				focusTo = function(p) {
					var offsetT = - (xH * p);
					if(isBusy) {
						list.stop();
					}
					isBusy = true;
					if(options.desc) {
						desc.html(options.desc[p]);
					} else {
						desc.html(images.eq(p).attr("alt"));
					}
					list.animate({
						top: offsetT +"px"
					},options.speed,options.easeOut,function() {
						isBusy = false;
					});
				};
			
			links.click(function() {
				return false;
			});
			
			//Insert a frame
			var xW = x.width();
			var xH = x.height();
			if(options.frame.isExist) {
				$j("<div class='slideFrame' />").appendTo(x).css({
					width: x.width()-options.frame.width * 2,
					height: x.height()-options.frame.width * 2,
					border: options.frame.width+"px solid "+ options.frame.color,
					position: "absolute",
					top: 0,
					left: 0,
					zIndex: 4
				});
			}
			
			//Insert thumb list, arrows, captions
			desc = $j("<p class='desc' />").appendTo(x);
			if(options.thumb || (!options.leftArrow || !options.rightArrow) ) {
				slidebar = $j("<div class='slidebar' />").appendTo(x).fadeTo("fast",0.8);
			}
			if(options.thumb) {
				thumbList = $j("<ul class='thumbList' />");
				thumbCon = $j("<div class='wrap' />").append(thumbList).appendTo(slidebar);
				//prepare sidebar thumbs
				$j.each(images,function(index,img){
					thumbList.append("<li><a href='#' id='"+ (index+1) +"'><img src='"+getThumbName(img.src,options.thumbPrefix)+"' alt='"+img.alt+"' /></a></li>");
				});
				
				li = thumbList.find("li");
				liW = li.width();
				totalW = li.length * liW;
				thumbList.css("width",totalW).hover(function() {
					slidebar.fadeTo("fast",1);
				}, function() {
					slidebar.fadeTo("fast",0.8);
				});
				tLink = thumbList.find("a").each(function(i) {
					$j(this).hover(function() {
						var id = this.id-1;
						(function(index){
							if(index!=Pointer) {
								focusTo(id);	
							}
						})(i);
					},function() {
						focusTo(Pointer);
					});
				});
			}
			if(!options.leftArrow || !options.rightArrow) {
				slidebar.append(next).prepend(back);
			}
			
			focusTo(0);
			
			desc.fadeTo("fast",0.6).hover(function() {
				$j(this).fadeTo("fast",0.9);
			},function() {
				$j(this).fadeTo("fast",0.6);
			});
			
			xTotalH = images.length * xH;
			list.css("height",xTotalH);
			
			Pointer = 0;
			total = images.length;
			
			if(!options.leftArrow) {back.fadeTo("fast",0.5);}
			
			if(options.loop) {//loop the slide
				setInterval(function() {
					next.click();
				},options.interval);
			}
			
			next.click(function() {
			if( total - Pointer > options.slideBy ) {
				if(options.thumb) {
				var offsetL =  parseInt(thumbList.css("left")) - liW * options.slideBy;
					thumbList.animate({
						left: offsetL + "px"
					},options.speed,options.easeThumb);
				}
				
				Pointer+=options.slideBy;
				focusTo(Pointer);
				
				if(!options.leftArrow) {
					back.fadeTo("fast",1);
				}
			} else {
				if(options.loop) {
					if(options.thumb) {
						thumbList.animate({
							left: "0px"
						},options.speed,options.easeThumb);
					}
					Pointer = 0;
					focusTo(0);
				} else {
					next.fadeTo("fast",0.5);
				}
			}
			return false;
			});
			
			back.click(function() {
			if(Pointer!=0) {
				if(options.thumb) {
					var offsetL =  parseInt(thumbList.css("left")) + liW * options.slideBy;
					thumbList.animate({
						left: offsetL + "px"
					},options.speed,options.easeThumb);
				}
				
				Pointer-=options.slideBy;
				focusTo(Pointer);
				
				if(!options.rightArrow) {
					next.fadeTo("fast",1);
					if(Pointer==0)//when slide back to the start
						back.fadeTo("fast",0.5);
				}
			} 
			return false;
			});
		});
	}
};
$j.fn.slideView = $j.iSlideView.build;
})(jQuery);



Alors qu'en pensez vous ?

Si quelqu'un trouve mon erreur, je lui serais très reconnaissant ! si il m'explique alors là c le pompom ! ! merci par avance !!!
Pourriez vous m'aider à savoir ce que je dois changer dans le deuxième fichier pour que m'on slideshow fonctionne ?
Modifié par dreadstock (07 May 2010 - 15:20)
Bonjour,

Ton erreur a été de ne pas lire les règles élémentaires du forum :
http://forum.alsacreations.com/help.php (section 11; et 18.);

Ensuite, il est parfaitement déconseillé d'utiliser deux librairies javascript et ce justement pour des problèmes de compatibilité mais aussi de poids (pages trop longues à charger).

Je te conseillerai de rester sur mootools si c'est la librairie que tu utilises depuis le début du projet.

Bon courage.
Désolé pour les répétitions, j'ai po fait attention ! j'essaie toujours d'être cordial. Désolé !

Merci pour le conseil, mais je préfère utiliser jquery, car je ne connais pas du tout mootools.

si vous avez un tuto pour utiliser no conflict, je suis preneur. je comprends pas tout sur le site jquery, c'est en anglais. merci
Modérateur
Salut,

dreadstock a écrit :
Merci pour le conseil, mais je préfère utiliser jquery, car je ne connais pas du tout mootools.
Aïe ! Euh... Au risque de te froisser, je te dirais :
A quoi bon tenter de t'aider si tu n'es pas prêt à corriger tes erreurs ? Smiley rolleyes

La librairie est déjà là pour te simplifier le travail et il ne s'agit pas d'apprendre tout Mootools mais simplement d'apprendre à ajouter un plugin, avec toute la doc, de surcroît. Smiley cligne

Maintenant, comme te l'a conseillé Guillem.C, il faut vraiment éviter de se servir de 2 librairies à la fois car tu vas au devant de plusieurs problèmes lors de futurs développements ( compatibilité, poids mais aussi coup de boule de la part de celui qui va reprendre ton travail si tu n'es pas seul sur ce projet. Smiley ravi )

Il faut bien comprendre que Mootools, comme jQuery, dispose déjà de toutes les composantes pour réaliser ce que tu souhaites ( ... et plus encore ) et que ça va t'éviter de t'arracher les cheveux !

Une simple recherche sur Google devrait t'aider à trouver ton bonheur. ( le premier résultat peut-être ? Smiley murf )
Ouais ta raison, je vais essayé de trouver des scripts mootools et ouvrir mon esprit javascript. merci Smiley biggrin