我希望能够从内部删除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或其他库。
答案 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中转到该页面。