gpt4 book ai didi

javascript - 如何区分通过鼠标滚动和在 JavaScript 中以编程方式滚动?

转载 作者:数据小太阳 更新时间:2023-10-29 04:13:04 24 4
gpt4 key购买 nike

我通过更改 Javascript 中的 scrollLeft 属性来滚动溢出的 DIV 的内容:

setInterval(function(){
$('#scrollbox').scrollLeft($('#scrollbox').scrollLeft()+1);
}, 50);

但是,我想在用户使用鼠标自己滚动内容时立即停止此操作。我尝试使用滚动事件检测到这一点

$('#scrollbox').scroll(function(){...});

但是,我上面的自动滚动也会触发该事件。我如何区分这一点并仅对用户启动的滚动使用react? (或者:我怎样才能阻止上面的代码触发滚动事件?这也可以解决问题)

最佳答案

您可以使用 .hover() :当鼠标悬停在滚动框元素上时停止滚动的函数:

http://jsfiddle.net/bGHAH/1/

setInterval(function(){
if(!mouseover)
{
$('#scrollbox').scrollLeft($('#scrollbox').scrollLeft()+1);
}
}, 50);

var mouseover = false;
$('#scrollbox').hover(function(){
mouseover = true;
},function(){
mouseover = false;
});

编辑

根据您的评论,我设法从以下站点找到了一个 jquery 插件:special scroll events for jquery .

此插件包含一个事件,该事件尝试根据上次滚动步骤与进行检查之间耗时段来确定滚动是否已停止。

为了让它工作,我需要将你的间隔减慢到刚好超过插件使用的延迟,该延迟为 310 毫秒。这样做意味着我必须增加滚动步长以使其明显移动。

这是链接:

http://jsfiddle.net/EWACn/1/

代码如下:

var stopAutoScroll = false;

$(document).ready(function(){

setInterval(function(){
if(!stopAutoScroll)
{
$('#status').html('scrolling');
$('#scrollbox').scrollLeft($('#scrollbox').scrollLeft()+10);
}else{
$('#status').html('not scrolling');
}
}, 310);

$('#scrollbox').bind('scrollstart', function(e){
stopAutoScroll = true;
});

$('#scrollbox').bind('scrollstop', function(e){
stopAutoScroll = false;
});

});

希望这对您有所帮助。

关于javascript - 如何区分通过鼠标滚动和在 JavaScript 中以编程方式滚动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7178863/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com