You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JavaScript滚动触发函数执行后停止该函数?

解决滚动到底部重复弹出提示的问题

原代码的问题在于trigger变量是在滚动事件函数内部声明的,每次触发滚动事件时,这个变量都会被重新初始化为true——哪怕之前已经把它设为false,下次滚动时也会变回初始值,导致提示重复弹出。

下面提供两种可行的解决方案:

方案一:将触发状态变量移到全局作用域

把trigger变量放在滚动事件函数外部,这样它只会被初始化一次,触发提示后设置为false,后续滚动就不会再执行提示逻辑:

let trigger = true;
window.onscroll = function() {
  if (trigger && window.innerHeight + window.scrollY >= document.body.offsetHeight) {
    trigger = false;
    alert('You finish reading!');
  }
};

方案二:触发后移除滚动事件监听

直接在触发提示后,移除滚动事件的监听函数,这样后续的滚动操作就不会再触发这个逻辑,性能更优:

function handleScroll() {
  if (window.innerHeight + window.scrollY >= document.body.offsetHeight) {
    alert('You finish reading!');
    window.removeEventListener('scroll', handleScroll);
  }
}
window.addEventListener('scroll', handleScroll);

内容的提问来源于stack exchange,提问作者hsl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 16:35:27