我正在编写一个HTML5游戏,它在touchstart上更新画布。在运行Android 4.1.1的Galaxy Note 10.1上,触摸事件发生后,屏幕会稍微更新一次。我调查并得出结论,屏幕(只是在屏幕上的任何更改)只需要一段时间后touchstart更新。这里有一个演示:Android HTML5 touchstart屏幕延迟
<!DOCTYPE html>
<html>
<head>
<script>
document.addEventListener(
'touchstart',
function(event) {
console.log('touchstart');
document.getElementById('asdf').value = 'asdf';
}
);
</script>
</head>
<body>
<input id="asdf" value="qwer" type="text" />
</body>
</html>
下面是一些情景:
- 点击屏幕,不要动你的手指,不要松开手指
- 则需要等待大约一半一秒钟看文本框更新
- 点击屏幕,移动你的手指,不要松开你的手指
- 屏幕将被更新的时刻,你移动你的手指
- 点按屏幕并释放
- 屏幕将你释放的那一刻你的手指
在更新所有情况下,touchstart事件立即触发,只是屏幕更新被延迟。它似乎与触发点击事件的300毫秒延迟有关,但问题不同,屏幕更新会延迟。我想我已经尝试了所有明显的东西,例如event.preventDefault
或返回false,将捕获设置为true或false。我也搜索了但找不到任何类似的问题报道。
它运行正常,在我的iPad和运行Android 2.3的Nexus One手机上,屏幕在touchstart后立即更新。
任何想法?
当然,你已经花费了大量的时间进行调查。我做到了。 –