我有一个全屏网络应用程序在 Android v2.3.6 的 Nexus One 上运行。我已尽我所能防止滚动。我正在打电话preventDefault()
并stopPropagation()
参加以下活动:
document.addEventListener('touchmove', eventCanceller, false );
document.addEventListener('touchstart',eventCanceller, false );
document.addEventListener('touchend',eventCanceller, false );
document.addEventListener('wheel',eventCanceller, false );
document.addEventListener('mousewheel',eventCanceller, false );
document.addEventListener('DOMMouseScroll',eventCanceller, false );
window.addEventListener('touchmove',eventCanceller, false );
window.addEventListener('touchstart',eventCanceller, false );
window.addEventListener('touchend',eventCanceller, false );
window.addEventListener('wheel',eventCanceller, false );
window.addEventListener('mousewheel',eventCanceller, false );
window.addEventListener('DOMMouseScroll',eventCanceller, false );
canvas.addEventListener('click',eventCanceller, false);
canvas.addEventListener('dblclick',eventCanceller, false);
在我处理它们之后,我还将停止传播并防止这些事件的默认值。
canvas.addEventListener('touchstart',handleEvent, false);
canvas.addEventListener('touchmove',handleEvent, false);
canvas.addEventListener('touchend',handleEvent, false);
该应用程序正常工作,并且所有意外滚动都被抑制。除此之外,如果我快速进行两次或多次小滑动,URL 栏会向下滚动并且画布上的所有渲染都会停止。没有javascript错误,调试显示应用程序继续运行,我的draw函数继续被调用,它认为它仍然有一个有效的2DContext,但是屏幕被冻结了。如果我使用轨迹球滚动屏幕,渲染会重新开始。我在 Kindle Fire 上看到的完全一样。在该设备上,如果我切换到/退出全屏模式,渲染会重新开始。
有什么方法可以抑制我在“双击”上看到的这种冻结/滚动效果?