Utilisateur:Dr Brains/TexteDeroulant.js
Apparence
Note : après avoir enregistré la page, vous devrez forcer le rechargement complet du cache de votre navigateur pour voir les changements.
Mozilla / Firefox / Konqueror / Safari : maintenez la touche Majuscule (Shift) en cliquant sur le bouton Actualiser (Reload) ou pressez Maj-Ctrl-R (Cmd-R sur Apple Mac) ;
Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5.var TexteDeroulant = new Object();
TexteDeroulant.Params = new Object();
TexteDeroulant.Fonctions = new Object();
TexteDeroulant.Params.Timer = new Array();
TexteDeroulant.Params.Step = 3;
TexteDeroulant.Params.Steps = new Array();
TexteDeroulant.Params.Separator = ' — ';
TexteDeroulant.Fonctions.Init = function(){
var TextesDeroulants = getElementsByClassName(document, "div", "TexteDeroulant");
for(var index=0,l=TextesDeroulants.length;index<l;index++){
var OuterDiv = TextesDeroulants[index];
var InnerSpan = OuterDiv.firstChild;
if(!InnerSpan) continue;
var Vitesse = OuterDiv.className.match(/TexteDeroulantSpeed[0-9]/, "g");
if(Vitesse !=null) Vitesse = parseInt(Vitesse[0].split("TexteDeroulantSpeed").join(""));
if((typeof(Vitesse)=="number") && (Vitesse>0)){
TexteDeroulant.Params.Steps[index] = Vitesse;
}else{
TexteDeroulant.Params.Steps[index] = TexteDeroulant.Params.Step;
}
OuterDiv.id = "TexteDeroulantO"+index;
InnerSpan.id = "TexteDeroulantI"+index;
var OuterDivLength = parseInt(OuterDiv.style.width.split("px").join(""));
var InnerSpanLength = parseInt(InnerSpan.offsetWidth);
var Separator = document.createElement('span');
Separator.className = "TexteDeroulantSeparator";
Separator.appendChild(document.createTextNode(TexteDeroulant.Params.Separator));
OuterDiv.appendChild(Separator);
Separator.id = "TexteDeroulantS"+index;
var SeparatorLength = parseInt(Separator.offsetWidth);
var TotalLength = (InnerSpan+SeparatorLength);
var ClonesNeeded = Math.round(((OuterDivLength)/TotalLength));
for(var b=0,k=ClonesNeeded;b<k;b++){
TexteDeroulant.Fonctions.AddAClone(index);
}
TexteDeroulant.Fonctions.RunThisOne(index, TotalLength);
}
}
TexteDeroulant.Fonctions.AddAClone = function(index){
var CloneInnerSpan = InnerSpan.cloneNode(true);
var CloneSeparator = Separator.cloneNode(true);
OuterDiv.appendChild(CloneInnerSpan);
OuterDiv.appendChild(CloneSeparator);
CloneInnerSpan.id = "TexteDeroulantI"+index+"_clone";
CloneSeparator.id = "TexteDeroulantS"+index+"_clone";
}
TexteDeroulant.Fonctions.RunThisOne = function(index, TotalLength){
if(TexteDeroulant.Params.Timer[index]) clearTimeout(TexteDeroulant.Params.Timer[index]);
var OuterDiv = document.getElementById("TexteDeroulantO"+index);
if(!OuterDiv) return;
var FirstSpan = OuterDiv.firstChild;
var SpanPosition = parseInt(FirstSpan.style.left.split("px").join(""));
if(typeof(SpanPosition)!="number") return;
var NextStep = (0-(SpanPosition - TexteDeroulant.Params.Steps[index]));
if(NextStep >= TotalLength){
NextStep = (NextStep - TotalLength);
}
FirstSpan.style.left = "-"+NextStep+"px";
TexteDeroulant.Params.Timer[index] = setTimeout("TexteDeroulant.Fonctions.RunThisOne("+index+","+TotalLength+");", 50);
}
$(TexteDeroulant.Fonctions.Init);