我正在使用iScroll(探针)进行聊天(使用SignalR)。
当我添加新消息时没什么问题,但是当我到达iScroll实例的顶部时,我应该在前面的10条消息之前添加
。添加元素后,我必须调用refresh()
方法,并使用scrollTo()
重新定位iScroll到第10条消息的位置,但不会触发它(scrollTo)。它仅在800ms超时时有效。
有人可以提出解决方案或另一种方法来实现此行为吗?
谢谢,这是一些伪代码:
chatScroll = new IScroll('.iscroll-wrapper-chat', {
probeType: 3,
tap: true,
click: false,
preventDefaultException: {
tagName: /.*/
},
startY: this.maxScrollY
});
chatScroll.on('scroll',
function () {
var ms = this;
//retrieve old elems with ajax if the top is reached
if(ReachTop()){
RetrievePreviousElements().success(function (data) {
$(ms.scroller).prepend($(data)); //prepend the html
var oldMaxScrollY = chatScroll.maxScrollY; // get the current maxScrollY to determinate the scrollTo position
setTimeout(function () {//call the refresh method with 0 timeOut (from documentation)
chatScroll.refresh()
//if the scrollTo is executed immediately doesn't work
setTimeout(function () {//I need thi 800mx timeout
chatScroll.scrollTo(0,chatScroll.maxScrollY - oldMaxScrollY,0);
},800);
},0);
})
}
})