如何替换现有的iframe而不是将其附加到文档正文?

时间:2013-01-11 14:49:35

标签: iframe appendchild

在渲染iframes时,我使用代码:

ifrm = document.createElement("IFRAME");
ifrm.style.width = "100%";
ifrm.style.height = 600+"px";
function makeFrame() {
document.body.appendChild(ifrm);
}

但是,每当我调用函数iframes时,这会在makeFrame()下方追加makeFrame()。所以,如果我打电话给iframes(比如说​​三次),那么我会比前一个提高三个{{1}}。如何防止这种情况并替换现有的而不是追加到最后一个?

3 个答案:

答案 0 :(得分:0)

创建一个div。假设div id是iframecontainer 所以你的代码应该是:

<div id="iframecontainer">
<!-- Iframe goes here -->

</div>

现在只需使用javascript getElementById并在附加iframe之前将innerHTML设置为“”。

答案 1 :(得分:0)

最简单的答案:

如果您想尽可能少地更改代码,并且您确定在任何给定时间内您只能在页面上只有一个iframe

function makeFrame() {
oldiframe = document.getElementsByTagName("IFRAME")[0] 
// getElementsByTagName will return an array (a list). 
// Adding [0] will return the first (and, under our assumptions, only) element
ifrm = document.createElement("IFRAME");
ifrm.style.width = "100%";
ifrm.style.height = 600+"px";
document.body.replaceChild(ifrm, oldiframe);
}

答案 2 :(得分:0)

嗨@mikemxm我终于能够解决问题了。最终代码如下所示:

oldiframe = document.getElementsByTagName("IFRAME")[0]; 
ifrm = document.createElement("IFRAME");
ifrm.style.width = "100%";
ifrm.style.height = 600+"px";
function makeFrame() {
   if(oldiframe == null)
     document.body.appendChild(ifrm);
   else
     document.body.replaceChild(ifrm, oldiframe);
}

感谢对iframe的警告。您是否知道从外部网站呈现内容的更好方法/技术?可以有任何版权问题吗?感谢。