当手指在触摸设备上移动时,我需要触发一个功能。
触摸移动时,默认浏览器滚动功能已通过e.preventDefault();禁用
请参见JsFiddle的第一部分。

为了减少通信量,当您使用touchmove库中的_.throttle underscore时,仅每半秒钟调用一次此函数。但是,不再禁用浏览器滚动。请参见second section

即使调用函数受到限制,如何在触摸设备上禁用浏览器滚动?

第一节

$('#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;
  e.preventDefault();                      // browser still scrolling - why?
  $('#test2').text(e.targetTouches[0].pageX);
},500));

最佳答案

删除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

09-12 13:31