touchmove中的JavaScript DOM更改延迟,直到移动Safari上的滚动结束

在移动Safari中,在处理元素touchmove的过程中,我更改了该元素的className 。 不幸的是,当用户滚动时,或直到惯性滚动的最后,视觉改变不会发生。

我能做些什么来让className立即在视觉上?

更多:显然这并不局限于className的改变,而是看似对DOM的任何改变,比如innerHTMLstyle

这是不幸的devise。 iOS Safari将排队所有的DOM操作,直到滚动或手势结束。 有效地,DOM在滚动期间被冻结。

我以为我可以在苹果开发者页面find这个参考,但我只能find这个链接到jQueryMobile: http : //jquerymobile.com/test/docs/api/events.html 。

请注意,iOS设备在滚动期间冻结DOM操作,在滚动完成时排队它们以应用。 目前我们正在研究在滚动开始之前允许应用DOM操作的方法

希望这可以帮助!

我实际上build立了该网站,是的解决这个限制的方法是不使用内置的浏览器function滚动网站,但假的。 JS监听滚轮和键盘事件,并将主容器的CSS顶部属性调整到自己的“scrollTop”。 右侧的滚动条当然是一个自定义JS的一个。 在这种情况下,它同步到相同的内部“scrollTop”值。

整个网站真的只是一个大的补间,主要的时间轴是它的scrollTop位置,所有的子animation在某些时候被触发。 JS没有被缩小,所以看看ScrollAnimator.js文件,它就在那里。

只需将位置更改为-webkit-sticky 。 不要设置顶部,它看起来就像一个普通的元素,但像一个固定的元素执行。 你可以立即更新它的风格,除了位置。