Отобразите диалоговое окно jQuery в родительском окне

У меня есть веб-сайт, который использует iframe. Сам iframe является содержанием веб-сайта. Теперь в iframe я хотел бы использовать Диалоговое окно jQuery. Однако, когда использование его, наложение и диалоговое окно только отображено в iframe не на родителе. Моему родительскому HTML определили следующий HTML для диалогового окна:

<div id="modalHolder"></div>

В моем iframe я использую следующий JavaScript, чтобы создать диалоговое окно и показать его.

dlg1 = $(window.parent.document.getElementById("modalHolder"));
dlg1 = dlg1.dialog({
    width: 300,
    height: 150,
    modal: true,
    autoOpen: false,
    resizable: false,
    closeOnEscape: false,
    draggable: false,
    overlay: 
    {
        backgroundColor: 'red',
        opacity: 0.65
    },
    open: function(event, ui) { $(".ui-dialog-titlebar-close").hide(); }
});

Для показа диалогового окна, я использую это:

dlg1.dialog('open');
15
задан vikasde 24 December 2009 в 16:35
поделиться

1 ответ

Поскольку функция диалога запущена в контексте ифрейма, она всегда будет создавать div-диалоги (как полупрозрачный div фона и div диалога) как дочерние элементы ифрейма. Несмотря на то, что вы забираете элемент из родительского документа, фактический скрипт всё равно выполняется в ифрейме. Если у вас есть Firefox и Firebug, вы должны иметь возможность использовать HTML-инспектор, чтобы увидеть, что происходит.

Я могу придумать только два решения:

  1. Использовать модифицированную версию диалоговой библиотеки jQuery. Я вовсе не рекомендую
  2. Переместить ваш JavaScript так, чтобы он выполнялся в контексте родительского документа.
3
ответ дан 1 December 2019 в 02:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: