JQuery UI диалог и наш самый дорогой друг, ie6 - PullRequest
1 голос
/ 01 мая 2010

Я использую диалог 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');
            });
        });

Я уже использую плагин bgiframe для jquery, который является ключевым для проблем с наложением ie6. Но это кажется не связанным с этим. Кто-нибудь видел это раньше и нашел обходной путь?

Ответы [ 2 ]

2 голосов
/ 01 мая 2010

Я видел такое поведение раньше, и оно обычно вызывается наложением. При использовании параметра {modal: true} создается наложение и отображается с поддержкой bgiframe , если подключаемый модуль загружен.

Прежде всего, попробуйте повернуть {modal: false} и посмотрите, если вы не получаете снос страницы, тогда мы знаем, что это наложение.

Есть несколько вещей, чтобы проверить, является ли это виновником;

  • Убедитесь, что стили для оверлея загружаются правильно, вам нужно включить jquery-ui dialog.css
  • попробуйте поэкспериментировать с position: и float: styles
  • попробуйте переместить разметку диалога чуть выше тега , чтобы модальное наложение корректно исчезло.
0 голосов
/ 01 мая 2010

У меня была похожая проблема в одной точке.

$('.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
});

То, что нужно сделать выше, это взять текущие координаты прокрутки и сохранить их Как только диалоговое окно откроется, вы затем вернетесь к предыдущей позиции в памяти. Должно быть почти мгновенно и незаметно для пользователя.

...