Javascript 是否有办法在滚动事件之前采取行动?
所以我发现Javascript 是否有办法在滚动事件之前采取行动?,javascript,jquery,html,css,Javascript,Jquery,Html,Css,所以我发现 e.preventDefault() e.stopPropagation(); return false; 如果触发事件是滚动,则不执行任何操作 但是,是否有任何方式可以按触发顺序“击败”滚动事件 body{ width: 100%; height: 2000px; } $(document).on('scroll', function(e){ $('body').css('overflow','hidden'); setTimeout(functio
e.preventDefault()
e.stopPropagation();
return false;
如果触发事件是滚动,则不执行任何操作
但是,是否有任何方式可以按触发顺序“击败”滚动事件
body{
width: 100%;
height: 2000px;
}
$(document).on('scroll', function(e){
$('body').css('overflow','hidden');
setTimeout(function(){
$('body').css('overflow','auto')
},100)
});
上述代码不起作用,触发事件触发器,但每次隐藏溢出之前文档都会滚动。但是,如果可以在事件传播之前隐藏溢出,那么这将起作用
这可能吗
我对防止滚动不感兴趣,我实际上在滚动事件中有元素移动的位置。在Firefox中,事情没有那么明显,但是在chrome(尤其是IE)中,移动显然发生在滚动之后。我不确定我是否完全理解了你的问题。是否要在用户尝试滚动时禁用滚动?默认情况下,当我们只需滚动鼠标滚轮时,浏览器似乎会以114px的速度滚动。因此,无论我们做什么,它都会在mousewheel事件中按此数量滚动窗口。如果您想禁止滚动,可以使用
$(window.scrollTop(myvalue)
强制窗口保持在特定的滚动位置。例如:
var currpos = $(window).scrollTop();
$(document).on('scroll', function(e){
$('body').css('overflow','hidden');
$(window).scrollTop(currpos);
setTimeout(function(){
$('body').css('overflow','auto')
},100)
});
您需要处理以下事件:
- 滚轮(使用鼠标滚轮时)
- 鼠标向下(单击要滚动的文档的滚动条时)
- 向下键(ctrl+home、ctrl+hend、向下向上箭头、向下键和向上键:键盘滚动)
$(文档).on('wheel mousedown keydown',函数(e){
如果(e.type=='wheel'| | e.target.tagName=='HTML'||
(e.type='keydown'&&(e.ctrlKey&&(e.keyCode==36 | | e.which==35))||
(!e.ctrlKey&&(e.keyCode==33 | | e.which==34 | | e.which==38 | | e.which==40)))
) {
console.log(e.type+'event');
//您可能希望阻止滚动:添加下一行+返回;
//
//e、 预防默认值();
$('body').css('overflow','hidden');
setTimeout(函数(){
$('body').css('overflow','auto'))
},100)
}
});代码>
正文{
宽度:100%;
高度:2000px;
}