11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

je me demande si qq sait comment faire firefox reconnaître des évènements de scroll de la molette de la souris.
le code suivant marche bien sous safari, mais firefox ne réagit pas.
j'ai essayé avec des test delta >= (<=) 3 comme il me semble firefox est plus sensible mais le résultat est toujours négatif.


texte['nb'].wheel = function(nb){
 
		if (event.wheelDelta >= 120)	{
			texte['nb'].descendre(nb,false)
       		texte['nb'].descendre(nb,false)
			texte['nb'].descendre(nb,false)
		}
   		else if (event.wheelDelta <= -120)	{
			texte['nb'].monter(nb,false)
			texte['nb'].monter(nb,false)
			texte['nb'].monter(nb,false)
		}
 
}


merci d'avance

EDIT: j'ai été obligé d'ajouter des '' au ['nb'] pour éviter ce joli gag Smiley nb et avant même cela Smiley id Smiley biggol
Modifié par newbiemac (08 May 2007 - 21:48)
Hello,
The Jedi a écrit :
Mozilla gère ça comme un type d'évènement et non comme un évènement à part entière.

Comment ça ? Smiley confus
Salut, en effet j'avais trouvé ce site...
en conséquence j'ai essayé cela:


texte['nb'].wheel	= function(nb)	{
		if (event.wheelDelta >= 120)	{
			texte['nb'].descendre(nb,false)
       		texte['nb'].descendre(nb,false)
			texte['nb'].descendre(nb,false)
		}
   		else if (event.wheelDelta <= -120)	{
			texte['nb'].monter(nb,false)
			texte['nb'].monter(nb,false)
			texte['nb'].monter(nb,false)
		}
		else if (event.detail >= -3)	{
			texte['nb'].descendre(nb,false)
       		texte['nb'].descendre(nb,false)
			texte['nb'].descendre(nb,false)
		}
   		else if (event.detail <= 3)	{
			texte['nb'].monter(nb,false)
			texte['nb'].monter(nb,false)
			texte['nb'].monter(nb,false)
		}

}

box['nb'].load = function()			{			
		el					= texte['nb'].obj
		el.nb.onmousewheel	= function(){texte['nb'].wheel('nb')}
		if (el.nb.addEventListener)
			el.nb.addEventListener('DOMMouseScroll',function(){texte['nb'].wheel(nb)}, false);
}




mais malheureusement pas de bol, firefox refuse de fonctionner Smiley decu
malheureusement je suis vraiment bloqué
Modifié par newbiemac (09 May 2007 - 17:30)
Non ce que je voulais dire c'est que les infos sur la molette sont rangés dans event.wheelDelta sous IE et Opera alors que dans Mozilla c'est dans event.detail.

Le lien fourni est d'ailleurs super à ce niveau puisqu'il y montre les différences entre navigateurs de manière assez claire.
Salut the Jedi,

ast-ce qu'alors tu vois comment appeler la fonction correctement, afin que ça marche...
Faut pas dire que j'ai bcp d'expérience en JS et tout est logique pour autant que les trucs marchent Smiley biggol

merci d'avance
Salut,

je n'arrive vraiment pas à faire marcher ce truc. si quelqu'un a une proposition pour mon code ce serait super sympa.
je ne vois pas le problème. Smiley confused je peux seulement m'imaginer qu'il y a un problème au niveau du lancement de la fonction load() Smiley confus

merci d'avance Smiley rolleyes
newbiemac a écrit :
Salut,

je n'arrive vraiment pas à faire marcher ce truc. si quelqu'un a une proposition pour mon code ce serait super sympa.
je ne vois pas le problème. Smiley confused je peux seulement m'imaginer qu'il y a un problème au niveau du lancement de la fonction load() Smiley confus

merci d'avance Smiley rolleyes

Accessoirement le fait de vouloir gérer des events de molette sur un site est un minimum stupide.

tout le monde n'a pas forcément de molette sur sa souris : ex : les ordi portables avec un touchepas, la molette est pas gérée.
Modifié par Gatsu35 (13 May 2007 - 12:38)
Gatsu35 a écrit :
Accessoirement le fait de vouloir gérer des events de molette sur un site est digne d'une grande stupidité.

Merci de faire preuve d'un peu plus de diplomatie. Smiley smile
franchement, c pas parce que qq portables ne gèrent pas la fonction scroll que ça ne vaut pas la peine de gérer le scroll sur une partie du site.
en plus les constructeurs ont bien compris qu'il doivent même sur un portable permettre le scroll (p.ex. avec deux doigts sur le pad, ou une partie du pad réservé pour le scroll etc etc etc... )
de toute façon ce serait sympa si qq pourrait m'aider à trouver la solution, indépendamment si ...

il n'y a pas que le bon et le mauvais !!! et qq fonctionalités de plus au cas où ne vont en général pas faire de mal.
Bonjour,

des scrollbars personnalisés ça peut servir par exemple sur ce genre de site :
http://kimimaroo77.free.fr/pixelnemesis/

voilà j'ai utilisé quasiment le même code que newbiemac et si quelqu'un pouvait nous aider à trouver la solution!

script trouvé sur:
http://www.javascriptfr.com/code.aspx?ID=38038
box.js:
http://kimimaroo77.free.fr/pixelnemesis/_js/box/boxfeu.js

code à insérer dans la page index:

<html>
<head>
    <script language="javascript" src="box.js"></script>
</head>
<div id="mondiv">contenu</div>
<script language="javascript" >
box["bx_0"]	= new boite("mondiv")			;	//	Créer le nouvel objet. Le nom passer en parametre doit obligatoirement etre le meme que celui dans box
	box["bx_0"].top	=	0					;	//	Position par défaut de la position du texte en hauteur. A déclarer sous peine d'une erreur
	box["bx_0"].image= "image/"				;	//	url des images. A declarer sous peine d'erreur
	
	//	Déclarations des positionnements des différents calques. A mettre ici et pas dans le CSS sinon aucun lien ne pourra etre fait pour les width,height ect..
	with(box["bx_0"].obj)	{
		
		
		txt.style.width	= ( parseInt(box["bx_0"].obj.txt.offsetWidth)-20)+"px"
		
		b.style.fontFamily		= "inherit"
		b_H.style.borderBottom	= "none 0px"
		b_B.style.borderTop		= "none 0px"
		
		scrl.style.top		= "2px"
		scrl.style.left 	= ( parseInt(box["bx_0"].obj.scrl.style.left)-2)+"px"
		scrl.style.backgroundColor="transparent"
		scrl.style.border	= "none 0px"
		scrl.style.height 	= ( parseInt(box["bx_0"].obj.id.offsetHeight)-6)+"px"
		scrl.style.width 	= ( parseInt(box["bx_0"].obj.b_H_I.offsetWidth))+"px"
		
		sV_E.style.backgroundColor="transparent"
		sV_E.style.height 	= ( parseInt(box["bx_0"].obj.scrl.offsetHeight)- ((parseInt(box["bx_0"].obj.b_H_I.offsetHeight)*2)+((box["bx_0"].obj.ie)? 6:4)))+"px"
		sV_E.style.width  	= ( parseInt(box["bx_0"].obj.b_H_I.offsetWidth))+"px"
	}
	box["bx_0"].initScroll()			;	//	Appel de l'initialisation du scroll; a declarer en dernier
	//box["bx_1"]= new boite("bx_1")		;
</script>
</body>
</html>


Modifié par kimimaro (24 Jul 2007 - 15:57)