2011-05-22 645 views
0

我希望能够从本身中删除iframe。 iframe是动态创建的,内容是用'src'加载的。如何从本身内部删除iframe(已动态创建并加载了src)

创建我的iframe这样的:

var i = document.createElement('iframe'); 
    i.id = 'proxy_frame'; 
    i.name = 'proxy_frame'; 
    i.setAttribute('src', url); 
    document.body.appendChild(i); 
从“URL”中

然后,我希望能够删除/关闭iframe中。

之前将数据加载到的IFRAME SRC与我用文件撰写:

window.frames['proxy_frame'].document.write(html); 

,然后我abloe删除使用iframe:

window.parent.document.getElementById("proxy_frame").parentNode.removeChild(window.parent.document.getElementById("proxy_frame")); 

但是,这并不与工作'SRC'。

注意:这是一个书签,所以我不想使用jQuery或其他库。

+0

是在同一个域的网址是什么? – pimvdb 2011-05-22 09:13:51

+0

你的意思是当你设置'src'属性时,它不再能被删除吗?这听起来像你可能会碰到同源政策。 – alex 2011-05-22 09:15:08

+0

Url不在同一个域中。所以当然是它的同源策略,如果我用document.write()加载内容,就不会发生这种情况。谢谢。我想知道我能否以其他方式解决这个问题。 – 2011-05-22 09:45:02

回答

2

在父页面中定义的方法

function removeElement() { 
    var d = document.getElementById('body'); // or any other parent element 
    var proxy_frame = document.getElementById('proxy_frame'); 
    d.removeChild(proxy_frame); 
} 

要在自己的iframe调用此方法简单地使用这个

<a href="#" onclick="top.window.removeElement();">Remove me</a> 
+1

谢谢,但由于上面讨论的同源策略,“错误:权限被拒绝访问属性'removeElement'”。 – 2011-05-22 09:45:18

1

你不能只要是访问父页面的不同域。

在您的网站中设置可用于删除iframe的页面,然后在iframe中转到该页面。