簡體   English   中英

遞歸window.scrollTo在FireFox中不起作用。 的JavaScript

[英]Recursive window.scrollTo doesn't work in FireFox. JavaScript

我正在使用此功能來“ onclick”向下滾動頁面:

function moveDown(arg) {
    smooth = setTimeout(moveDown, 10);
    if(!isFirefox){     ///// This works good for Chrome
         window.scrollTo(0, window.pageYOffset + 1);
    }
    if(isFirefox){    /// Does not work in FireFox
         console.log(window.pageYOffset) /// Every iteration returns 0
         window.scrollTo(0, window.pageYOffset + 1);
         console.log(window.pageYOffset) /// Every iteration returns 1
    }

邏輯:每次迭代時,我們都會將pageYOffset增加1 px,但是在FireFox中,每次將其重新設置為0時。 謝謝!

我張貼完整的代碼,因為我自己找不到問題。

function moveDown(arg) {
    offset = parseFloat(timeline.style.width) * 7100 / 100;
    setTimeout(function() {  /// 1 ms - time to calculate offset
        window.scroll(0, offset);
    }, 1);
    if ( typeof arg === 'undefined') {  /// makes argument optional
        arg = true;
    }
    if (arg) {
            smooth = setTimeout(moveDown, 10); // Timeout makes recursive calls 
            if (window.pageYOffset > 7100) {
                story.pause();
                isPlaying = false;
                enable_scroll();
                animateTimeLine(false);
                clearTimeout(smooth);
                playButton.style.display = "block";
                pauseButton.style.display = "none";

            }
            if(!isFirefox){
                window.scrollTo(0, window.pageYOffset + 7408 / (story.duration * 47));
            }
            if(isFirefox){
                console.log(window.pageYOffset);
                window.scrollTo(0, window.pageYOffset + 7408 / (84 * 47));
                console.log(window.pageYOffset);
            }
    }
    if (arg == false) {
        clearTimeout(smooth);
    }
}

playButton.onclick = function() {
    moveDown();
}

Firefox中有滾動條嗎? 您必須確保瀏覽器可以滾動。 沒有空間,它將無法正常工作。

這段代碼每200ms向下滾動1px,經過測試並可以在Firefox v25中使用:

<html>
<body onload="window.scrollTo(0,0); smooth = setInterval(moveDown, 200);">
<div style="height:2000px;">scroll</span>
<script>
function moveDown() {
     console.log(window.pageYOffset);
     window.scrollTo(0, window.pageYOffset + 1);
     console.log(window.pageYOffset);
}
</script>
</html>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM