我几天来一直在努力解决这个问题,虽然这个网站上有几个相关问题,但没有一个人能够找到我的答案。
我的目标是在手机屏幕应用程序中在画布上实现绘图。我的特定phonegap应用程序使用jQuery Mobile和Backbone进行结构,但不确定这是否与此相关。
此外,我首先尝试按照本教程进行操作:https://bencentra.com/code/2014/12/05/html5-canvas-touch-events.html
在删除所有不相关的代码之后,它归结为:
document.body.addEventListener("touchstart", function (e) {
console.log('touchstart');
}, false);
document.body.addEventListener("touchmove", function (e) {
console.log('touchmove');
}, false);
document.body.addEventListener("touchend", function (e) {
console.log('touchend');
}, false);
在这个最基本的实现中,我看到了“touchstart”日志消息和“touchend”,但从未出现过“touchmove”。
我已尝试过很多方法来完成这项工作,包括:
1)用我在页面上也有的canvas元素替换document.body。
2)将e.preventDefault()添加到touchstart处理函数。注意:这会导致错误: “忽略尝试使用cancelable = false取消touchstart事件,例如因为滚动正在进行且无法中断”
请注意,本教程的作者似乎遇到了同样的问题并且有一个解决方案,我当然尝试过,但这对我不起作用。
重要提示:此外,虽然这是一个移动应用程序,我在iPhone 4的设备模拟模式下在Chrome浏览器中进行测试。如果你不在这种模式下测试,你将不会遇到同样的问题,因为触摸在常规的网页浏览模式下甚至不会触发事件。
任何帮助将不胜感激。感谢。