【发布时间】:2020-12-03 10:19:51
【问题描述】:
我正在尝试制作垂直滑动,它可以在带有滚轮事件的桌面上运行,但 scrollIntoView 方法不会在触摸事件侦听器中执行。
这里是代码
let startClientY, endClientY;
page.addEventListener("touchstart", (event) => {
startClientY = event.touches[0].pageY;
}, false);
page.addEventListener("touchmove", (event) => {
endClientY = event.touches[0].pageY;
}, false);
page.addEventListener("touchend", (event) => {
let diff = startClientY - endClientY;
if (diff < -35) {
if( i !== 0 ) {
slides[i - 1].scrollIntoView({
behavior: "smooth", block: "start"
});
i--;
console.log('scroll top'); // this code is executed as well
}
} else if (diff > 35) {
if( i < slides.length -1) {
slides[i + 1].scrollIntoView({
behavior: "smooth", block: "start"
});
i++;
console.log('scroll down'); // this code is executed
}
}
startClientY = undefined;
endClientY = undefined;
}, false);
奇怪的一点是条件里面的控制台日志被执行,而scrollIntoView方法在eventListeners之外起作用
我错过了什么?
【问题讨论】:
标签: javascript scroll touch slide