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);
アプリは機能し、意図しないスクロールはすべて抑制されます。ただし、小さなスワイプを 2 回以上すばやく行うと、URL バーが下にスクロールし、キャンバスでのすべてのレンダリングが停止します。JavaScript エラーはありません。デバッグでは、アプリが引き続き実行され、描画関数が引き続き呼び出され、有効な 2DContext があると見なされますが、画面がフリーズします。トラック ボールを使用して画面をスクロールすると、レンダリングが再開されます。Kindle Fireでもまったく同じことが見られます。そのデバイスでは、フルスクリーン モードに切り替えると、レンダリングが再開されます。
「ダブルスワイプ」で見られるこのフリーズ/スクロール効果を抑制する方法はありますか?