Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
递归window.scrollTo不';我不能在FireFox中工作。JavaScript_Javascript_Firefox - Fatal编程技术网

递归window.scrollTo不';我不能在FireFox中工作。JavaScript

递归window.scrollTo不';我不能在FireFox中工作。JavaScript,javascript,firefox,Javascript,Firefox,我正在使用此功能“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 Fi

我正在使用此功能“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>

纸卷
函数moveDown(){
console.log(window.pageYOffset);
滚动到(0,window.pageYOffset+1);
console.log(window.pageYOffset);
}

你能提供一个例子来演示上面的代码是如何使用的吗?我知道你的代码是有效的,但我找不到为什么我的代码不行。我添加了更多的代码,你能检查一下吗?第一个超时会撤消在if(!isFirefox)和(isFirefox)中发生的事情-你确定要调用它吗-看起来你想在初始化调用中使用它。一开始就在别的地方打电话给我。当你删除它时,它每次都会向下滚动一些像素。否则,您将取决于变量timeline.style.width和story.duration,因此,如果timeline.style.width没有更改,则Y滚动位置处于恒定值。另一方面,如果story.duration没有改变,只要(7408/(story.duration*47)大于0,滚动仍会发生