Пустой iframe в диалоге jQuery - PullRequest
       4

Пустой iframe в диалоге jQuery

0 голосов
/ 06 ноября 2019

Я получил некоторую HTML-страницу за пределами моего домена, и я хотел бы показать ее в диалоговом окне jQuery, но содержимое в iframe пусто. Я включаю некоторые иностранные стили CSS, так что содержание HTML должно быть в iframe. Вот код JS.

var text = '<label>TEST Text</label><img src="/somaimage.jpg">';

var helpWrapper = document.createElement('div');
helpWrapper.setAttribute('id', 'help_wrapper');

var helpModal = document.createElement('iframe');
helpModal.setAttribute('id', 'help_iframe');

helpWrapper.appendChild(helpModal);

document.body.appendChild(helpWrapper);
helpModal.contentDocument.getElementsByTagName("html")[0].setAttribute('style', 'display:block;');
var helpBase = helpModal.contentDocument.createElement("base");
helpBase.setAttribute("href", "https://www.outsidedomain.com");
helpModal.contentDocument.getElementsByTagName("head")[0].appendChild(helpBase);
var iframedoc = helpModal.contentDocument || helpModal.contentWindow.document;
iframedoc.body.innerHTML = text;
// 1. test
jQuery("#help_wrapper").dialog({
  autoOpen: true,
  modal: true
});
// 2. test
jQuery("#help_wrapper").html(helpModal);

Что я не так делаю?

1 Ответ

0 голосов
/ 07 ноября 2019

ОК, после некоторых экспериментов я получил решение, которое очень просто. На первом этапе диалог должен быть подготовлен и готов к содержанию. После этого содержимое должно быть вставлено внутрь. Как этот рабочий код:

var $dialog = jQuery('<div />').dialog({
  autoOpen: false,
  modal: true,
  closeText: "",
  close: function (event, ui) {
    if ($dialog) {
      $dialog.dialog("close");
      $dialog.remove();
    }
  }
});
var helpIframe = document.createElement('iframe');
helpIframe.setAttribute('id', 'help_iframe');

$dialog.append(helpIframe);

helpIframe.contentDocument.getElementsByTagName("html")[0].setAttribute('style', 'display:block;');

var helpBase = document.createElement("base");
helpBase.setAttribute("href", "https://www.outsidedomain.com");
helpIframe.contentDocument.getElementsByTagName("head")[0].appendChild(helpBase);
helpIframe.contentDocument.body.innerHTML = text;

$dialog.dialog('open');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...