TEXTE DÉFILANT, DEUX EFFETS, COMPATIBLE FIREFOX & IE

macgile Messages postés 11 Date d'inscription samedi 11 janvier 2003 Statut Membre Dernière intervention 2 décembre 2008 - 20 févr. 2007 à 19:12
lewhechris Messages postés 1 Date d'inscription lundi 4 avril 2011 Statut Membre Dernière intervention 23 juin 2011 - 23 juin 2011 à 18:47
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/41372-texte-defilant-deux-effets-compatible-firefox-ie

lewhechris Messages postés 1 Date d'inscription lundi 4 avril 2011 Statut Membre Dernière intervention 23 juin 2011
23 juin 2011 à 18:47
le code marche super bien,c sympa.mais ya t'il un moyen de le faie défiler sur toute la largeur de la page en allant de gauche à droite.j'ai beau tout essayer mais il marche pas!!
cs_kesakoo Messages postés 2 Date d'inscription lundi 11 juillet 2005 Statut Membre Dernière intervention 2 janvier 2010
2 janv. 2010 à 00:30
Bonjour Nocturne,
j'ai parcouru le code rapidement, en faissant des recherches pour savoir comment mon code avec setInterval soit conpatible avec les naviguateurs. Et, un point sur ton code ma surpris. Je precise que je m'y connais pas assez bien en JS. Toute fois, les lignes 42 et 43 m'ont interpellées...
41 # [...]
42 # }
43 # {window.setTimeout("msg_defilant()",100);}
44 # [...]
Je ne doutes pas que le script fonctionne.

Il y a deux crochés qui se suivent }{ .

Peut-me donner des explications, sur cette façon de coder en javascript ?
D'habitude je m'atendrais a quelque chose entre un croché fermant ('}') et un autre ouvrant ('{').

Merci de me repondre...
Tom
cs_eve13 Messages postés 1 Date d'inscription lundi 12 septembre 2005 Statut Membre Dernière intervention 24 novembre 2008
24 nov. 2008 à 15:35
Bonjour,
Le code marche parfaitement en local, mais dès que je passe le tout en ligne cela ne marche plus, pourtant je transfert bien tous les fichiers...
Quelqu'un aurait-il une explication ?
Merci d'avance
cs_Nocturne Messages postés 115 Date d'inscription mardi 26 février 2002 Statut Membre Dernière intervention 15 novembre 2007
15 nov. 2007 à 22:08
Bonne remarque d'Anthed concernant la modification du if par un modulo: Modif effectué
//if (pos_char >= notre_msg.length) {pos_char=0}
mem_msg=mem_msg + notre_msg.substring(pos_char,pos_char+1);
//pos_char++;
pos_char = (pos_char + 1) % notre_msg.length;

Parcontre je reste sur l'utilisation de setTimeout car la fonction setInterval n'est pas reconnu par tous les navigateurs.

Merci pour tes idées.
Anthed Messages postés 152 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 17 janvier 2014 3
15 nov. 2007 à 11:49
Quelques idées qui ne changent pas grand chose mais qui sont toujours bonnes à prendre :

1. Tu peux remplacer :
if (pos_char >= notre_msg.length) {pos_char=0}
pos_char++;

par:
pos_char = (pos_char + 1) % notre_msg.length;

-> modulo, c'est plus sympa que if ...

2. Une fonction qui s'auto-appelle avec setTimeout peut être remplacé par un setInterval. En plus, ça permet aux différents appels d'être plus réguliers dans le cas où la fonction est un peu lourde. Si, par exemple, son temps d'exécution se situe entre 15 et 50 ms et que ton intervalle est de 100ms, les appels se feront entre 115 et 150ms alors qu'avec setInterval, ce sera bien toujours 100ms (attention toutefois de ne pas mettre un temps trop petit, si la fonction peut prendre plus de temps que l'intervalle, bonjour l'affichage ...)

Enfin, pour répondre à JackNumber, il suffit d'introduire une variable globale en guise de compteur, de l'incrémenter à chaque passage dans la fonction et d'interrompre les appels à la fonction dès que le compteur atteint une certaine valeur (n * la longueur du texte pour le faire défiler n fois).

Tchô.
cs_JackNUMBER Messages postés 233 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 26 juin 2011 5
19 août 2007 à 18:29
veiga > peut-être que tu n'as simplement pas enlever les # en débuts de lignes...

et au fait, est-il possible d'arrèter le défilement; je veux dire que le texte ne s'affiche qu'une fois.

merci, super script :P
cs_nico1610 Messages postés 395 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 19 juin 2009 1
12 juil. 2007 à 18:50
Merci à toi ;)
@+
cs_Nocturne Messages postés 115 Date d'inscription mardi 26 février 2002 Statut Membre Dernière intervention 15 novembre 2007
12 juil. 2007 à 18:39
Merci pour tes observations, c'est maintenant corrigé.
a+
cs_nico1610 Messages postés 395 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 19 juin 2009 1
12 juil. 2007 à 18:06
il y a de grave erreur W3C qui n'endomage pas le code si on les corriges :
>> la balise <script> avec l'attribut language est un attribut miscrosoft inventé par microsoft pour IE
Il FAUT l'éviter et utiliser l'attribut suivant : <script type="text/javascript"> (...) </script>

>> la balise et une balise qui ne contiens pas l'attribut name réservé au formulaire !

Enfin pour finir le javascript est bien fait, dommage que tu ne sois pas plus attentif a l'HTML et heureusement pour toi que les navigateurs internet sont conciliant sinon ton javascript ne pourrai pas marcher !

Mais bon vu qu'on est sur Javascriptfr.com et non htmlfr.com :
Note : 9/10

Bonne chance pour la suite
cs_Nocturne Messages postés 115 Date d'inscription mardi 26 février 2002 Statut Membre Dernière intervention 15 novembre 2007
15 mai 2007 à 18:34
salut veiga,
Je viens d essayer ta page, elle fonctionne chez moi avec IE6 et Firefox 2.
Je ne sais pas quoi te dire, regarde dans les options de Firefox au cas ou.
Bonne chance
a+
cs_veiga Messages postés 5 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 15 mai 2007
15 mai 2007 à 13:17
Bonjour,
Je n'arrive pas à le faire fonctionner sous Firefox,je n'ai pas essayé avec I.E,je ne connais le javascript.je joins:
# <html>
# <head><title>Message défilant</title>
# <style type="text/css">
# .span_text_deroulant{FONT-FAMILY:Lucida Console, Lucida Sans Typewriter, Lithograph, Letter Gothic MT, Verdana;FONT-WEIGHT:bold;FONT-SIZE:10pt;width:478px;COLOR:#FFFF99;letter-spacing: 0em; word-spacing: 0em;vertical-align:bottom;cursor:default;}
# </style>
# <SCRIPT LANGUAGE="JavaScript">
# // Message défilant en javascript
# // Nocture @ 2007
# // Affiche un message défilant dans une page HTML
# // Script compatible IE (version 6 & +) et Firefox (version 1.5 & 2)
#
# // Le message a faire défiler
# var notre_msg="INFORMATIONS IMPORTANTES";
#
# // Deux effets possibles avec mem_msg
# // Effet 1 = sans effet, défilement normal,
# // il faut mettre un maximum d'espaces pour enlever l'effet du glissement
# // var mem_msg=' '; // 90 espaces
# // Effet 2 = au démarrage, glissement du texte puis défilement
# var mem_msg=' '; // seulement 1 espace
# var pos_char=0; // variable de mémorisation de position caractère
#
# function msg_defilant() {
# var vitesse_msg 80; // règle la rapidité, diminue plus rapide, augmente = plus lent
# // vérif. si position caractère supérieur a la longueur de la chaine
# if (pos_char >= notre_msg.length) {pos_char=0}
# mem_msg=mem_msg + notre_msg.substring(pos_char,pos_char+1);
# pos_char++;
# // on limite la largueur en terme de carateres
# var msg_tmpo=mem_msg; // variable temporaire
# mem_msg="";
# mem_msg=msg_tmpo.substring(msg_tmpo.length-28,msg_tmpo.length); // 48 caractères
# msg_tmpo="";
# msg_tmpo = mem_msg.replace(/ /g, " "); // remplace les espaces par : " "
# // Ajout d'un décalage d'un espace a gauche entre le texte et l'image
# msg_tmpo=" " + msg_tmpo;
# // Insertion du texte
# var b_txt_deroulant=document.getElementById("modif_txt_deroulant");
# b_txt_deroulant.innerHTML=msg_tmpo;
# window.setTimeout("msg_defilant()",vitesse_msg); // Re-lance la fonction
# }
# {window.setTimeout("msg_defilant()",100);} // Activation du message défilant
# </SCRIPT>
# </head>
#
# # ----

# #


#,
#
#

#
# </html>

J'ai modifié uniquement le messsage et le nombre de caractères,merci d'avance pour la réponse et @+
jcdhl Messages postés 6 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 9 août 2007
27 mars 2007 à 18:12
Est-il possible de faire la même chose mais pour un défilement vertical ?
dingue2salsa Messages postés 2 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 21 mars 2007
21 mars 2007 à 09:05
super sympa pour ta réponse , j'ai réglé le problème
bon dev
cs_Nocturne Messages postés 115 Date d'inscription mardi 26 février 2002 Statut Membre Dernière intervention 15 novembre 2007
20 mars 2007 à 18:25
Normalement, il fonctionne sous IE, testé avec IE6.
Si il défile sur 2 ou 3 lignes, c'est un problème de largeur, pour le vérifier, il faut diminuer le texte a faire defiler et modifier le limite en terme de carateres :
mem_msg=msg_tmpo.substring(msg_tmpo.length-48,msg_tmpo.length); // 48 caractères

Autrement il faut agrandir la largeur de la cellule du tableau.

Il faut egalement verifier la police car ce texte defilant ne fonctionne qu'avec certaines polices (caracteres de meme largeur).
FONT-FAMILY:Lucida Console, Lucida Sans Typewriter, Lithograph, Letter Gothic MT, Verdana

Voila qq pistes.
dingue2salsa Messages postés 2 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 21 mars 2007
20 mars 2007 à 11:27
Ne fonctionne pas bien sous IE , défile sur 2 ou 3 lignes qq'ub sait pourquoi ? merci
macgile Messages postés 11 Date d'inscription samedi 11 janvier 2003 Statut Membre Dernière intervention 2 décembre 2008
20 févr. 2007 à 19:15
j'ajouterais, qu'un bon developpeur est celui qui
fait en quelques lignes ce que d'autres font en mille lignes pour (peut-être) faire la demonstration de leur talent.

Ce commentaire n'inplique que moi.

macgile
macgile Messages postés 11 Date d'inscription samedi 11 janvier 2003 Statut Membre Dernière intervention 2 décembre 2008
20 févr. 2007 à 19:12
Super :) Enfin un code simple et parfaitement fonctionnel pour des banniéres défilantes.

Car sur le net certain applique le proverbe
"Pourquoi faire simple, quant-ont peux faire compliqué"

bonne continuation,
macgile
Rejoignez-nous