如何防止默认浏览器滚动touchmove并结合限制函数

时间:2015-12-12 09:24:26

标签: javascript preventdefault throttling touchmove

我需要在手指在触摸设备上移动时触发功能。 当您触摸移动时,使用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 个答案:

答案 0 :(得分: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