2009-01-18 14 views
1

J'ai un scroll horizontal créé en javascript qui fonctionne dans IE et Chrome, mais je reçois un scintillement dans Firefox 2 et 3. Le div qui se déplace contient un iframe avec des images et du texte avec absolument divs positionnés. (Voir le code ci-dessous.)setTimeout() déplacement div avec iframe provoquant flicker dans firefox seulement

Problèmes:

1) Le contenu apparaissant soit dans la div à gauche ou à droite de la div animant semble vaciller sur le côté où l'style.left se déplace " sous "les divs adjacents. Cela se produit dans Firefox seulement.

2) Il semble que lorsque vous utilisez le gestionnaire de survol de la souris pendant environ 10 secondes (dans Firefox seulement), l'animation s'arrête pendant environ une seconde, et recommence alors. Cela ne se produit ni dans IE ni dans Chrome.

Le javascript est:

<script type="text/javascript"> 
//outtake 
function scrollframeleft() { 
    var divmenuleft = getLeft("divMenu"); 
    var framewidth = parent.frames["framecontent"].scrollwidth; 
    var scrollportal = 740; 
    var scrollCatch = 13; 

    if (!noScroll && divmenuleft <=scrollCatch) { 
     divMenuObjStyle.left=(divmenuleft+scrollDistVar)+'px' 
     t = setTimeout("scrollframeleft();",scrollSpeedVar) 
    } 
} 
</script> 

Le code HTML est:

<div id="divBg" style="position:absolute; z-index:10; top:415px; left:13px; width:740px; height:100px; clip:rect(0px 740px 102px 13px); visibility:visible;"> 
    <div id="divMenu" style="position:absolute; z-index:10; top:0px; left:13px; color:#FFFFFF; visibility:visible;"> 
     <iframe name="framecontent" id="framecontent" frameborder="0" 
     height="100" width="5000" scrolling="no" src="/content.php"> 
     </iframe> 
    </div>` 
</div> 
<div id="divArrowLeft" style="position:absolute; z-index:204; left: 136px; top:398px;"> 
    <a href="#" onmouseover="noScroll=false;scrollframeleft()" 
    onmouseout="noMove()" onclick="void blur()"><img 
    src="/images/leftarrow_sm.gif" width="14" height="14" alt="more news scroll left" border="0"></a> 
</div> 

Merci pour votre soutien!

+0

Pourriez-vous formater le code s'il vous plaît code pour une meilleure lisibilité. Encore une fois, ce serait bien si vous le formater pour être plus lisible. –

Répondre

1

Pour moi IE (et Chrome) implémente une préemption REAL. Je veux dire que IE s'arrête littéralement ce qu'il fait (autre exécution Javascript ou code interne pour rendre une page ou la récupérer ou ...) pour servir immédiatement la fonction javascript. Firefox, au contraire, termine ce qu'il fait avant de servir la minuterie "interruption". En conséquence, la gigue se produit. Mais les appels de fonction ne manquent pas, est toujours fiable.

Il est également possible que seul l'affichage soit gelé pour une raison imprécise dans FF.

Eric http://codevault.agilityhoster.com