Javascript 将滚动事件数据传递到油门功能
我正在尝试使用Javascript 将滚动事件数据传递到油门功能,javascript,addeventlistener,throttling,Javascript,Addeventlistener,Throttling,我正在尝试使用wheel事件和throttle函数创建我自己的简单全高滚动脚本(因为我只希望每X毫秒注册一次滚动。我希望将wheel事件的事件数据传递到被我的throttle()函数限制的函数中 以下是我的代码的简化版本: function throttle(callback, limit) { var wait = false; // Initially, we're not waiting return function () { // We return a throttl
wheel
事件和throttle函数创建我自己的简单全高滚动脚本(因为我只希望每X毫秒注册一次滚动。我希望将wheel
事件的事件数据传递到被我的throttle()
函数限制的函数中
以下是我的代码的简化版本:
function throttle(callback, limit) {
var wait = false; // Initially, we're not waiting
return function () { // We return a throttled function
if (!wait) { // If we're not waiting
callback.call(); // Execute users function
wait = true; // Prevent future invocations
setTimeout(function () { // After a period of time
wait = false; // And allow future invocations
}, limit);
}
}
}
function onScroll(event) {
// do stuff here on scroll
}
window.addEventListener('wheel', throttle(onScroll, 700), false);
如果我不需要控制盘
事件中的数据,但我需要使用event.deltaY
确定onScroll()函数
中的滚动方向,这将很好地工作
基本上,我想将最后一行更改为以下内容(尽管我知道这行不通):
window.addEventListener('wheel',throttle(onScroll(event),700),false);
所以…
如何将控制盘
事件数据传递到onScroll()
函数中,同时仍对其进行节流
我所尝试的:
我尝试了以下代码,以便将事件
数据传递到throttle()
函数中,该函数成功运行
window.addEventListener('wheel', function(e) {
throttle(onScroll, 700, e)
}, false);
但是我不知道如何处理e
我的throttle()
函数中的e
才能将其传递给onScroll()
函数。我尝试使用以下命令更改行:
callback.call();//执行用户函数
致:
callback.call(e);//执行用户函数
(使用传递到throttle函数中的e
)
但是这阻止了
onScroll
函数被调用…(我假设因为throttle()
正在返回一个函数,但是这个返回的函数没有被调用,因为它被包装在eventListener
?)中的另一个函数中。只传递参数:
function throttle(callback, limit) {
var wait = false;
return function (...args) {
if (!wait) {
callback(...args);
wait = true;
setTimeout(function () {
wait = false;
}, limit);
}
}
}
只需通过以下参数:
function throttle(callback, limit) {
var wait = false;
return function (...args) {
if (!wait) {
callback(...args);
wait = true;
setTimeout(function () {
wait = false;
}, limit);
}
}
}
那么
window.addEventListener…
行应该是什么样子?@jjwindow.addEventListener('wheel',throttle(onScroll,700),false);
如何将事件数据传递到onScroll函数中?我应该用什么替换“…args”?没有事件数据传递到throttle()
使用您编写的代码,因此没有参数要传递…@jj确实如此,…onScroll
将被调用,第一个参数是事件。好的,对不起,我道歉,我以前从未遇到过…args
,因此对此感到困惑,我接受您的答案,但最好包含整个更新的内容代码片段+指向…args
或其他解释的链接,谢谢!:)以及窗口。addEventListener…
行应该是什么样子?@jj窗口。addEventListener('wheel',throttle(onScroll,700),false)代码>如何将事件数据传递到onScroll函数中?我应该用什么来替换“…args”?没有使用您编写的代码传递到throttle()
的事件数据,因此没有要传递的参数…@jj它是这样做的onScroll
将被调用,第一个参数是eventAh好的,对不起,我以前从未遇到过…args
,因此对此感到困惑,我接受你的回答,但最好包含整个更新的代码片段+指向…args
或其他解释的链接,谢谢!)