Javascript Touch事件学习笔记5 实现一个APP框架三 向下滑动加载更多
上篇笔记(进入)讨论了向上滑动加载新内容,现在在上篇文章的基础上来新增功能,向下滑动加载更多内容。
一:为了更加接近网易新闻APP,填充一些数据。
二:加载更多触发的条件,即当整个新闻快滑动到底部的时候。
用到的知识点:
1;document.body.scrollHeight 页面总高度
document.body.scrollTop 滚动的高度
document.documentElement.clientHeight 可见区域的高度
当滚动到页面最底部的时候document.body.scrollHeight - document.body.scrollTop = document.documentElement.clientHeight
另外,这样的实现方法还要求当其他的view没有被选中时,要隐藏掉,选中时在显示出来,以便不影响document.body.scrollHeight和document.body.scrollTop的值。
在这么实施的时候遇到一个问题,也许是css3和display的组合使用的问题。当时该显示的时候没有正常显示出来。所以最后没有使用display:none,而是使用的height和overflow的组合,具体css3和display的bug留到以后有时间的时候再来看。
2:在Util中新增了CreateHTML,将拼好的字符串转成html以便于使用appendChild的方法
CreateHTML: function (htmlStr) {
var frag = document.createDocumentFragment(),
temp = document.createElement('div');
temp.innerHTML = htmlStr;
while (temp.firstChild) {
frag.appendChild(temp.firstChild);
}
return frag;
}
注意方法体利用了:当把一个节点的childNode append到另一个节点时,该childNode会从原来的节点处删除!!!!!!!
3,在移动端,由于人为的禁止了touchmove事件,所以要手动设置滚动效果
var target = $.AppFrame.GetEventTargetObj(e);
var offsetY = target.clientY - $.AppFrame.startY;
document.body.scrollTop = $.AppFrame.startScrollTop - offsetY;
让滚动条随着手势滚动
Demo入口:摸这里