Подтвердить что ты не робот

Заменить все содержимое 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.

4b9b3361

Ответ 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.

Надеюсь, что это (или что-то подобное) работает для вас.