我可以将DOM节点从iFrame移动到父节点吗?

时间:2018-05-10 09:25:47

标签: javascript html iframe

目前我正在尝试使用以下代码段移动DOM节点:

var element = document.getElementById('my-id');
parent.window.body.appendChild(element);

上面的代码是在iFrame中呈现的,但是我得到了异常“parent.window.body is undefined”。这是一个安全功能(因为我实际上想要打破iframe)吗?

请注意:我不想重新询问“如何移动DOM节点”本身,而是要跨越iframe的边界移动它!

1 个答案:

答案 0 :(得分:2)

是的,你可以在same origin内。 (检查Firefox,Chrome,IE8,IE11和Edge。)请注意,当您这样做时,附加到它的任何事件监听器仍然附加,这可能会令人困惑。另请注意,如果节点被附加到不同的文档,旧的DOM3 spec允许出错,但是最新的WHAT-WG DOM规范没有提到这样做(如果你从{{3开始)然后跟进,你最终appendChild,没有列出该例外。

body不是窗口的属性,它是document的属性。另请注意,parent.window是多余的。所以:

parent.document.body.appendChild(element);
// ----^