setTimeout()用iframe移动div只会导致firefox中的闪烁

时间:2009-01-18 16:49:38

标签: javascript firefox settimeout flicker

我在javascript中创建了一个在IE中工作的水平滚动 和Chrome,然而我在Firefox 2和3中得到一个闪烁 正在移动包含一个带有图像和文本的iframe绝对 定位div。 (见下面的代码。)

问题:

1)内容出现在div的左侧或右侧 动画div似乎在style.left在相邻div下“移动”的一侧闪烁。这仅在Firefox中发生。

2)似乎使用鼠标悬停处理程序大约10 秒(仅限Firefox)动画暂停约一秒,然后 然后重新开始。这在IE或Chrome中都不会发生。

javascript是:

<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>

HTML是:

<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>

感谢您的支持!

1 个答案:

答案 0 :(得分:1)

对我来说,IE(和Chrome)实现了 REAL 抢占。我的意思是IE完全停止正在做的事情(其他Javascript执行或内部代码来呈现页面或获取它或......)以立即提供javascript函数。

相反,Firefox在服务定时器“中断”之前完成了他正在做的事情。结果,发生抖动。但函数调用不会丢失,仍然可靠。

在FF中,由于不明原因,只有显示被冻结。

埃里克 http://codevault.agilityhoster.com