从iframe中移除父窗口中的id

时间:2011-12-06 17:34:23

标签: javascript prototypejs

出于各种原因,我一直试图从iframe中删除一个父div。需要从dom中删除的div(未隐藏)具有分配给它的唯一ID。

所以说我父母有这个div:

<body>
    <div id="foo_123" class="bar">STUFF</div>

在该页面生成的iframe中,我可以获取该唯一ID

var curWin = window.top.document.getElementsByClassName('bar')[0].id;

所以在这个例子中curWin = foo_123

现在在获取该变量的同一个函数中,我需要能够从父页面中完全删除该div。我确实有原型可以使用

$(curWin).remove();

但是这不起作用只是给出了$(curWin) is null的错误。但如果我回应curWin它确实为我提供了正确的身份。

关于如何做到这一点的任何想法。我也尝试使用removeChild但是当我是父文档中<body>的孩子时,我不知道该怎么做。

请不要告诉我jQuery有多棒。我知道这将是简单的豆类,但我没有这个项目的奢侈品。

5 个答案:

答案 0 :(得分:0)

使用parent.document,而不是window.top。另外,抓住整个元素,而不是ID:

var curWin = parent.document.getElementsByClassName('bar')[0];
curWin.parentNode.removeChild(curWin);

其他信息:

MDN iframe docs引用:

  

从框架内部,脚本可以获得对父项的引用   窗口通过 window.parent

另见.removeChild()

答案 1 :(得分:0)

如果您在顶部窗口中有原型,请执行以下操作:

top.$(curWin).remove();

它将在顶部窗口(它存在的位置)中查找"foo_123"而不是iframe(它不存在的地方)

答案 2 :(得分:0)

传递Prototype的元素引用,然后更快然后重新搜索并且可能会起作用:

var curWin = window.top.document.getElementsByClassName('bar')[0]

然后你可以:

$(curWin).remove();

答案 3 :(得分:0)

我发现通过iFrame从父级中获取元素的最佳方法是这样的(注意你的iframe会有一个id,如图所示,我使用#iframID)

x=document.getElementById("iframID");
y=(x.contentWindow || x.contentDocument);
$(y.document).find("#foo_123").remove();

答案 4 :(得分:0)

尝试:

var curWin = parent.top.document.getElementById('yourDivId');
$(curWin).remove();