Problème avec FF / DOCTYPE

[Résolu]
Signaler
Messages postés
6
Date d'inscription
dimanche 5 octobre 2008
Statut
Membre
Dernière intervention
9 octobre 2008
-
Messages postés
6
Date d'inscription
dimanche 5 octobre 2008
Statut
Membre
Dernière intervention
9 octobre 2008
-
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

Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
18
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)
Messages postés
6
Date d'inscription
dimanche 5 octobre 2008
Statut
Membre
Dernière intervention
9 octobre 2008

Oups, désolé pour le doublon.

Pas trouvé l'option "supprimer"..
Messages postés
1796
Date d'inscription
vendredi 9 mai 2008
Statut
Modérateur
Dernière intervention
17 septembre 2021
134
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>
Messages postés
1796
Date d'inscription
vendredi 9 mai 2008
Statut
Modérateur
Dernière intervention
17 septembre 2021
134
finalement j'aurait du tous lire car apparement px est bien ajoute faut voir ailleur
Messages postés
6
Date d'inscription
dimanche 5 octobre 2008
Statut
Membre
Dernière intervention
9 octobre 2008

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
Messages postés
6
Date d'inscription
dimanche 5 octobre 2008
Statut
Membre
Dernière intervention
9 octobre 2008

Merci Petole Team, celui-ci m'avait échappé.
C'est nickel !!

Nico