当手指在触摸设备上移动时,我需要触发一个功能。
触摸移动时,默认浏览器滚动功能已通过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