javascript - 我可以在保留实例/状态的同时移动 iframe 吗?
问题描述
如果我有一个在节点上设置的 iframe,我可以在保留其当前状态的同时将其移动到另一个节点吗?
我必须保留对此的 IE11 支持
const iframe = document.querySelector('#my-frame')
document.querySelector('#new-node').appendChild(iframe)
document.querySelector('#old-node').removeChild(iframe)
div{
border: 1px dashed black;
}
<div id="old-node">
Old node
<iframe id="my-frame" src="https://example.com"></iframe>
</div>
<div id="new-node">
New node
</div>
解决方案
你几乎是对的。
但是,由于 DOM 元素一次只能有一个父元素,因此.appendChild
会自动从其当前父元素中删除该元素(如果它已经在 DOM 中)。
因此,在您的情况下,当您调用 时.removeChild
,该元素不再是旧父级的子级,并.removeChild
抛出一个DOMException
.
你有两种方法:
将呼叫移至
.removeChild
之前.appendChild
:const iframe = document.querySelector('#my-frame') document.querySelector('#old-node').removeChild(iframe) document.querySelector('#new-node').appendChild(iframe)
但是,您甚至可以省略对以下的调用
.removeChild
:const iframe = document.querySelector('#my-frame') document.querySelector('#new-node').appendChild(iframe)
推荐阅读
- android - 当我将 isCloseIconVisible 设置为 false 时的筹码保证金问题
- php - 如果我不知道有多少个数组,如何在 GraphQL 中返回一个数组(PHP,rebing/graphql-laravel)
- angular - Angular 后端 HTTP 请求
- python - Mixture parameters from a TensorFlow Probability mixture density network
- android - 有没有办法同时反编译多个android apk?
- angular - 运行 npm install 时出现 Angular 应用程序错误 - 无法解析依赖项
- html - img 选项卡可见性变为空白
- jointjs - 动态设置纸张模型
- regex - PowerShell 按模式提取
- python - 单击硒中的复选框