Вставьте контент в iFrame
Я пытаюсь вставить какой-либо контент в "пустой" iFrame, но ничего не вставляется.
HTML:
<iframe id="iframe"></iframe>
JS:
$("#iframe").ready(function() {
var $doc = $("#iframe").contentWindow.document;
var $body = $("<body>").text("Test");
$body.insertAfter($doc);
});
Я звоню ready
функция, поэтому я не понимаю, почему он не вставляет.
4 ответа
Вам действительно не нужен jQuery для этого:
var doc = document.getElementById('iframe').contentWindow.document;
doc.open();
doc.write('Test');
doc.close();
Если вам абсолютно необходимо использовать JQuery, вы должны использовать contents()
:
var $iframe = $('#iframe');
$iframe.ready(function() {
$iframe.contents().find("body").append('Test');
});
Пожалуйста, не забывайте, что если вы используете jQuery, вам нужно подключиться к функции DOMReady следующим образом:
$(function() {
var $iframe = $('#iframe');
$iframe.ready(function() {
$iframe.contents().find("body").append('Test');
});
});
Это должно делать то, что вы хотите:
$("#iframe").ready(function() {
var body = $("#iframe").contents().find("body");
body.append('Test');
});
Проверьте это JSFiddle для работы демо.
Изменить: Конечно, вы можете сделать это одним стилем линии:
$("#iframe").contents().find("body").append('Test');
Подождите, вам действительно нужно отрендерить его с помощью javascript?
Имейте в виду, что в HTML5 есть srcdoc
, который может сделать это за вас! (Недостаток в том, что IE/EDGE еще не поддерживает его https://caniuse.com/)
Посмотреть здесь [srcdoc
]: https://www.w3schools.com/tags/att_iframe_srcdoc.asp
Следует также отметить, что если вы хотите избежать вмешательства кода js внутри и снаружи, вам следует подумать об использованииsandbox
Режим.
Посмотреть здесь [sandbox
]: https://www.w3schools.com/tags/att_iframe_sandbox.asp
Вы можете ввести (например) текст из div в iFrame:
var $iframe = $('#iframe');
$iframe.ready(function() {
$iframe.contents().find("body").append($('#mytext'));
});
и divs:
<iframe id="iframe"></iframe>
<div id="mytext">Hello!</div>
и JSFiddle demo: ссылка
Если вы хотите, чтобы все CSS
вот на вашей веб-странице в вашем IFrame
, попробуй это:
var headClone, iFrameHead;
// Create a clone of the web-page head
headClone = $('head').clone();
// Find the head of the the iFrame we are looking for
iFrameHead = $('#iframe').contents().find('head');
// Replace 'iFrameHead with your Web page 'head'
iFrameHead.replaceWith(headClone);
// You should now have all the Web page CSS in the Iframe
Удачи.