Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Wheel и тачпады (https://javascript.ru/forum/events/62809-wheel-i-tachpady.html)

JetStar 01.05.2016 21:29

Wheel и тачпады
 
Пытаюсь написать горизонтальный скролл и столкнулся с проблемой: на тачпадах скролл очень быстрый из-за того, что очень частой вызывается событие wheel, которое я перехватываю test.celerart.com/denis
вот сам скрипт:
function ready(){

var i = (window.pageXOffset || document.body.scrollLeft);

function scroll_toward_side(event){
i += 100 * (event.deltaY > 0 ? 1 : -1);
if(i < 0) i=0;
if(i >= document.body.scrollWidth - window.innerWidth) i = document.body.scrollWidth - window.innerWidth;
window.scrollTo(i, 0);

}

if(document.addEventListener){
document.addEventListener("wheel", scroll_toward_side);
}
}

if(document.addEventListener){
document.addEventListener("DOMContentLoaded", ready);
}else if(document.attachEvent){
document.attachEvent("onDOMContentLoaded", ready);
}

Как заставить скролл на тачпаде работать также, как и с мышью?

рони 01.05.2016 22:07

JetStar,
так запускайте функцию с нужной вам частотой

JetStar 02.05.2016 11:04

Вы про SetTimeintenval?

рони 02.05.2016 16:21

JetStar,
<script>
var pause = false;
document.addEventListener("wheel", function(event) {
    if (pause) return;
    pause = true;
    window.scrollBy(event.deltaY > 0 ? 100 : -100,0)
    window.setTimeout(function() {
        pause = false
    }, 308)
});
  </script>


Часовой пояс GMT +3, время: 13:07.