在某些android 的本机浏览器上,触摸页面似乎会停止显示更新,直到手指松开。这发生在基于 html 元素的动画(切换类)和基于画布的动画中。但是,它不会停止正常的 js 执行,并且会正常触发其他事件。在有这个问题的设备上,海豚浏览器似乎也受到影响(虽然不是 firefox)。
Touchstart/move 都触发了 preventDefault() 以及 stopPropergation(), cancelBubble = true; 和 e.returnValue = false;。在 CSS webkit 中的选择也被禁用了。页面不会滚动。
这里也问了一个类似的问题: Android browser lock DOM on touchStart?
但我想知道是否可以克服这种行为,或者至少发现哪些设备会受到该问题的影响,是设备还是版本 android 问题?如果您无法回答运行演示的问题并报告您的体验以及您的设备型号和用户代理(显示在演示页面底部)作为评论可能会帮助其他人或我自己回答问题。
这是一个演示和重现该行为的步骤。链接的二维码可以在这里找到https://s3-eu-west-1.amazonaws.com/canvas-test-pd/tmp.png。
https://s3-eu-west-1.amazonaws.com/canvas-test-pd/index.html
网页顶部有一个画布,底部有一个带有背景图像的 div。每隔一秒,画布就会被清除并显示不同的图像,并且 div 会切换它的类(都在 0 和 1 png 之间切换)。切换几次后,将手指放在画布(顶部的灰色框)上并保持在那里。等待动画是否继续(有时会一两次然后停止)以及是否有任何视觉失真。
更新 似乎运行 3.2 的 Galaxy Tab 需要用于 touchstart/end of document 的处理程序,而不仅仅是屏幕所需的 div 以继续更新显示。谢谢吉姆皮克。
我开始相信这是由制造商的皮肤引起的问题,尽管这很难证明。