Установить iframe innerHTML без загрузки страницы в нем (с помощью jquery) - PullRequest
6 голосов
/ 22 ноября 2011

Я хочу установить содержимое iframe динамически, когда в iframe ранее не было загружено ни одной страницы.

Я делаю это:

iframe = $('<iframe id="thepage"></iframe>');

iframeHtml = 'iframeHtml';
$('body').append(iframe);

iframe
.contents()
.html(iframeHtml);

Но это не работаетHTML-код еще пуст.

Ответы [ 5 ]

21 голосов
/ 22 ноября 2011

лучший способ заполнить содержимое кадра - document.write

var dstFrame = document.getElementById('yourFrameId');
var dstDoc = dstFrame.contentDocument || dstFrame.contentWindow.document;
dstDoc.write(yourHTML);
dstDoc.close()

UPD: это

var iFrame = $('<iframe id="thepage"></iframe>');
$('body').append(iFrame);

var iFrameDoc = iFrame[0].contentDocument || iFrame[0].contentWindow.document;
iFrameDoc.write('<p>Some useful html</p>');
iFrameDoc.close();
8 голосов
/ 13 сентября 2013

Если вы хотите избежать использования document.write, что, как правило, больше не рекомендуется, вы можете получить содержимое кадра, чтобы добавить содержимое:

iframe = $('<iframe id="thepage"></iframe>')
iframeHtml = 'iframeHtml'
$('body').append(iframe)
iframe.contents().find('body').html(iframeHtml)
5 голосов
/ 19 августа 2018

Используя JQuery, вы можете редактировать атрибут iframe srcdoc , передав ему HTML в виде строки:

$('#iframe_id').attr("srcdoc", htmlString);
3 голосов
/ 06 сентября 2015
iframe = $('<iframe id="thepage"></iframe>');

iframeHtml = 'iframeHtml'; $('body').append(iframe);

iframe .contents() .html(iframeHtml);

причина, по которой он не работает, состоит в том, что contents() возвращает document объект, а html() работает только на HTMLElemnt объектах, html() в основном является оболочкой innerHTML свойство и document не имеют такого свойства.

0 голосов
/ 08 июля 2019

Используйте метод jQuery contents () Вы можете использовать метод jQuery contents () в сочетании с методами find (), val () и html () для вставки текста или HTML в тело iframe.

var EditFrame = $("#EditWindow").contents().find('body');
var message = "Your message which needs to show in Iframe";
EditFrame.html(message);

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