Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.05.2016, 21:29
Интересующийся
Отправить личное сообщение для JetStar Посмотреть профиль Найти все сообщения от JetStar
 
Регистрация: 01.05.2016
Сообщений: 10

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);
}

Как заставить скролл на тачпаде работать также, как и с мышью?
Ответить с цитированием
  #2 (permalink)  
Старый 01.05.2016, 22:07
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

JetStar,
так запускайте функцию с нужной вам частотой
Ответить с цитированием
  #3 (permalink)  
Старый 02.05.2016, 11:04
Интересующийся
Отправить личное сообщение для JetStar Посмотреть профиль Найти все сообщения от JetStar
 
Регистрация: 01.05.2016
Сообщений: 10

Вы про SetTimeintenval?
Ответить с цитированием
  #4 (permalink)  
Старый 02.05.2016, 16:21
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

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>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Надо ли отложить выполнение события? Или... vadim_ Events/DOM/Window 10 18.02.2014 16:47
Нужна помощь: Slider wheel Alex555 Мобильный JavaScript 0 15.05.2013 18:06
scroll bar (wheel) morg4n Элементы интерфейса 1 13.08.2010 01:22