JS实现滚动条触底加载更多

JavaScript017

JS实现滚动条触底加载更多,第1张

原理

1.通过监听滚动区域DOM的scroll事件, 计算出触底

// 滚动可视区域高度 + 当前滚动位置 === 整个滚动高度

scrollDom.clientHeight + scrollDom.scrollTop === scrollDom.scrollHeight

2.触底后触发列表添加, 列表添加使用createDocumentFragment, 将多次插入的DOM先存入内存, 最后一次填充进去, 提高性能, 也方便后面的MutationObserver监听

3.使用MutationObserver监听列表的DOM添加, 添加完毕后, 隐藏加载中提示

示例

https://codepen.io/klren0312/full/dybgayL

参考资料

https://developer.mozilla.org/zh-CN/docs/Web/API/Element/clientHeight

https://developer.mozilla.org/zh-CN/docs/Web/API/Element/scrollHeight

https://developer.mozilla.org/zh-CN/docs/Web/API/Element/scrollTop

https://developer.mozilla.org/zh-CN/docs/Web/API/GlobalEventHandlers/onscroll

https://developer.mozilla.org/zh-CN/docs/Web/API/Document/createDocumentFragment

https://developer.mozilla.org/zh-CN/docs/Web/API/MutationObserver

$(window).scroll(function(event) {

if ($(document).scrollTop() + $(window).height() >= $(document).height()) {

//加载下一页

}

})

本文介绍了如何延迟javascript代码的加载,加快网页的访问速度。

当一个网站有很多js代码要加载,js代码放置的位置在一定程度上将会影像网页的加载速度,为了让我们的网页加载速度更快,本文总结了一下几个注意点:

1、延迟加载js代码

复制代码

代码如下:

<script

type=”text/javascript”

src=”"

id=”my”></script>

<script

type=”text/javascript”>

setTimeout(“document.getElementById(‘my').src='include/php100.php'

“,3000)//延时3秒

</script>

这样通过延迟加载js代码,给网页加载留出更多的时间!

2、js最后加载方案一

在需要插入JS的地方插入以下代码:

程序代码

复制代码

代码如下:

<span

id=”L4EVER”>LOADING…</span>

当然,那个LOADING…你可以换成自己喜欢的小图片.看起来很有AJAX效果呢.

然后在页面最底端插入:

程序代码

复制代码

代码如下:

<span

id=”AD_L4EVER”>你的JS代码在这里!</span

>

<script>L4EVER.innerHTML=AD_L4EVER.innerHTMLAD_L4EVER.innerHTML=”"</script>

3、让JS最后加载方案二

这个牵涉到网页的加载顺序问题,例如引入外部js脚本文件时,如果放入html的head中,则页面加载前该js脚本就会被加载入页面,而放入body中,则会按照页面从上倒下的加载顺序来运行javascript的代码~~~

所以我们可以把js外部引入的文件放到页面底部,来让js最后引入,从而加快页面加载速度。