在IE中,jQuery固定滚动对话框很麻烦

时间:2015-06-26 17:37:49

标签: javascript jquery html css

我有一个对话框,当用户单击图像时我会拉出该对话框,并且在对话框打开时禁用对文档的滚动。由于IE的“平滑滚动”选项,我遇到了一个问题,如果我禁用滚动,那么你尝试在IE中滚动,你会得到一个非常小的/闪烁的屏幕,直到你停止滚动。我试图实现另一个用户建议来解决这个问题,但它似乎没有帮助。有谁知道如何解决这个问题?

对话框代码:

function ShowLightBox(src, width, height) {
    $('#imgLight').attr('src', src);
    $('#imgLight').addClass('lightboxZoom');
    $('#imgLight').removeClass('lightboxPointer');
    if (detectIE()) {
    DisableIEGlitchScroll();
    }else{
    disableScrolling();
    }

    $("#lightbox").dialog({
        modal: true,
        resizable: false,
        width: width,
        height: height,
        closeOnEscape: true,
        draggable: false,
        open: function () {
            $('.ui-icon').text('');
            $('.ui-widget-overlay').bind('click', function () { //close dialog if user clicks on the modal area
                $('#lightbox').dialog('close');
            })
        },
        close: function () {
            enableScrolling();
        }
    });
}

支持功能:

function disableScrolling() { //lock scrolling on modal page
    var x = window.scrollX;
    var y = window.scrollY; 
    window.onscroll = function () { window.scrollTo(x, y); };
}

function enableScrolling() {
    window.onscroll = function () { };
}

function DisableIEGlitchScroll(){

    window.onscroll = function () {

        var wheelDelta = event.wheelDelta;

        var currentScrollPosition = window.pageYOffset;
        window.scrollTo(0, currentScrollPosition - wheelDelta);
    };
}

0 个答案:

没有答案