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