0

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 メソッドを使用しようとしましたが、それでも同じです。

前もって感謝します。

乾杯、ジョアン

4

0 に答える 0