1

我有一个在 IE 和 Chrome 中工作的 javascript 中创建的水平滚动,但是在 Firefox 2 和 3 中我得到一个闪烁。正在移动的 div 包含一个 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>

谢谢你的支持!

4

1 回答 1

1

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

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

也有可能只是显示在 FF 中由于不明原因而被冻结。

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

于 2009-02-24T18:03:25.067 回答