Skip to content

Instantly share code, notes, and snippets.

@abearxiong
Last active October 28, 2019 15:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save abearxiong/bce8c8e516189fa80c0688f45bb72667 to your computer and use it in GitHub Desktop.
Save abearxiong/bce8c8e516189fa80c0688f45bb72667 to your computer and use it in GitHub Desktop.
关于浏览器端js到底部刷新的问题!
document.write("hhh")
let max = 0
for(let i=0;i<20;i++){
document.write(i+"<br/>")
max = i
}
localStorage.setItem("lodding", false)
window.addEventListener("scroll",function(){
let scrollHeight = document.documentElement.scrollHeight
let scrollTop = document.documentElement.scrollTop
let clientHeight = document.documentElement.clientHeight
let lodding = localStorage.getItem("lodding")
console.log("高度",scrollTop,clientHeight,scrollHeight)
if(scrollTop+clientHeight===scrollHeight&&lodding!=="lodding"){
writeNew()
localStorage.setItem("lodding","lodding")
}
})
function writeNew(){
setTimeout(function(){
console.log("writeNew",max)
for(let i=0;i<20;i++)
{
document.body.append("writeNew"+max+"==="+ i +"\n\r")
}
max = max + 1
localStorage.setItem("lodding",false)
},1000)
}

底部刷新的问题

  1. 是否会重复刷新的问题?
  2. 如何判断到底部?
    // 监听滚动的函数
    window.addEventListener("scroll",function(){
    
    })
    
    let scrollHeight = document.documentElement.scrollHeight
    let scrollTop = document.documentElement.scrollTop
    let clientHeight = document.documentElement.clientHeight

图片

滚动到底部的document

滚动到底部检测如图

scrollHeight是页面高度,scrollTop是滚动的高度,clientHeight是视窗高度,当scrollTop+clientHeight==scrollHeight的时候,就是达到底部了。

滚动底部重复刷新问题

首先,为什么会重复刷新,滚动到底部的时候,加载内容需要一部分时间,当加载的过程中,再次滚动到底部,就会出现重复刷新。

如何解决?

    localStorage.setItem("lodding","lodding")
    if(localStorage.getItem("lodding")==="lodding"){
    	console.log("正在加载")
    }

当加载完成后,设置回去。

    localStorage.setItem("lodding",false)

关于刷新问题的完整示例

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment