1

我正在将 jquery ui 对话框用于模态弹出对话框。它在 Firefox/Chrome 中运行良好,但在 ie6 中很糟糕。

问题: 当我在 ie6 中显示对话框时,浏览器窗口变大并自动向下滚动到底部。高度增加和自动向下滚动等于 jquery 对话框的高度。

我可以向上滚动,然后像往常一样使用对话框,但是它使窗口变大并下降的行为令人发狂地不可接受。

这是我启动窗口的方式:

<div id="dialogWindow"></div>

...

       $(document).ready(function() {
            var $dialog = $("#dialogWindow").dialog({
                autoOpen: false,
                modal: true,
                minWidth: 560,
                width: 560,
                resizable: "true",
                position: "top"
            });

            $('.addButton').click(function(e) {
                e.preventDefault();
                $('#dialogWindow').load('http://myurl');
                $dialog.dialog('open');
            });
        });

我已经在为 jquery 使用 bgiframe 插件,这是 ie6 覆盖问题的关键。但这似乎与此无关。有没有人见过这个并找到解决方法?

4

2 回答 2

2

我以前见过这种行为,它通常是由覆盖引起的。当您使用 {modal: true} 选项时,如果加载了插件,则会使用bgiframe支持创建和呈现叠加层。

首先,试着打开 {modal: false} 看看你是否没有出现页面爆裂,那么我们知道它是覆盖。

有几件事要检查这是否是罪魁祸首;

  • 检查覆盖的样式是否正确加载,您需要包含 jquery-ui dialog.css
  • 尝试使用 position: 和 float: 样式
  • 尝试将对话框标记移动到 </body> 标记上方,让模态叠加层正确转义。
于 2010-04-30T23:39:53.710 回答
0

我曾经遇到过类似的问题。

$('.addButton').click(function(e) {
    e.preventDefault();
    $('#dialogWindow').load('http://myurl');
    var y = window.pageYOffset;
    var x = window.pageXOffset
    $dialog.dialog('open');
    window.scrollTo(x, y); // horizontal and vertical scroll targets
});

上面应该做的是获取您当前的滚动坐标并保存它们。一旦对话框打开,您就可以滚动回内存中的先前位置。应该是即时的,用户看不到。

于 2010-04-30T20:53:48.553 回答