Android を使用して古い JavaScript ゲームの 1 つを適応させていますが、指で押した最初の要素に対して「タッチムーブ」が起動するのはなぜでしょうか。その要素を押した後、指を離さずに動かし、別の要素に入ると、その新しい要素は「touchmove」イベントを発生させません。
テスト用にこの簡単な例を作成しました (実際に使用しているコードではありませんが、動作は同じです)。
<html>
<head>
</head>
<body>
<div style="background-color:red; height:33%;" ontouchmove="this.style.background='black';">Box 1</div>
<div style="background-color:blue; height:33%;" ontouchmove="this.style.background='black';">Box 2</div>
<div style="background-color:orange; height:33%;" ontouchmove="this.style.background='black';">Box 3</div>
</body>
</html>
そのコードを Android のデフォルト ブラウザ (Samsung Galaxy S3) で試しました。「ボックス 1」を指で押し始め (イベントが実行されるため、黒くなります)、指を離さずに「ボックス 2」と「ボックス 3」を移動し続けますが、黒くなることはありません。イベントがトリガーされることはありません。
私が期待するのは、デスクトップ ブラウザの「mousemove」イベントと同様の動作です。次のコードは、JavaScript が有効になっている任意のデスクトップ ブラウザーでテストできます。
<html>
<head>
</head>
<body>
<div style="background-color:red; height:33%;" onmousemove="this.style.background='black';">Box 1</div>
<div style="background-color:blue; height:33%;" onmousemove="this.style.background='black';">Box 2</div>
<div style="background-color:orange; height:33%;" onmousemove="this.style.background='black';">Box 3</div>
</body>
</html>
要素の上にマウスを移動すると、すべてが黒くなります。ontouchmove を使用しているときに何が起きないのですか?
ところで、"preventDefault()" を使用する必要がある Android のバグを認識しています。実際のゲーム コードでイベントの preventDefault メソッドを使用しようとしましたが、それでも同じです。
前もって感謝します。
乾杯、ジョアン