首页 > 解决方案 > 如何将 document.body.appendchild(' 定位到根文档而不是 iframe

问题描述

我们如何 document.body.appendchild(' an element ')仅针对根文档并避免进入
我所做的 iframe,例如

var a=document.createElement('a')
document.body.appendchild(a)

刚发现

iframe>#document>html>body>a

真诚帮助 欣慰

标签: javascripthtmldom

解决方案


如果您从 iframe 内部调用它,那么您需要使用此代码(也 appendChild 需要 Node 作为参数,它不能是字符串):

var a = parent.document.createElement('p');
a.innerHTML = 'hello';
parent.document.documentElement.appendChild(a);
// or
parent.document.body.appendChild(a);

parent 获取 iframe 所在文档的 window 对象,然后获取文档,然后获取实际的 DOM 节点(documentElement将是 html 元素)。

注意:由于同源策略,iframe 和父文档需要在同一个域中。如果您想使用不同域上的文档,您需要控制它们并使用 postMessage 或类似的 API 从 iframe 发送消息并将其获取到父文档。


推荐阅读