setTimeout () перемещает div с помощью iframe, вызывая мерцание только в Firefox - PullRequest
1 голос
/ 18 января 2009

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

Проблемы:

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 Ответ

1 голос
/ 24 февраля 2009

Для меня IE (и Chrome) реализует вытеснение REAL . Я имею в виду, что IE litteraly останавливает то, что он делает (другое выполнение Javascript или внутренний код для рендеринга страницы или извлечения ее или ...), чтобы немедленно выполнять функцию javascript.

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

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

Eric http://codevault.agilityhoster.com

...