2015-12-12 11 views
1

Мне нужно вызвать функцию, когда палец перемещается по сенсорному устройству. Когда вы касаетесь движка, прокрутка браузера по умолчанию отключена с помощью e.preventDefault(); См. Первый раздел на JsFiddle.Как предотвратить браузер по умолчанию с помощью сенсорной кнопки в сочетании с дроссельной функцией

Для уменьшения трафика эта функция вызывается только каждые полсекунды, пока вы touchmove с _.throttle из библиотеки underscore. Однако прокрутка браузера больше не отключена. См. second section.

Как отключить прокрутку браузера на сенсорных устройствах, даже если вызываемая функция дросселируется?

Раздел 1

$('#test1').on("touchmove", function (ev) { 
    var e = ev.originalEvent; 
    e.preventDefault(); 
    $('#test1').text(e.targetTouches[0].pageX, e.targetTouches[0].pageY); 
}); 

Раздел 2

$('#test2').on("touchmove", _.throttle(function (ev) { 
    var e = ev.originalEvent; 
    e.preventDefault();      // browser still scrolling - why? 
    $('#test2').text(e.targetTouches[0].pageX); 
},500)); 

ответ

1

Снимите e.preventDefault() и добавить return false; в конец функции. Пример:

$('#test1').on("touchmove", function (ev) { 
    var e = ev.originalEvent; 
    e.preventDefault(); 
    $('#test1').text(e.targetTouches[0].pageX, e.targetTouches[0].pageY); 
}); 


$('#test2').on("touchmove", _.throttle(function (ev) { 
    var e = ev.originalEvent; 
    $('#test2').text(e.targetTouches[0].pageX); 
    return false; 
},500)); 

Working Fiddle

+0

Отлично, спасибо так много! – wurstbrotrest

+0

@wurstbrotrest Нет проблем. Рад, что это помогло. –