Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery固定滚动对话框在IE中出现故障_Javascript_Jquery_Html_Css - Fatal编程技术网

Javascript jQuery固定滚动对话框在IE中出现故障

Javascript jQuery固定滚动对话框在IE中出现故障,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我有一个对话框,当用户单击一个图像时,我会打开它,当对话框打开时,我会禁用对文档的滚动。我遇到了一个问题,因为IE的“平滑滚动”选项,如果我禁用滚动,然后你尝试在IE中滚动,你会得到一个非常闪烁/闪烁的屏幕,直到你停止滚动。我试图实现另一个用户建议来解决这个问题,但似乎没有帮助。有人知道如何解决这个问题吗 对话框代码: function ShowLightBox(src, width, height) { $('#imgLight').attr('src', src); $('#

我有一个对话框,当用户单击一个图像时,我会打开它,当对话框打开时,我会禁用对文档的滚动。我遇到了一个问题,因为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);
    };
}

我认为更好的解决方案是在滚动元素(可能是html>body)上临时设置“overflow:hidden”。我想这就是Steam在长提要中单击Steam社区条目时所做的,举个例子。@Katana314好主意。这工作做得很好!