0

我正在使用 Android 来调整我的一个旧 JavaScript 游戏,我想知道为什么“touchmove”只会触发我用手指按下的第一个元素。按下该元素后,我移动手指(不松开它),当我进入另一个元素时,新元素不会触发其“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 的默认浏览器(三星 Galaxy S3)上尝试了该代码。我开始用手指按“Box 1”(由于执行了事件,它变黑了),然后在不松开手指的情况下继续移动它通过“Box 2”和“Box 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