如何从自身中删除 iframe(已动态创建并使用 src 加载)

How do I remove an iframe from within itself (that has been dynamically created and loaded with src)

本文关键字:创建 动态 加载 src iframe 删除      更新时间:2023-09-26

我希望能够从自身中删除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"。

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

在父页面中定义方法

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>

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

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

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

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

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