需求:浏览消息时收到新消息,右下角出提示。点击提示滚到新消息处,提示消失。手动滚到新消息处时提示也会消失。
原来的逻辑:不论是自己发消息还是收到消息,都会自动滚到底部。
我的实现方案:有新消息时,判断是否是自己发送的,如果是走原来的逻辑。如果是收到别人发来的消息,判断当前滚动条是否在底部,如果在底部,走原来的逻辑;如果不在底部,展示新消息提示。
遇到的问题:用到的框架是 angularjs,push 新消息后,滚到底部用一层 timeout 包裹,这样能保证在页面渲染出新消息后才执行滚到底部。但是,如果收到消息很快很多,上一条消息可能还没来得及滚到底部,就开始对下一条消息做处理,导致判断滚动条是否到底部时有可能为 false,本来不该出现提示的情况出现了提示。
暂时想到的解决办法: 不严格判断滚动条是否到底部,给一个容错的高度,滚动条距离底部超过这个高度才认为在浏览消息,允许出提示。
想请教下大佬们,我这个解决方法是否可行,有没有更加靠谱的方法。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/591277
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.