我正在开发一个AngularJS图像查看器应用程序,如果您处于图像编辑模式,您还可以在图像上绘制("注释")。您可以通过单击作为编辑按钮的铅笔图标进入编辑模式。单击另一个按钮,即关闭编辑按钮,即可关闭编辑模式。
现在注释有一个错误,因为编辑模式下的绘图操作会干扰滚动事件,当您尝试绘制某些内容时,视图将开始滚动。所以为了解决这个问题,我在编辑模式下禁用了滚动,如下所示:
$('body').on("touchmove", function(e){e.preventDefault()});
当点击关闭编辑按钮时,我会启用向后滚动:
$('body').off("touchmove");
这很好用,除了某些情况之外,当我尝试绘制而没有调用off函数时,视图开始滚动!这些情况是随机发生的,是不可靠的可重复性,但当我和它坐在一起5分钟,涂鸦时,无端的卷轴时不时地发生。
我实际上通过在off方法的所有出现点上设置断点来测试这一点 - 断点没有被击中但是屏幕开始滚动。
开/关方法有问题吗?是否涉及时间限制?救命啊!
答案 0 :(得分:0)
.on()
将一个事件处理程序附加到元素。
.off()
从元素中删除“以前附加的”事件处理程序。
所以,如果你像这样定义“处理程序”:
function preventTouch(e){
e.preventDefault();
}
然后打电话给:
$('body').on("touchmove", preventTouch(e));
然后关闭:
$('body').off("touchmove", preventTouch(e));
它应该工作......
试试吧!
你应该也可以阻止这些事件:“touchstart”和“touchend”如下:
在:
$('body').on("touchmove touchstart touchend", preventTouch(e));
关:
$('body').off("touchmove touchstart touchend", preventTouch(e));