javascript - 无法在 Reactjs 中关闭 iframe 引用
问题描述
我创建了 iframe 的引用,我将其作为参数发送到 API 调用。收到回复后,我想关闭该 iframe,但是当我使用“iframe.close”时它不会关闭。
let refIframe = document.createElement('iframe');
refIframe.setAttribute('id', 'refIframe');
refIframe.setAttribute('src', 'www.google.com');
refIframe.style.zIndex = '2';
refIframe.style.display = 'block';
refIframe.style.width = '30%';
refIframe.style.height = '92vh';
refIframe.style.margin = '2% 35%';
document.body.after(refIframe, document.body);
let iframe = document.getElementById('refIframe').contentWindow;
checkout.params.windowRef = document.getElementById('refIframe').contentWindow;
从 API 调用收到响应后,我将执行以下操作来关闭 iframe 的引用。
iframe.close();
但是这样做我的 iframe 不会关闭。
谁能指导我我做错了什么,因此我的 iframe 没有关闭。如果提供了修改后的代码,这对我理解真的很有帮助。
如果有人可以告诉我在不使用 componentDidMount 的情况下创建 iframe 引用,那将非常有帮助。
解决方案
既然您已经声明您的目标是从 dom 中删除 iframe。尝试以下而不是iframe.close()
:
setTimeout(()=>{
document.getElementById('refIframe').remove()
}, 2000)
//placed inside a timeout for demonstration purposes only... so you can see the iframe being removed from dom
<div>Element Before Iframe</div>
<iframe id="refIframe"></iframe>
<div>Element After Iframe</div>
但是,如果您想保留<iframe>
元素,但又希望 iframe 中的页面停止“打开”,则可以将 iframe 的src
属性修改为其他内容(甚至是空字符串),从而“导航”离开当前页面内嵌框架。
setTimeout(()=>{
document.getElementById('refIframe').src = ""
//setting to empty string will put no webapge inside the iframe
},2000)
<iframe id="refIframe" src="https://wikipedia.org"></iframe>
推荐阅读
- javascript - 如何在密码值为空时禁用消息
- javascript - 如何使用 jquery 打印简单的 hello world
- bpmn - Camunda:通过变量值查找流程实例
- amazon-web-services - AWS lambda 函数日志未显示在 cloudwatch 中
- scala - 具有复合值的 RDD 键值对
- django - Django Post 403 禁止 CSRF
- r - R是否可以使用对数刻度的纯素ordisurf
- windows - SetWindowsHookEx 监控 Windows 打开和关闭
- json - 我应该如何在第二个 dart 文件中调用加载的本地化 json 数据?
- ios - 居中不同高度的 CollectionView 项目