首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >试图在用户滚动时执行js代码。

试图在用户滚动时执行js代码。
EN

Stack Overflow用户
提问于 2013-04-06 19:28:48
回答 2查看 168关注 0票数 0

当滚动条从顶部移动到任何其他高度时,我正在尝试执行一些js代码,现在它们被警报所取代。

因此,当用户第一次滚动时,将触发“滚动”警报。如果用户回滚到顶部,它会重置并发出“返回到顶部”的警报。

我试着用scrollTop、scrollHeight和clientHeight来做这件事,但是它似乎没有触发滚动的警报。

每次用户滚动时,我都不会试图触发警报,只是在第一个滚动页上。但是,如果用户滚动回顶部,则会重新设置并触发新的警报。

因此,如果他们从顶部滚动到X,警告“滚动”火焰。如果他们从X滚动到Y,什么都不会发生。如果从X或Y滚动到顶部,“回到顶部”就会触发。然后,如果从顶部滚动到X或Y,就会重新设置并触发警报“滚动”(再次)。

这是我的代码:

代码语言:javascript
运行
复制
var body = $('body');
var scrollTop = body.scrollTop;
var difference = body.scrollHeight - body.clientHeight;
var percentScrolled = (scrollTop/difference)*100;
if(percentScrolled > 0){
alert("scrolled!");
}

更新

由于其中的一条注释,我现在已经开始工作了,当滚动回顶部时,它会触发“回到顶”警报,但是在每个滚动页上都会触发“滚动”警报。只有当滚动条从顶部移动到除顶部以外的任何其他位置时,我才能获得“滚动”警报?

以下是代码:

代码语言:javascript
运行
复制
window.onscroll = function () { 
    var doc = document.body, 
    scrollPosition = doc.scrollTop,
    pageSize = (doc.scrollHeight - doc.clientHeight),
    percentageScrolled = Math.floor((scrollPosition / pageSize) * 100);

    if(percentageScrolled == 0){
        alert("back at top");
    }
    else if(percentageScrolled > 0){
        alert("scrolled");
    }
};
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-06 20:43:15

使用javascript自动返回顶部的例子,在用户滚动x%之后。正如noidea3p5所问的,你到底想做什么?

代码语言:javascript
运行
复制
var AllowedPercentageToScroll = 20;
window.onscroll = function () { 
    var doc = document.body, 
    scrollPosition = doc.scrollTop,
    pageSize = (doc.scrollHeight - doc.clientHeight),
    percentageScrolled = Math.floor((scrollPosition / pageSize) * 100);

    if(percentageScrolled > AllowedPercentageToScroll){
       window.scrollTo(0,0); // back to top
    }
    else if(percentageScrolled > 0){ // if user starts to scroll it will trigger
        //do whatever you like, dont recommend alert though
    }
};

编辑:在顶部显示状态,并在开始滚动时显示滚动活动。

代码语言:javascript
运行
复制
window.onscroll = function () { 
    var doc = document.body, 
    scrollPosition = doc.scrollTop,
    pageSize = (doc.scrollHeight - doc.clientHeight),
    percentageScrolled = Math.floor((scrollPosition / pageSize) * 100);

    if(percentageScrolled == 0){
       document.getElementById("status").innerHTML = "Your at the top";    
    }
    else if(percentageScrolled > 1){
        document.getElementById("status").innerHTML = percentageScrolled + "%";      
    }
};

</script>
<body>
<div style="width: 100%; position: fixed; top:0px; background-color:#c0c0c0;">
   Scroll Position: <span id="status">0%</span>
</div>
票数 0
EN

Stack Overflow用户

发布于 2013-04-06 19:55:54

不确定你想要做什么,但听起来你可能想要某种标志:

代码语言:javascript
运行
复制
var body = $('body');
var scrollTop = body.scrollTop;
var difference = body.scrollHeight - body.clientHeight;
var percentScrolled = (scrollTop/difference)*100;

if(percentScrolled > 0 && this.leftzero === undefined){
   this.leftzero = true;
   alert("scrolled!");
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15855100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档