【发布时间】:2012-12-28 01:43:01
【问题描述】:
【问题讨论】:
标签: javascript jquery mouseevent mousewheel
【问题讨论】:
标签: javascript jquery mouseevent mousewheel
在answer to your original question 的基础上,您可以执行以下操作:
var noscroll = document.getElementById('noscroll');
var locked, lockedX, lockedY;
noscroll.addEventListener('mouseover', function (){
locked = true;
lockedX = window.scrollX;
lockedY = window.scrollY;
}, false);
noscroll.addEventListener('mouseout', function (){
locked = false;
}, false);
// changes
$(window).on("mousewheel keydown", function(e){
if(locked === true){
return false;
}
});
$(window).on("scroll", function(e){
if(locked === true){
// add fallback here for other scenarios
}
});
我正在使用 jQuery 来简化/标准化事件处理。
请注意,防止关键事件可能是不可取的;我将其包括在内是为了展示如何防止箭头键(您也可以检查特定的键码)。
我还为mousewheel/keydown 未处理的场景添加了一个通用后备处理程序。
这可能对触摸事件不起作用(或根本不起作用)。最重要的是,确保它不会让您的用户感到困惑或删除预期的功能。
如果你只想处理鼠标滚轮,可能会简单很多:
$("#noscroll").on("mousewheel", function(e){
return false;
});
演示:http://jsfiddle.net/HUGTL/3/。但是,这不适用于关键事件。
【讨论】:
onmousewheel/keydown)。滚动开始后,我找不到平滑它的方法。