如果我想在靠近其中一条边时使用鼠标滚动窗口,我该如何处理?
到目前为止,我的工作正常,它会在移动时检查位置,看它是否足够接近边缘滚动。
但是,它只会在鼠标移动时检查位置,所以如果你移动靠近边缘,它会滚动一次,不会再次检查你是否仍然关闭足以再次滚动。
我该怎么做?循环不起作用,因为它只是通过不断检查而不中断检查来冻结浏览器。我也尝试过这样做......
function startScrolling() {
//If we're close to an edge start scrolling in that direction
//Else stopScrolling = true;
if(!stopScrolling) {
setTimeout(startScrolling(), "1000");
}
}
此函数从鼠标移动事件设置的全局变量中获取鼠标的位置,因此技术上每次执行它都应该有新的鼠标位置。但它似乎还没有等到再次调用startScrolling()之前......有什么想法吗?
谢谢, 马特
答案 0 :(得分:0)
您发布的代码的问题在于您正在执行startScrolling
而不是将其传递给setTimeout
- 即您正在调用startScrolling()
并将其结果作为第一个参数传递setTimeout
。由于其返回值为null
,因此在1秒后不会调用任何内容,这就是为什么它似乎忽略它。
你想这样做:
setTimeout(startScrolling, "1000");
或:
setTimeout(function (){ startScrolling(); }, "1000");
前者是可取的,因为它更短且更易理解,但在许多情况下,如果您需要将其他参数传递给startScrolling
,则需要第二个。