Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.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
Jquery ui jQuery UI对话框:如果对话框高度超过窗口高度,垂直滚动将不正确_Jquery Ui_Jquery Ui Dialog - Fatal编程技术网

Jquery ui jQuery UI对话框:如果对话框高度超过窗口高度,垂直滚动将不正确

Jquery ui jQuery UI对话框:如果对话框高度超过窗口高度,垂直滚动将不正确,jquery-ui,jquery-ui-dialog,Jquery Ui,Jquery Ui Dialog,以下是代码: <script type="text/javascript"> $(function(){ var dialogOptions = { title: "Header", autoOpen: false, modal: true, width: 400, height: 1000 }; $(".wn

以下是代码:

<script type="text/javascript">
    $(function(){
        var dialogOptions = {
            title: "Header",
            autoOpen: false,
            modal: true,
            width: 400,
            height: 1000
        };
        $(".wnd").dialog(dialogOptions);
        $("#btn").click(function(){ $(".wnd").dialog("open"); });
    });
</script>

<style>
    .wnd {background:yellow;height:900px;width:300px;}
</style>

<div class="wnd"></div>
<button id="btn">click me</button>

$(函数(){
变量对话框选项={
标题:“标题”,
自动打开:错误,
莫代尔:是的,
宽度:400,
身高:1000
};
$(“.wnd”).dialog(dialogOptions);
$(“#btn”)。单击(函数(){$(“.wnd”)。对话框(“打开”);});
});
.wnd{背景:黄色;高度:900px;宽度:300px;}
点击我
当对话框被打开并且高于主窗口时,会有一个侧滑块,如果您尝试使用鼠标光标拖动它,它不会向下滑动(看起来像是锁定的)

但当按下键盘上的按钮(箭头)或用鼠标滚轮向下滚动时,它滑动良好

这是

如何激活侧滑块


谢谢

清洁的解决方案如下:


我正在做的是包装jQuery UI overlay create方法,以关闭阻止滚动正常工作的事件。

另一种无法使用窗口滑块的方法是在对话框窗口本身上启用滑块。如果在对话框的最大高度上放置一个上限,这些将自动显示,但对于某些版本的jQueryUI来说可能有点棘手

至少在我所使用的jQueryUI版本(1.9)上,我需要自己指定最大高度,因为应该能够根据使用的maxHeight属性不起作用*

以下是有效的方法:

$("#dialog").dialog({
    modal: true,
    width: "auto",
    height: "auto"
    /* maxHeight: whatever won't work, */
}).css("maxHeight", window.innerHeight-120);
我从窗口的高度减去120像素,以适应对话框窗口的页眉和页脚部分及其“ok”按钮


*如果试图调整对话框的大小,最大高度实际上会生效,但不会在显示时生效。

由于对话框是模态的,所以滚动被禁用。您可以将
modal:false设置为允许再次滚动。但是你想要一个模态对话框吗?@andyb,如果对话框本身比窗口高,那么缺少主窗口的滚动会限制它。另一种可能是在对话框上强制滚动条,但在某些情况下,滚动整个窗口会是一种更好的体验;非常感谢分享这个。我只在Chrome上遇到了这个问题,这解锁了滚动条,我还没有注意到任何负面后果。仅供参考,虽然这是一个旧答案,但它仍然是IMO上最好的答案。但是,截至目前(2017/18)maxHeight参数现在可以很好地在.dialog对象上实现这一点。使用maxHeight参数对我来说很有效,但这个答案没有。。即使它应该。。。。