( iOS 浏览器)难道真的没办法在滚动时运行 JS 吗?

2014-12-25 02:57:40 +08:00
 shuding

setTimeoutsetIntervalonscrollrequestAnimationFrame 都试过了……
均会在惯性滚动的时候被暂停 _(:з」∠)_
真的没有好的解决办法么 0 0?

以及,scrolling end 是不是也不能监听到?

6011 次点击
所在节点    iDev
10 条回复
bumz
2014-12-25 04:02:33 +08:00
有一種辦法,那就是禁用掉 iOS 自帶的滾動,自己模仿一個。 https://bumfo.github.io/overflow.html 額外的好處是可以實現毛玻璃效果~ https://workspace.v2ex.com/file/c64143a0-8ba7-11e4-9d18-42010af0ecaa/2849178970-5463896a48365.jpeg
bumz
2014-12-25 04:14:42 +08:00
等等,剛纔試了一下,你確信 scrolling 的時候是無法執行 js,不是無法更新 scroll layer dom?

我這裏,requestAnimationFrame,js 一直好好地執行呢 (iOS 8 Safari),而且無論更新 scroll layer 還是 fixed layer 都無問題(iOS7 好像只能更新 fixed layer)。
shuding
2014-12-25 04:24:43 +08:00
@bumz 谢谢!你的 demo 实在太棒了!

我的测试是 iOS 7 > <,scrolling 确实会暂停。

搜到一些资料,(iOS 7 里边)确实是 Apple 暂停掉了。
看来是 iOS 8 有改变: http://developer.telerik.com/featured/scroll-event-change-ios-8-big-deal/
yyfearth
2014-12-25 04:40:58 +08:00
说是js会执行 但是不paint
hkongm
2014-12-25 08:42:29 +08:00
IOS8的SAFARI才有了真正的scroll事件。
alexrezit
2014-12-25 08:58:33 +08:00
@shuding
iOS 8 更新的內容之一.
shuding
2014-12-25 09:43:38 +08:00
@hkongm @alexrezit 谢谢(所以大概是因为我还在用 7,才没发现这一点吧……QAQ
iyangyuan
2014-12-25 09:51:01 +08:00
好像滚动的时候,css animation也会停掉。。。
whatisnew
2015-05-11 00:42:30 +08:00
现在有好的解决方案了吗?快速滑动的时候,animation 就废了。。。
@bumz
bumz
2015-05-11 18:59:08 +08:00
@whatisnew iOS 8 一切正常,iOS 7 除了自製滾動外,不可能有比較完美的解決方案。

不過 fixed 和 sticky 的元素在滾動時可以被 js 更新,雖然 css 動畫被暫停,但是也可以用 js 操縱動畫。。。

demo: https://bumfo.github.io/anim.html

iOS 7 下,保持手指移動,動畫繼續
然而如果手指沒有移動,目前也沒有什麼辦法能讓動畫繼續了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/156480

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX