为什么在用户滚动后,设置超时不会在触摸端处理程序中触发(iOS Safari)



由于某种原因,如果用户在触发触摸端事件之前滚动,则 setTimeout 不会在 touchend 事件处理程序中触发。如果用户不滚动,则 setTimeout 将按预期触发。这似乎是 iOS 版本 6.0 的问题,在版本 6.1 中可能不是问题。

在您的 iOS 设备/模拟器上打开此链接以查看示例:

按页面上的任意位置,无需滚动和释放。页面将按预期变为绿色。

然后,按页面上的任意位置,滚动并释放,页面不会变绿。

http://jsbin.com/aWamaHu/8

打开此链接以查看代码

http://jsbin.com/aWamaHu/8/edit

我找到了答案。显然,在iOS 6及更低版本中,当用户滚动时,所有javascript都会暂停。

有关更多信息,请参阅此处:

iOS 6 js 事件函数未调用,如果其中设置超时

相关内容

最新更新