如何使用鼠标位置滚动窗口?

时间:2009-05-24 21:27:16

标签: javascript function scroll mouse

如果我想在靠近其中一条边时使用鼠标滚动窗口,我该如何处理?

到目前为止,我的工作正常,它会在移动时检查位置,看它是否足够接近边缘滚动。

但是,它只会在鼠标移动时检查位置,所以如果你移动靠近边缘,它会滚动一次,不会再次检查你是否仍然关闭足以再次滚动。

我该怎么做?循环不起作用,因为它只是通过不断检查而不中断检查来冻结浏览器。我也尝试过这样做......

function startScrolling() {
    //If we're close to an edge start scrolling in that direction
    //Else stopScrolling = true;

    if(!stopScrolling) {
        setTimeout(startScrolling(), "1000");
    }
}

此函数从鼠标移动事件设置的全局变量中获取鼠标的位置,因此技术上每次执行它都应该有新的鼠标位置。但它似乎还没有等到再次调用startScrolling()之前......有什么想法吗?

谢谢, 马特

1 个答案:

答案 0 :(得分:0)

您发布的代码的问题在于您正在执行startScrolling而不是将其传递给setTimeout - 即您正在调用startScrolling()并将其结果作为第一个参数传递setTimeout。由于其返回值为null,因此在1秒后不会调用任何内容,这就是为什么它似乎忽略它。

你想这样做:

setTimeout(startScrolling, "1000");

或:

setTimeout(function (){ startScrolling(); }, "1000");

前者是可取的,因为它更短且更易理解,但在许多情况下,如果您需要将其他参数传递给startScrolling,则需要第二个。