Как очистить содержимое IFRAME?
Как очистить содержимое элемента IFRAME с помощью javascript, не загружая в него пустую страницу?
Я могу выяснить, чтобы сделать это:iframe_element.src = "blank.html"
, но должен быть лучший, мгновенный, метод.
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);