setTimeout() перемещает div с iframe, вызывая мерцание только в firefox

У меня есть горизонтальная прокрутка, созданная в javascript, которая работает в IE и Chrome, однако я получаю мерцание в Firefox 2 и 3. Двигающийся div содержит iframe с изображениями и текстом с абсолютно позиционированными div. (см. код ниже.)

Проблемы:

1) Содержимое, появляющееся либо в div слева, либо справа от анимируемого div, кажется, мерцает на той стороне, где style.left перемещается «под» соседними div. Это происходит только в Firefox.

2) Кажется, что при использовании обработчика наведения мыши в течение примерно 10 секунд (только в Firefox) анимация приостанавливается примерно на секунду, а затем начинается снова. Этого не происходит ни в IE, ни в Chrome.

Яваскрипт это:

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

Спасибо за вашу поддержку!


person Community    schedule 18.01.2009    source источник
comment
Не могли бы вы отформатировать код как код для лучшей читабельности. Опять же, было бы неплохо, если бы вы отформатировали его, чтобы он был более разборчивым.   -  person Georg Schölly    schedule 18.01.2009


Ответы (1)


Для меня IE (и Chrome) реализует НАСТОЯЩЕЕ вытеснение. Я имею в виду, что IE буквально останавливает то, что он делает (другое выполнение Javascript или внутренний код для отображения страницы или ее извлечения или...), чтобы немедленно выполнить функцию javascript.

Firefox, напротив, заканчивает то, что он делает, до того, как отработает «прерывание» таймера. В результате возникает дрожание. Но вызовы функций не пропали, он по-прежнему надежен.

также возможно, что только дисплей завис по непонятной причине в ФФ.

Эрик http://codevault.agilityhoster.com

person Community    schedule 24.02.2009