Petit probleme javascript

Fermé
Winterboard Messages postés 137 Date d'inscription jeudi 8 mai 2008 Statut Membre Dernière intervention 30 juin 2009 - 20 juin 2008 à 20:44
Winterboard Messages postés 137 Date d'inscription jeudi 8 mai 2008 Statut Membre Dernière intervention 30 juin 2009 - 20 juin 2008 à 22:03
Bonjour,

voici un petit script que j'utilise pour remplacer <marquee> dans du xhtml:

<html><head><script type="text/javascript">
	// Défilement 4 directions multiple
	function Defilant(id, pos_init, pos_min, pos_max, delta, direction) {
	   this.id          = id;
	   this.element     = document.getElementById(id);
	   this.pos_init    = pos_init;
	   this.pos_min     = pos_min;
	   this.pos_max     = pos_max;
	   this.pos_current = pos_init;
	   this.delta       = delta;
	   this.direction   = direction;
	}
       
	Defilant.prototype.defile = function() {
	   if (!this.element) {
	      this.element = document.getElementById(this.id);
	   }
	   if (this.element) {
	      if(this.direction == 'vertical'){
	         if(this.pos_current < (this.pos_min - this.element.offsetHeight) ){
	            this.pos_current = this.pos_init;
	         } else if (this.pos_current > this.pos_max ) {
	            this.pos_current = this.pos_init - this.element.offsetHeight;
	         } else {
	            this.pos_current += this.delta;
	         }
	         this.element.style.top = this.pos_current+"px";
	      } else if(this.direction == 'horizontal') {
	         if(this.pos_current < (this.pos_min - this.element.offsetWidth) ){
	            this.pos_current = this.pos_init;
	         } else if (this.pos_current > this.pos_max ) {
	            this.pos_current = this.pos_init - this.element.offsetWidth;
	         } else {
	            this.pos_current += this.delta;
	         }
	         this.element.style.left = this.pos_current+"px";
	      }
	   }
	}
</script>
</head>

<body>
<div style='position: relative;overflow: hidden;width: 130px;height: 20px;'>
        <span	id='defileH1' 
		style='position: absolute;width: 90px;background-color:red;' 
		onMouseover="defileH_1.delta=0"
 		onMouseout='defileH_1.delta=deltaH1'
	>
		mon texte
	</span>
</div>

<script type="text/javascript">
	var deltaH1 = -1;
	var defileH_1 = new Defilant('defileH1', 130, 0, 130, deltaH1,'horizontal');
	setInterval("defileH_1.defile()",30);
</script>
</body></html>


Mais lors de l'utilisation il beuge extremement!
http://www.lou-castelet.fr/project2/fr/referencements.html

surtout sous FF


Merci de toute aide

1 réponse

Utilisateur anonyme
20 juin 2008 à 21:13
T'as essayé avec setTimeout ?
En montant l'intervalle de maj, genre à 100ms ?
Par ailleurs ta méthode consomme énormément de ressources sous FF3 ; je suis pas certains que les méthodes de défilement de textes soient très agréables et attirent beaucoup le chaland...
0
Winterboard Messages postés 137 Date d'inscription jeudi 8 mai 2008 Statut Membre Dernière intervention 30 juin 2009
20 juin 2008 à 21:34
merci. n'a tu pas autre chose a me proposer. Il me faut un defilement mais je veut etre compatible xhtml strict

merci quand meme
0
Utilisateur anonyme > Winterboard Messages postés 137 Date d'inscription jeudi 8 mai 2008 Statut Membre Dernière intervention 30 juin 2009
20 juin 2008 à 21:36
merci pour ton feedback...
0
Winterboard Messages postés 137 Date d'inscription jeudi 8 mai 2008 Statut Membre Dernière intervention 30 juin 2009 > Utilisateur anonyme
20 juin 2008 à 21:40
ah oui lol, j'ai oublié. enfait je n'y comprends rien en javascript. ca cest du copie-colle.

peut tu me montrer precisement ou inserer le code silteplet

merci beaucoup :)
0
Utilisateur anonyme > Winterboard Messages postés 137 Date d'inscription jeudi 8 mai 2008 Statut Membre Dernière intervention 30 juin 2009
20 juin 2008 à 21:45
Remplace setInterval("defileH_1.defile()",30);
par setTimeout("defileH_1.defile()",100);
Fais des tests progressifs et augmente la deuxième valeur jusqu'à 1000 pour voir si ça s'améliore.
0
Winterboard Messages postés 137 Date d'inscription jeudi 8 mai 2008 Statut Membre Dernière intervention 30 juin 2009 > Utilisateur anonyme
20 juin 2008 à 21:49
ca ne marche pas. dans aucun navigateur.

Il n'y a plus rien d'affiché :-s
0