【发布时间】:2019-09-08 06:30:15
【问题描述】:
我一直在尝试使用在鼠标滚轮上触发的 location.href 来制作一个简单的“smoothscroll”功能。主要问题是 EventListener(wheel..) 在 ca 的跨度上获得了一堆输入。 0,9 秒持续触发该功能。 “我只希望函数运行一次”。
在下面的代码中,我尝试在函数运行后立即删除事件监听器,这实际上有点工作,问题是我希望再次添加它,因此底部的定时函数。这也有点工作,但我不想等待一整秒才能滚动,如果我将它设置为任何情人,该功能将运行多次。 我也尝试过使用条件“注释掉的真或假变量”,只要您只向上和向下滚动但不能滚动两次或向下两次,它就可以完美地工作。
window.addEventListener('wheel', scrolltest, true);
function scrolltest(event) {
window.removeEventListener('wheel', scrolltest, true);
i = event.deltaY;
console.log(i);
if (webstate == 0) {
if (i < 0 && !upexecuted) {
// upexecuted = true;
location.href = "#forside";
// downexecuted = false;
} else if (i > 0 && !downexecuted) {
// downexecuted = true;
location.href = "#underside";
// upexecuted = false;
}
}
setTimeout(function(){ window.addEventListener('wheel', scrolltest, true); }, 1000);
}
我曾希望有一种方法可以阻止轮子在至少 0.9 秒内不断产生输入。
“注意:不知道它是否能以某种方式提供帮助,但是当没有点击浏览器(活动窗口)时,滚轮只会注册一个值,向下 100 和向上 -100”
【问题讨论】:
标签: javascript html css