javascript - 使用 JS/jQuery 禁用窗口垂直滚动的跨浏览器方法

标签 javascript jquery

当我鼠标悬停特定div时,我需要禁用窗口滚动,并在mouseout上启用它。但有必要保留滚动条,因此 overflow:hidden 不会有帮助。

我写了一些 JS,但是在 IE9 和 Opera 中存在 bug。

var win_scrolltop, is_mydiv_mouseovered = false;
$('#mydiv').hover(
    function(){
        win_scrolltop = $(window).scrollTop();
        is_mydiv_mouseovered = true;
    },
    function() {
        is_mydiv_mouseovered = false;
    }
)
$(window).scroll(function() {
    if (is_mydiv_mouseovered) $(window).scrollTop(win_scrolltop);
});

最佳答案

我找到了this答案,摆弄了一下,结果是这样的:

var scrollThing = {
    // 33: PageUp, 34: PageDown, 35: End, 36: Home, 37: Left, 38: Up, 39: Right, 40: Down
    keys: [33, 34, 35, 36, 37, 38, 39, 40],
    preventDefault: function(e) {
        e = e || window.event;
        if (e.preventDefault) {
            e.preventDefault();
        }
        e.returnValue = false;
    },
    keydown: function(e) {
        for (var i = scrollThing.keys.length; i--;) {
            if (e.keyCode === scrollThing.keys[i]) {
                scrollThing.preventDefault(e);
                return;
            }
        }
    },
    disable: function() {
        if (window.addEventListener) {
            window.addEventListener('DOMMouseScroll', scrollThing.preventDefault, false);
        }
        window.onmousewheel = document.onmousewheel = scrollThing.preventDefault;
        document.onkeydown = scrollThing.keydown;
    },
    enable: function() {
        if (window.removeEventListener) {
            window.removeEventListener('DOMMouseScroll', scrollThing.preventDefault, false);
        }
        window.onmousewheel = document.onmousewheel = document.onkeydown = null;
    }
}
$('#mydiv').hover(scrollThing.disable, scrollThing.enable);

工作中example .

关于javascript - 使用 JS/jQuery 禁用窗口垂直滚动的跨浏览器方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8310988/

相关文章:

javascript - 将 dojo 工具提示对话框添加到每个表格单元格

jquery - Grooveshark 公共(public) API - 未找到方法

jquery - "Active"Rails 4 中 belongs_to 模型的导航类

javascript - Firestore 抛出 'onSnapshot() requires between 1 and 4 arguments'

javascript - Fabric.js - 无法动态设置属性

javascript - jquery 文件命令代码错误?

javascript - jQuery 范围(?)问题与最小案例演示

javascript - 这些选择器中哪一个可能更快?

jquery - jQuery 模板中的多个测试条件 "if"

javascript - 无法在 javascript slider 中添加指向图像的单独链接