1

我在 iOS 上使用“新”CSS 属性来实现滚动动力,-webkit-overflow-scrolling. 我有一个<div>您可以滚动和选择的列表,以便选择器消失并且所选项目放置在其他位置。问题是,如果项目 A 在位置 (X,Y);我向上滑动以向下滚动,当滚动动量处于活动状态时,我再次点击位置 (X,Y),项目 A 曾经所在的位置,但现在被向上移动的项目 B 占据,项目 A 是被选中的项目.

一个视频值一百万字:https ://www.youtube.com/watch?v=mXh28IY3wIU

这是一个已知的错误?我正在使用 jQuery 的移动事件“点击”,如下所示:

$selector.on('tap', '.act-item-inner', function(e){
    e.preventDefault();
    var $selected=$(this);
    [...]
}

正如你想象的那样,$selector 是包装器,$selected 是项目 B

4

1 回答 1

0

在 iOS 上滚动浏览网站时,浏览器

  1. 从您的网站截取屏幕截图
  2. 并冻结 JavaScript-Engine(包括所有 JavaScript-/DOM-Events)。

所以是的,这是众所周知的。但它像设计的那样工作。您可以通过setTimeout或将一些消息打印到控制台来观察此行为setInterval。您会看到它们在弹性滚动期间没有执行。

我建议当引擎未冻结时,这会在您的特定用例中导致竞争条件。

于 2012-11-12T01:05:38.477 回答