当滚动条达到页面高度的一定百分比时,如何触发JavaScript函数

当滚动条达到页面高度的一定百分比时,如何触发JavaScript函数,javascript,scrollbar,Javascript,Scrollbar,我正在寻找一种用纯JavaScript编写的解决方案,它可以在页面滚动的某个百分比(比如80%)触发JS函数。我希望在没有750行代码或使用jQuery的情况下完成类似的工作 我假设我将确定窗口的高度,然后在滚动点大于高度的80%时触发回调 这里的其他要求是,我只希望它触发一次。我所关心的另一个问题是不断轮询滚动百分比的潜在性能问题。这是一个合理的担忧吗 您可以使用onscroll 功能触发器克罗尔(ev){ if(window.pageYOffset>400)警报('用户至少滚动了400像素!

我正在寻找一种用纯JavaScript编写的解决方案,它可以在页面滚动的某个百分比(比如80%)触发JS函数。我希望在没有750行代码或使用jQuery的情况下完成类似的工作

我假设我将确定窗口的高度,然后在滚动点大于高度的80%时触发回调

这里的其他要求是,我只希望它触发一次。我所关心的另一个问题是不断轮询滚动百分比的潜在性能问题。这是一个合理的担忧吗

您可以使用onscroll

功能触发器克罗尔(ev){ if(window.pageYOffset>400)警报('用户至少滚动了400像素!');}window.onscroll=trigerScroll

编辑:

您可以像这样获得文档高度

var body = document.body,
    html = document.documentElement;

var height = Math.max( body.scrollHeight, body.offsetHeight, 
                       html.clientHeight, html.scrollHeight, html.offsetHeight );
来源:

您可以使用onscroll

功能触发器克罗尔(ev){ if(window.pageYOffset>400)警报('用户至少滚动了400像素!');}window.onscroll=trigerScroll

编辑:

您可以像这样获得文档高度

var body = document.body,
    html = document.documentElement;

var height = Math.max( body.scrollHeight, body.offsetHeight, 
                       html.clientHeight, html.scrollHeight, html.offsetHeight );

来源:

一种在滚动时每500毫秒检查一次页面滚动的方式,并且只运行一次:

var throttledListener=节流(scrollListener,500);
addEventListener('scroll',throttledListener);
功能节流阀(func,delay){//允许[func]每[delay]毫秒运行一次
var func=函数绑定(func),
last=日期。现在();
返回函数(){
if(Date.now()-last>delay){
func();
last=日期。现在();
}
}
}
函数scrollListener(){
console.log('scrolled');
var阈值=document.body.clientHeight*0.6;
如果(window.pageYOffset>=阈值){
警报(“用户滚动到阈值;侦听器已删除”);
removeEventListener('scroll',throttledListener);
}
}

toll div
一种在滚动时每500毫秒检查一次页面滚动的方式,并且只运行一次:

var throttledListener=节流(scrollListener,500);
addEventListener('scroll',throttledListener);
功能节流阀(func,delay){//允许[func]每[delay]毫秒运行一次
var func=函数绑定(func),
last=日期。现在();
返回函数(){
if(Date.now()-last>delay){
func();
last=日期。现在();
}
}
}
函数scrollListener(){
console.log('scrolled');
var阈值=document.body.clientHeight*0.6;
如果(window.pageYOffset>=阈值){
警报(“用户滚动到阈值;侦听器已删除”);
removeEventListener('scroll',throttledListener);
}
}

toll div
你的代码片段不适合我。是我正在使用的代码笔。我试着让它只是
console.log()
滚动,但它看起来不像是在触发。
window.onscroll=trigerScroll()
应该是
window.onscroll=trigerScroll
你的代码片段对我不起作用。是我正在使用的代码笔。我试着让它只是
console.log()
滚动,它看起来不像是在触发。
window.onscroll=trigerScroll()
应该是
window.onscroll=trigerScroll