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

Hil*_*ell 16 javascript safari classname ios touchmove

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

我该怎么做才能className立即进行视觉拍摄?

更多:显然,这不仅限于className更改,而是看似对DOM的任何更改,例如innerHTMLstyle.

rje*_*rje 15

我实际构建了那个站点,是的,绕过这个限制的方法是不使用内置的浏览器功能滚动网站但是伪造它.JS侦听滚轮和键盘事件,并将主容器的css top属性补间到它自己的'scrollTop'.右边的滚动条当然是一个自定义的JS滚动条.在这种情况下,它同步到相同的内部'scrollTop'值.

整个网站实际上只是一个很大的补间,主时间轴是其scrollTop位置,所有子动画在某些时间被触发.JS没有缩小,所以看看ScrollAnimator.js文件,它就在那里.

  • 上面的链接似乎被打破了.任何人都可以发布示例代码吗? (2认同)

And*_*ndy 13

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

我想我可以在苹果开发者页面上找到对此的引用,但我只能找到jQueryMobile的这个链接:http://jquerymobile.com/test/docs/api/events.html.

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

希望这可以帮助!