Problème avec FF / DOCTYPE

Résolu
cs_nico03 Messages postés 6 Date d'inscription dimanche 5 octobre 2008 Statut Membre Dernière intervention 9 octobre 2008 - 5 oct. 2008 à 23:18
cs_nico03 Messages postés 6 Date d'inscription dimanche 5 octobre 2008 Statut Membre Dernière intervention 9 octobre 2008 - 7 oct. 2008 à 16:23
Bonjour,

J'ai créé une page web (DOCTYPE XHTML 1.0 strict) avec un bloc qui afficher un texte défilant. Ce texte reprend les titres des news de la partie News.
Le texte s'affiche bien avec IE, mais pas avec Firefox.
Lorsque je supprime le DOCTYPE ou que j'insère un DOCTYPE Transitional, je n'ai plus le problème avec FF.
Je pense qu'il y a une erreur dans le code mais je ne vois pas.

Voici le code de la page d'accueil :

<script type= "text/javascript">

var singletext=new Array();

<?php
for($i=0;$i<count($news);$i++)
{
?>

singletext[<?php echo $i?>]="<nobr align="center" class=tan><?php echo $news[($i+1)]?> : <?php echo $corps[($i+1)]?>...</nobr>";

<?php
}
?>

</script>

<script type="text/javascript">
document.write('<td width='+swidth+'>');
if(document.layers)
{document.write(' <layer id="ns4div1" width='+swidth+' height='+sheight+' onmouseover="sspeed=0;" onmouseout="sspeed=restart"></layer> ')}

if(document.getElementById||document.all)
{document.write('

');}
</script>


Et le code de la page news.js :

var swidth ="650px";

var sheight="25px";

var sspeed=4;
var restart=sspeed;
var rspeed=sspeed;

var spause=2000;

var sbcolor="none";


var ii="0";

function goup()
{
if(sspeed!=rspeed*8)
{sspeed=sspeed*2;
restart=sspeed;}
}

function godown()
{
if(sspeed>rspeed)
{sspeed=sspeed/2;
restart=sspeed;}
}

function start()
{
if(document.getElementById)
{ns6div=document.getElementById('iens6div');
ns6div.style.left=swidth;
ns6div.innerHTML=singletext[0];
sizeup=ns6div.offsetWidth;
ns6scroll();}

else if(document.layers)
{ns4layer=document.ns4div.document.ns4div1;
ns4layer.left=swidth;
ns4layer.document.write(singletext[0]);
ns4layer.document.close();
sizeup=ns4layer.document.width;
ns4scroll();}

else if(document.all)
{iediv=iens6div;
iediv.style.pixelLeft=swidth;
iediv.innerHTML=singletext[0];
sizeup=iediv.offsetWidth;
iescroll();}
}

function iescroll()
{
if(iediv.style.pixelLeft>0&&iediv.style.pixelLeft<=sspeed)
{iediv.style.pixelLeft=0;
setTimeout("iescroll()",spause);}

else if(iediv.style.pixelLeft>=sizeup*-1)
{iediv.style.pixelLeft-=sspeed;
setTimeout("iescroll()",100);}

else
{if(ii==singletext.length-1)ii=0;
else ii++;
iediv.style.pixelLeft=swidth;
iediv.innerHTML=singletext[ii];
sizeup=iediv.offsetWidth;
iescroll();}
}

function ns4scroll()
{
if(ns4layer.left>0&&ns4layer.left<=sspeed)
{ns4layer.left=0;
setTimeout("ns4scroll()",spause);}

else if(ns4layer.left>=sizeup*-1)
{ns4layer.left-=sspeed;
setTimeout("ns4scroll()",100);}

else
{if(ii==singletext.length-1)ii=0;
else ii++;
ns4layer.left=swidth;
ns4layer.document.write(singletext[ii]);
ns4layer.document.close();
sizeup=ns4layer.document.width;
ns4scroll();}
}

function ns6scroll()
{
if(parseInt(ns6div.style.left)>0&&parseInt(ns6div.style.left)<=sspeed)
{ns6div.style.left=0;
setTimeout("ns6scroll()",spause);}

else if(parseInt(ns6div.style.left)>=sizeup*-1)
{ns6div.style.left=parseInt(ns6div.style.left)-sspeed;
setTimeout("ns6scroll()",100);}

else
{if(ii==singletext.length-1)ii=0;
else ii++;
ns6div.style.left=swidth;
ns6div.innerHTML=singletext[ii];
sizeup=ns6div.offsetWidth;
ns6scroll();}
}

Quelqu'un saurait-il me dire ce qui cloche ?
Merci d'avance !

6 réponses

PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
7 oct. 2008 à 13:20
Bonjour,
Les deux seules fonctions utiles à ton
déplacement sont

//-------------
function
start(){
  if (document.getElementById) { // MARCHE
pour tous les nouveaux navigateurs
    ns6div =
document.getElementById('iens6div');
    ns6div.style.left = swidth;

    ns6div.innerHTML = singletext[0];
    sizeup = ns6div.offsetWidth;

    ns6scroll();
  }
}
//-------------------
function ns6scroll(){

  if (parseInt(ns6div.style.left) > 0 &&
parseInt(ns6div.style.left) < = sspeed){
    ns6div.style.left = 0;

    setTimeout("ns6scroll()", spause);
  }
  else if
(parseInt(ns6div.style.left) >= sizeup * -1) {
    ns6div.style.left =
parseInt(ns6div.style.left) - sspeed +"px"; // c'est ici qu'il manque px
    setTimeout("ns6scroll()", 100);
  }
  else {

    if (ii == singletext.length - 1)
      ii = 0;
    else

      ii++;
    ns6div.style.left = swidth;
    ns6div.innerHTML =
singletext[ii];
    sizeup = ns6div.offsetWidth;
    ns6scroll();

  }
}

kazma a donc
raison même si il croit qu'il a tord...
;O)
3
cs_nico03 Messages postés 6 Date d'inscription dimanche 5 octobre 2008 Statut Membre Dernière intervention 9 octobre 2008
5 oct. 2008 à 23:22
Oups, désolé pour le doublon.

Pas trouvé l'option "supprimer"..
0
@karamel Messages postés 1855 Date d'inscription vendredi 9 mai 2008 Statut Modérateur Dernière intervention 18 avril 2024 153
6 oct. 2008 à 17:57
bonjour
pas tous lu mais deja tu doit ajouter px

if(document.getElementById||document.all)

{document.write('
px;height:'+sheight+'px;clip:rect(0
'+swidth+' '+sheight+' 0);background-color:'+sbcolor+';"
onmouseover="sspeed=0;" onmouseout="sspeed=restart">
px;">

');}

</script>
0
@karamel Messages postés 1855 Date d'inscription vendredi 9 mai 2008 Statut Modérateur Dernière intervention 18 avril 2024 153
6 oct. 2008 à 18:01
finalement j'aurait du tous lire car apparement px est bien ajoute faut voir ailleur
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_nico03 Messages postés 6 Date d'inscription dimanche 5 octobre 2008 Statut Membre Dernière intervention 9 octobre 2008
7 oct. 2008 à 09:18
Après différent tests, il s'avère que mon test s'affiche bien avec Firefox, mais il reste "coincé" tout à droite de mon bloc sans défiler.
C'est donc la fonction javascript que Firefox ne veut pas lancer.
Lorsque je teste ma page avec Web developper, j'ai un message d'erreur 'Erreur d'analyse de la valeur pour la propriété Left". Je pense en effet qu'il y a bien un probleme de "px" quelque part mais je ne vois pas.

Les deux parties du code "impliquées" sont a prioiri celles-ci :

function start()
{
    if(document.getElementById)
    {ns6div=document.getElementById('iens6div');
    ns6div.style.left=swidth;
    ns6div.innerHTML=singletext[0];
    sizeup=ns6div.offsetWidth;
    ns6scroll();}

    else if(document.layers)
    {ns4layer=document.ns4div.document.ns4div1;
    ns4layer.left=swidth;
    ns4layer.document.write(singletext[0]);
    ns4layer.document.close();
    sizeup=ns4layer.document.width;
    ns4scroll();}

    else if(document.all)
    {iediv=iens6div;
    iediv.style.pixelLeft=swidth;
    iediv.innerHTML=singletext[0];
    sizeup=iediv.offsetWidth;
    iescroll();}
}

et celle-ci :

function ns6scroll()
{
    if(parseInt(ns6div.style.left)>0&&parseInt(ns6div.style.left)<=sspeed)
    {ns6div.style.left=0;
    setTimeout("ns6scroll()",spause);}
   
    else if(parseInt(ns6div.style.left)>=sizeup*-1)
    {ns6div.style.left=parseInt(ns6div.style.left)-sspeed;
    setTimeout("ns6scroll()",100);}

    else
    {if(ii==singletext.length-1)ii=0;
    else ii++;
    ns6div.style.left=swidth;
    ns6div.innerHTML=singletext[ii];
    sizeup=ns6div.offsetWidth;
    ns6scroll();}
}

Merci....

Nico
0
cs_nico03 Messages postés 6 Date d'inscription dimanche 5 octobre 2008 Statut Membre Dernière intervention 9 octobre 2008
7 oct. 2008 à 16:23
Merci Petole Team, celui-ci m'avait échappé.
C'est nickel !!

Nico
0
Rejoignez-nous