Заменить все содержимое iframe
Есть ли способ заменить ENTIRE содержимое iframe с помощью Javascript (или JQuery)?
Например, если в моем iframe был следующий контент...
blah outside of html
<html>
<head>
</head>
<body>
<h1> my title </h1>
</body>
</html>
blah outside of html
.. Все это можно заменить на script:)
Лучшее, что я видел до сих пор, это:
$(youriframe).contents().find('html').html('your content here');
но это все равно не заменит содержимое вне html-тегов. У нас есть интересный сценарий, где мы должны заверить, что ВСЕ содержимое будет заменено.
ИЛИ создается новый iframe со свежим контентом и просто заменяет предыдущий iframe.
Нет комментариев о атрибуте src.
Ответы
Ответ 1
У меня такая же проблема, и если я использую такой код:
$(youriframe).contents().find('html').html('your content here');
Он отлично работает в Chrome или FireFox, но в IE8 ничего не будет показано или полоса прокрутки iframe не появится.
Если я использую метод Rachel, содержимое iframe будет таким же во всех браузерах:
<iframe>
<html>
<head>
</head>
<body>
</body>
</html>
</iframe>
есть ли другое решение?
Пробовал это:
var doc = document.getElementById(iframeId).contentWindow.document;
doc.open();
doc.write(iframeContent);
doc.close();
это работает на моем случае, как ie8, так и FF/chrome.
Ответ 2
Я предполагаю, что в этом случае у вас нет проблем с межсайтовыми скриптами... Удалось ли вам использовать contentWindow? Кажется, что-то вроде этого работает достаточно хорошо для меня:
iframe = document.getElementById('iframe_id');
iframe.contentWindow.document.open()
iframe.contentWindow.document.write(new_content_here);
Не моя идея, нашла здесь: Запись элементов в дочерний iframe с использованием Javascript или jQuery
Ответ 3
имеют похожий сценарий, в котором я каждый раз создаю новую строку iFrame с содержимым из другого домена.
Для этого я использую jQuery AJAX и PHP. PHP просматривает мою таблицу MySQL и получает URL-адрес iFrame, который я хочу загрузить; он генерирует HTML для iFrame, и я использую jQuery AJAX для замены этого содержимого.
Мой HTML выглядит примерно так:
<div class="xFrame">
<iframe id="xFrameWindow" name="xFrameWindow" src=""></iframe>
</div>
И мой вызов AJAX выглядит следующим образом:
function loadPage(record_id) {
$.ajax({
type: "POST",
url: "php/ajax_handler.php",
data: "action=makeIFrame&record_id=" + record_id,
success: function(msg){
$('.xFrame' ).html(msg);
}
});
}
Код заменяет HTML файл div, содержащий iFrame, с новым iFrame.
Надеюсь, что это (или что-то подобное) работает для вас.