我正在编写一个 HTML5 游戏,它会在 touchstart 上更新画布。在我运行 Android 4.1.1 的 Galaxy Note 10.1 上,在 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 事件都会立即触发,只是屏幕更新被延迟了。这似乎与触发点击事件的 300ms 延迟有关,但问题不同,是屏幕更新延迟。我想我已经尝试了所有明显的事情,比如event.preventDefault
或返回 false,将捕获设置为 true 或 false。我也搜索过,但找不到报告的任何类似问题。
它在我的 iPad 和运行 Android 2.3 的 Nexus One 手机上运行良好,屏幕在 touchstart 后立即更新。
有任何想法吗?