Bonjour,

j'ai récupéré un script javascript (défilement de news avec pauses) et j'ai un soucis d'affichage de ce dernier; pour l'afficher correctement je suis obligé d'enlever le DOCTYPE de la page en question...
Voici le script
<script language="JavaScript" type="text/javascript">
ejs_scroll_largeur = 200;
ejs_scroll_hauteur = 180;
ejs_scroll_bgcolor = '';

ejs_scroll_background = "";
/* temps en secondes */
ejs_scroll_pause_seconde = 4;
ejs_scroll_message = new Array;




ejs_scroll_message[0]='<b><i>30 janvier 2010</i></b></i><br><br> Sonde thermo/hygro réparée et remise en ligne de la station à 15h30; retour à la normale. Désolé pour la gêne occasionnée';
ejs_scroll_message[1]='<b><i>17 janvier 2010</i></b><br><br> Problème avec la sonde thermo/hygro ==> Pas de données vent et par la suite plus de données dutout pendant une dizaine de jours environ';
ejs_scroll_message[2]='<b><i>28 novembre 2009</i></b><br><br> Mise en ligne de la station';

function d(texte)
{
	document.write(texte);
}
d('<DIV ID=ejs_scroll_relativ STYLE="position:relative;width:'+ejs_scroll_largeur+';height:'+ejs_scroll_hauteur+';background-color:'+ejs_scroll_bgcolor+';background-image:url('+ejs_scroll_background+')">');
d('<DIV ID=ejs_scroll_cadre STYLE="position:absolute;width:'+(ejs_scroll_largeur-8)+';height:'+(ejs_scroll_hauteur-8)+';top:4;left:4;clip:rect(0 '+(ejs_scroll_largeur-8)+' '+(ejs_scroll_hauteur-8)+' 0)">');
d('<div id=ejs_scroller_1 style="position:absolute;width:'+(ejs_scroll_largeur-8)+';left:0;top:0;" CLASS=ejs_scroll>'+ejs_scroll_message[0]+'</DIV>');
d('<div id=ejs_scroller_2 style="position:absolute;width:'+(ejs_scroll_largeur-8)+';left:0;top:'+ejs_scroll_hauteur+';" CLASS=ejs_scroll>'+ejs_scroll_message[1]+'</DIV>');
d('</DIV></DIV>');

ejs_scroll_mode =1;
ejs_scroll_actuel = 0;

function ejs_scroll_start()
	{
	if(ejs_scroll_mode == 1)
		{
		ejs_scroller_haut = "ejs_scroller_1";
		ejs_scroller_bas = "ejs_scroller_2";
		ejs_scroll_mode = 0;
		}
	else
		{
		ejs_scroller_bas = "ejs_scroller_1";
		ejs_scroller_haut = "ejs_scroller_2";
		ejs_scroll_mode = 1;
		}
	ejs_scroll_nb_message = ejs_scroll_message.length-1;
	if(ejs_scroll_actuel == ejs_scroll_nb_message)
		ejs_scroll_suivant = 0;
	else
		ejs_scroll_suivant = ejs_scroll_actuel+1;
	if(document.getElementById)
		document.getElementById(ejs_scroller_bas).innerHTML = ejs_scroll_message[ejs_scroll_suivant];
	ejs_scroll_top = 0;
	if(document.getElementById)
		setTimeout("ejs_scroll_action()",ejs_scroll_pause_seconde*1000)
	}

function ejs_scroll_action()
	{
	ejs_scroll_top -= 1;
	document.getElementById(ejs_scroller_haut).style.top = ejs_scroll_top;
	document.getElementById(ejs_scroller_bas).style.top = ejs_scroll_top+ejs_scroll_hauteur;
	if((ejs_scroll_top+ejs_scroll_hauteur) > 0)
		setTimeout("ejs_scroll_action()",10)
	else
		ejs_scroll_stop()
	}

function ejs_scroll_stop()
	{
	ejs_scroll_actuel = ejs_scroll_suivant;
	ejs_scroll_start()
	}

window.onload = ejs_scroll_start;
</script>


Et lorsque j'enlève le DOCTYPE donc, ça fontionne bien sous firefox alors que sous ie6 l'affichage foire totalement... Et je pense de plus qu'il vaut mieux laisser le DOCTYPE.
Je suppose qu'il y'a une erreur dans le script mais ou?

Voici l'affichage sous firefox lorsque j'enlève le doctype (affichage correct, les news défilent bien, bref le script fonctionne bien):

http://img130.imageshack.us/img130/2118/news3k.jpg

Par contre sous ie gros soucis d'affichage en enlevant le doctype.

Et voici l'affichage lorsque je laisse le doctype:

http://img651.imageshack.us/img651/6539/newsj.jpg

le doctype que j'utilise est celui-ci:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
J'ai également essayé avec d'autres doctype.
J'ai aussi essayé de rajouter "px" au niveau de ces lignes et comme ceci:


document.getElementById(ejs_scroller_haut).style.top = ejs_scroll_top + "px";
document.getElementById(ejs_scroller_bas).style.top = ejs_scroll_top+ejs_scroll_hauteur + "px";


mais ça ne change rien!

Pour l'instant je teste sur une page html vierge.

Ou se trouve l'erreur selon vous?

Merci d'avance pour votre coup de main Smiley smile
Modifié par Cedwic (10 Feb 2010 - 17:14)
Bonjour,

Peu de chances que le problème vienne du JavaScript. Regarde plutôt du côté du code HTML qu'il produit.
En mode strict, l'attribut language n'est pas autorisé. Seul l'attribut type est permis (et il est obligatoire pour l'élément script).

En outre, ton code JavaScript interne comporte des caractères sensibles, comme les chevrons (< et >), ce qui invalide le code. À défaut de ranger ton code dans un fichier JavaScript externe, commente-le comme suit :
<script type="text/javascript">
<!--
ejs_scroll_largeur = 200; 
ejs_scroll_hauteur = 180; 
ejs_scroll_bgcolor = ''; 
 
ejs_scroll_background = ""; 
/* temps en secondes */ 
ejs_scroll_pause_seconde = 4; 
ejs_scroll_message = new Array; 
 
 
 
 
ejs_scroll_message[0]='<b><i>30 janvier 2010</i></b></i><br><br> Sonde thermo/hygro réparée et remise en ligne de la station à 15h30; retour à la normale. Désolé pour la gêne occasionnée'; 
ejs_scroll_message[1]='<b><i>17 janvier 2010</i></b><br><br> Problème avec la sonde thermo/hygro ==> Pas de données vent et par la suite plus de données dutout pendant une dizaine de jours environ'; 
ejs_scroll_message[2]='<b><i>28 novembre 2009</i></b><br><br> Mise en ligne de la station'; 
 
function d(texte) 
{ 
    document.write(texte); 
} 
d('<DIV ID=ejs_scroll_relativ STYLE="position:relative;width:'+ejs_scroll_largeur+';height:'+ejs_scroll_hauteur+';background-color:'+ejs_scroll_bgcolor+';background-image:url('+ejs_scroll_background+')">'); 
d('<DIV ID=ejs_scroll_cadre STYLE="position:absolute;width:'+(ejs_scroll_largeur-8)+';height:'+(ejs_scroll_hauteur-8)+';top:4;left:4;clip:rect(0 '+(ejs_scroll_largeur-8)+' '+(ejs_scroll_hauteur-8)+' 0)">'); 
d('<div id=ejs_scroller_1 style="position:absolute;width:'+(ejs_scroll_largeur-8)+';left:0;top:0;" CLASS=ejs_scroll>'+ejs_scroll_message[0]+'</DIV>'); 
d('<div id=ejs_scroller_2 style="position:absolute;width:'+(ejs_scroll_largeur-8)+';left:0;top:'+ejs_scroll_hauteur+';" CLASS=ejs_scroll>'+ejs_scroll_message[1]+'</DIV>'); 
d('</DIV></DIV>'); 
 
ejs_scroll_mode =1; 
ejs_scroll_actuel = 0; 
 
function ejs_scroll_start() 
    { 
    if(ejs_scroll_mode == 1) 
        { 
        ejs_scroller_haut = "ejs_scroller_1"; 
        ejs_scroller_bas = "ejs_scroller_2"; 
        ejs_scroll_mode = 0; 
        } 
    else 
        { 
        ejs_scroller_bas = "ejs_scroller_1"; 
        ejs_scroller_haut = "ejs_scroller_2"; 
        ejs_scroll_mode = 1; 
        } 
    ejs_scroll_nb_message = ejs_scroll_message.length-1; 
    if(ejs_scroll_actuel == ejs_scroll_nb_message) 
        ejs_scroll_suivant = 0; 
    else 
        ejs_scroll_suivant = ejs_scroll_actuel+1; 
    if(document.getElementById) 
        document.getElementById(ejs_scroller_bas).innerHTML = ejs_scroll_message[ejs_scroll_suivant]; 
    ejs_scroll_top = 0; 
    if(document.getElementById) 
        setTimeout("ejs_scroll_action()",ejs_scroll_pause_seconde*1000) 
    } 
 
function ejs_scroll_action() 
    { 
    ejs_scroll_top -= 1; 
    document.getElementById(ejs_scroller_haut).style.top = ejs_scroll_top; 
    document.getElementById(ejs_scroller_bas).style.top = ejs_scroll_top+ejs_scroll_hauteur; 
    if((ejs_scroll_top+ejs_scroll_hauteur) > 0) 
        setTimeout("ejs_scroll_action()",10) 
    else 
        ejs_scroll_stop() 
    } 
 
function ejs_scroll_stop() 
    { 
    ejs_scroll_actuel = ejs_scroll_suivant; 
    ejs_scroll_start() 
    } 
 
window.onload = ejs_scroll_start;
//--> 
</script>