阻止 HTML5 Canvas 在 Phonegap 应用程序的 touch/swipe 事件中滚动整个页面?

Keep HTML5 Canvas from scrolling entire page on touch/swipe events in Phonegap App?

在我的 phonegap 应用程序中,我在长页文本的末尾有一个使用 canvas 的签名框,无论设备 iPhone 或 iPad 或方向如何,它都会垂直滚动.该页面比视口高。

问题在于,当用户尝试在 canvas 上使用手指签名而不是在其上绘图时,由于触摸滚动,当他们上下移动时整个页面会滚动。

我怎样才能避免这种情况?这是我到目前为止所做的。 (注意 canvas 宽度是根据视口动态分配的)

HTML:

<div id="canvas-container">
<canvas id="paintCanvas" width="600" height="158"></canvas>
</div>

Javascript/JQuery:

var mycanvas = $("#paintCanvas");
mycanvas.addEventListener("touchstart",  function(event) {event.preventDefault()})
mycanvas.addEventListener("touchmove",   function(event) {event.preventDefault()})
mycanvas.addEventListener("touchend",    function(event) {event.preventDefault()})
mycanvas.addEventListener("touchcancel", function(event) {event.preventDefault()})

我在 iOS 和 Android 上遇到了类似的行为。是否还有其他事件需要捕捉,例如 swipeUp?我认为 touchstart 和 touchmove 就是我所需要的。有什么建议么?

回答我自己的问题 - 我放弃了这种方法,而是将基于 canvas 的签名框放入由 "add signature" 按钮触发的静态(不滚动)模态对话框中.这是一个 hack,但它会向最终用户展示一个签名框,当他们尝试用手指签名时该签名框不会移动。