我正在使用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 bug。我试图在我的实际游戏代码上使用事件的preventDefault方法,但它仍然是一样的。
提前谢谢。
干杯, 琼