jQuery добавить iFrame с контентом - PullRequest
13 голосов
/ 06 января 2011

У меня такая проблема.Мне нужно открыть iframe в fancybox (мне нужен iframe, потому что мне нужно просматривать ссылки в открытом документе и оставаться в fancybox), но я хочу поместить контент в iframe из переменной, а не через атрибут src (у меня уже есть контентпо AJAX (мне нужно сделать некоторые проверки содержимого перед тем, как поместить его в iframe, поэтому нет способа сделать это вместо AJAX-запроса), поэтому мне не нужен еще один запрос).

Fancybox неразрешить использование атрибута 'content' с типом ':' iframe '.Поэтому я решил создать iframe динамически, вставить в него свой контент и показать iframe by fancybox в виде обычного блока.

Это похоже на

jQuery('<iframe id="someId"/>').appendTo('body').contents().find('body').append(content);

И чем

jQuery('<iframe id="someId"/>').fancybox();

Но первая часть не работает.Я вижу iframe, который был добавлен на страницу, но без какого-либо содержимого (у меня полная HTML-страница в переменном содержимом, но когда я пытаюсь добавить только какой-то текст, это тоже не работает).

Что ясделали неправильно?Может быть, есть другой способ сделать то, что мне нужно?

Спасибо за ваш совет!

Ответы [ 3 ]

18 голосов
/ 29 октября 2011

Ваша проблема будет решена после вызова готового метода jquery, как этот

<script type="text/javascript">
$(function(){
$('<iframe id="someId"/>').appendTo('body');
$('#someId').contents().find('body').append('<b>hello sajjad</b>');
});
</script>

<iframe id="someId"></iframe>
4 голосов
/ 06 января 2011

Что произойдет, если вы разделите эту строку на две части:

jQuery('<iframe id="someId"/>').appendTo('body');
jQuery('#someId').contents().find('body').append(content);

Затем измените ваш селектор на правильный, прежде чем он создавал новый iframe, не вставляя его в DOM и вызывающий fancybox на нем, однако это должно работать:

jQuery('#someId').fancybox();
2 голосов
/ 09 декабря 2012

прошло время на этот вопрос, но вот другое решение:

var ifrm = document.createElement("iframe");
document.body.appendChild(ifrm);
ifrm.id = "someId"; // optional id
ifrm.onload = function() {
    // optional onload behaviour
}
setTimeout(function() {
    $(ifrm).contents().find("body").html(content);
}, 1);
...