Как очистить содержимое IFRAME?


Как очистить содержимое элемента IFRAME с помощью javascript, не загружая в него пустую страницу?

Я могу выяснить, чтобы сделать это:iframe_element.src = "blank.html", но должен быть лучший, мгновенный, метод.

10 57

10 ответов:

about:blank

- это пустой URL-адрес. Это всегда ясно

вы можете установить исходный код страницы, и это понятно.

var iframe = document.getElementById("myiframe");
var html = "";

iframe.contentWindow.document.open();
iframe.contentWindow.document.write(html);
iframe.contentWindow.document.close();

протестировано в IE, Firefox и Chrome ... он сделал это:)

ваша техника является наиболее надежной. Это тот, который я использую сам. Иногда контент может быть доставлен по HTTPS, а использование about: blank может привести к появлению предупреждающих сообщений о том, что "вы хотите включить контент из небезопасного местоположения" или что-то в этом роде.

что-то мгновенное-это вопрос восприятия, однако если у вас есть один пробел.html-файл на вашем сайте настроен с длительным сроком действия кэша клиент будет получать страницу только один раз (не более один раз за сеанс).

или вы можете сделать это:

var iframe_element = window.frames['iframe_name'];
iframe_element.document.open();
iframe_element.document.close();

У меня были трудности с "about:blank" на страницах со многими IFrames. Это, кажется, не является допустимым местом в каждом браузере (я никогда не узнал наверняка, хотя). Во всяком случае, я доволен javascript:void(0);

вы также можете сделать это:

<html>
<head>
<script>
    var doc = null;
    window.onload = function() {
        alert("Filling IFrame");
        doc = document.getElementById("test");

        if( doc.document ) {
            document.test.document.body.innerHTML = "<h1>test</h1>"; //Chrome, IE
        }else {
            doc.contentDocument.body.innerHTML = "<h1>test</h1>"; //FireFox
        }

            setTimeout(function() { 
                alert("Clearing IFrame");

                if( doc.document ) {
                    document.test.document.body.innerHTML = ""; //Chrome, IE
                }else {
                    doc.contentDocument.body.innerHTML = ""; //FireFox
                }

            }, 1000);
        };
    </script>
</head>

<body>
    <iframe id="test" name="test">

    </iframe>
</body>
</html>

/ / сначала я получаю окно от его идентификатора.

var my_content = document.getElementById('my_iframe').contentWindow.document;

// затем я очищаю его, устанавливая тег body inner HTML в пустую строку.

my_content.body.innerHTML="";

// Теперь, когда я пишу свой новый контент, он не добавляется в конец тела, а тело iframe будет содержать только свежий контент.

my_content.write(new_content);

просто получить Iframe и удалить documentElement из него. Это окно будет пустым

 var frame = document.getElementById("YourFrameId"),
 frameDoc = frame.contentDocument || frame.contentWindow.document;
 frameDoc.removeChild(frameDoc.documentElement);
function getContentFromIframe(iFrameName)
{
    var myIFrame = document.getElementById(iFrameName);
    var content = myIFrame.contentWindow.document.body.innerHTML;

    //Do whatever you need with the content    
}

$("#iframe").оглавление.)(найти("тело").html (");