最近作了一個語音直播聊天的項目,有一個功能是當沒有直播時,進入房間能夠查看歷史消息,滑動到頂部加載以前的歷史消息,我用jquery scroll事件,來判斷是否滾動到頂部,問題來了:jquery
首先觸發請求事件以後,prepend插入到當前列表以前,而prepend元素會使scoll滾動到頂部,
顯然這不是我想要的效果,我所要效果能夠跟微信加載歷史消息同樣直接停留在上一頁底部,ios
我設置一個全局變量,用來保存父元素的高度,先記錄prepend以前父元素的高度,再用prepend以後的高度減去以前的高度,這就是我想要的滾動位置,而後用animate 滾動到這裏(時間儘可能設置短一點,負責頁面抖動厲害):web
然而ios瀏覽器滑動時會有卡頓現象,百度了下,此屬性可解決ios滑動卡頓現象,瀏覽器
-webkit-overflow-scrolling 屬性控制元素在移動設備上是否使用滾動回彈效果. auto: 使用普通滾動, 當手指從觸摸屏上移開,滾動會當即中止。 touch: 使用具備回彈效果的滾動, 當手指從觸摸屏上移開,內容會繼續保持一段時間的滾動效果。 繼續滾動的速度和持續的時間和滾動手勢的強烈程度成正比。同時也會建立一個新的堆棧上下文。
加上此屬性以後,在蘋果手機裏面設置scrollTop老是失敗,在我查看了不少文章以後,發現設置
-webkit-overflow-scrolling:touch對scrollTop有影響,具體緣由,還有待研究。。。。微信
在我測試以後發現設置-webkit-overflow-scrolling:auto 對於scrollTop沒有影響,測試
在我設置scrollTop以前先把-webkit-overflow-scrolling設置爲auto,
設置完以後-webkit-overflow-scrolling設置爲touchspa
但願大神有更好的解決方案多多指教,瀏覽器兼容着實是心累的不行.....code