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

Javascript 如何从iframe本身(已使用src动态创建和加载)中删除iframe,javascript,Javascript,我希望能够从iframe本身中删除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本身中删除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或其他库。

在父页面中定义方法

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>

在父页面中定义方法

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>

您不能访问父页面,只要它位于不同的域中


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

只要父页面位于不同的域中,您就无法访问它


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

对于本地域
iframe
您不需要依赖ID

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


window.frameElement
对本地域
iFrame有合理的支持

,您不需要依赖ID

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


window.frameElement
具有合理的支持

url是否在同一个域上?您的意思是当您设置
src
属性时,它不再能够被删除?听起来您可能遇到了相同的源策略。Url不在同一个域上。当然,它的同源策略,如果我用document.write()加载内容,就不会发生这种情况。谢谢我想知道我是否可以用其他方法解决这个问题。由于我不想使用任何库,json-p真的不是一个选项。url在同一个域上吗?你的意思是当你设置
src
属性时,它就不能再被删除了吗?听起来您可能遇到了相同的源策略。Url不在同一个域上。当然,它的同源策略,如果我用document.write()加载内容,就不会发生这种情况。谢谢我想知道我是否可以用其他方法解决这个问题。由于我不想使用任何库,json-p真的不是一个选项。谢谢,但是“错误:拒绝访问属性'removeElement'的权限”,因为上面讨论了相同的源策略。谢谢,但是“错误:拒绝访问属性'removeElement'的权限”由于上述同一原产地政策。