如何从内部删除iframe(已动态创建并使用src加载)

时间:2011-05-22 09:07:25

标签: javascript

我希望能够从内部删除iframe。 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。

在使用src将数据加载到iframe之前,我使用了document.write:

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

然后我开始删除iframe:

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

但这不适用于'src'。

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

3 个答案:

答案 0 :(得分: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 :(得分:2)

对于本地域iframes,您不需要依赖ID。

window.parent.document.body.removeChild(window.frameElement);

window.frameElement有合理的支持https://developer.mozilla.org/en-US/docs/Web/API/Window/frameElement

答案 2 :(得分:1)

只要父网页位于其他网域,就无法访​​问该网页。

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