javascript-如何在iOS设备中消除抖动或限制滚动事件(Safari)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript-如何在iOS设备中消除抖动或限制滚动事件(Safari),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1991字,纯文字阅读大概需要3分钟。
内容图文
我正在尝试为移动设备和台式机设备实现无限滚动下拉列表.在“无限滚动”下,我的意思是-如果您有100条记录,则到达可滚动容器的末尾时,将加载20条新记录,而前20条记录将隐藏(向后方向相同)
我遇到以下问题:
除Safari移动浏览器(iPhone,iPad等)外,其他所有功能都可以在移动Android Chrome浏览器桌面浏览器中完美运行
我尝试了以下解决方案:
>在整个滚动处理程序功能中添加了lodash防抖动/油门功能,该功能无济于事,甚至到处都破坏了滚动
>我尝试使用iScroll,但是遇到了与iscroll scrollTo()方法中的其他错误相同的问题.
> requestAnimationFrame()-没有成功.
这是我的示例项目:
https://jsfiddle.net/q4nLverg/2/
滚动处理程序功能代码:
function scrollHandler(e) {
var top = $(this.$refs.dropdownContainer).scrollTop();
var difference = $(this.$refs.dropdownMenu).height() - $(this.$refs.dropdownContainer).height()
if (top >= difference - this.scrollLimit && difference > 0) {
this.maxRowsLimitIndex = this.maxRowsLimitIndex + this.numberOfItemsToLoad;
this.minRowsLimitIndex = this.minRowsLimitIndex + this.numberOfItemsToLoad
if ( this.maxRowsLimitIndex >= this.options.length ) {
this.maxRowsLimitIndex = this.options.length
this.minRowsLimitIndex = this.options.length - this.numberOfVisibleItems
}
else {
this.scrollTo( (difference - (this.numberOfItemsToLoad * 28)) )
}
}
else if ( top <= this.scrollLimit )
{
this.maxRowsLimitIndex = this.maxRowsLimitIndex - this.numberOfItemsToLoad;
this.minRowsLimitIndex = this.minRowsLimitIndex - this.numberOfItemsToLoad
if ( this.maxRowsLimitIndex <= this.numberOfVisibleItems ) {
this.maxRowsLimitIndex = this.numberOfVisibleItems
this.minRowsLimitIndex = 0
}
else {
this.scrollTo( (this.numberOfItemsToLoad * 28)/2)
}
}
}
this.scrollTo-只需更改容器的scrollTop即可模拟在加载新数据并将旧数据从选择中删除时自动向上或向下滚动
在iOS设备(和其他任何设备)上的预期结果:
当用户快速滚动到可滚动容器的末尾时,不应转到可滚动容器的末尾,但必须继续滚动事件并加载数据(就像它在android设备中的工作方式一样)以模拟无穷大滚动功能.
解决方法:
如果所有行的高度均相等,则可以尝试计算滚动区域的初始高度,并使用Intersection Observer确定哪些行可见.
内容总结
以上是互联网集市为您收集整理的javascript-如何在iOS设备中消除抖动或限制滚动事件(Safari)全部内容,希望文章能够帮你解决javascript-如何在iOS设备中消除抖动或限制滚动事件(Safari)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。