当前位置: 首页 > Web前端 > HTML

js移动端滑到顶部加载历史消息的解决方法!

时间:2023-04-02 19:56:40 HTML

最近在做一个语音实时聊天项目。有一个功能,在没有直播的时候,进房间可以查看历史消息,滑动到顶部可以加载之前的历史消息。我使用jqueryscroll事件来判断是否滚动到顶部。问题来了:先触发request事件后,prepend插入到当前列表之前,prepend元素会使scoll滚动到顶部。显然这不是我想要的效果。我想要的效果可以像微信加载历史消息一样,停留在上一页底部。我设置了一个全局变量来保存父元素的高度。先记录下prepend前父元素的高度,然后prepend后的高度减去之前的高度Height,这就是我想要的滚动位置,然后在这里使用animate滚动(时间要设置的越短越好,responsibleforseverepagejitter):但是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后,我设置为touch。如果有更好的解决办法,请多多指教,浏览器兼容真是累死人了.....