javascript - Firefox 删除了生成的 iframe 的 innerHTML
问题描述
我正在使用 JavaScript 构建 iframe 并向其中插入一些内容。在 Chrome 和 Safari 中它工作正常,但在 Firefox 中 iframe 仍然是空的。记录 iframe 的内容时,它仅在创建 HTML 后立即显示 HTML,之后 innerHTML 为空。
这是我正在使用的代码,这是一个相关的 JSBin:https ://jsbin.com/tapacequtu/edit?html,js,output
const iframe = document.createElement('iframe');
document.body.appendChild(iframe);
const label = document.createElement('div');
label.innerText = 'Hello world';
iframe.contentDocument.body.appendChild(label);
为什么 Firefox 中的 iframe 是空的?
解决方案
原来这是这里报告的 Firefox 中的一个非常古老的错误:https ://bugzilla.mozilla.org/show_bug.cgi?id=297685
您必须使用 asetTimeout
来“修复”它:
const iframe = document.createElement('iframe');
document.body.appendChild(iframe);
setTimeout(() => {
const label = document.createElement('div');
label.innerText = 'Hello world';
iframe.contentDocument.body.appendChild(label);
}, 0);
推荐阅读
- python - 如何修复 Selenium 中的 NoSuchElementException?
- python - 如何合并,加入熊猫数据框中具有相同值的行单元格
- javascript - 使用 Js 和 Google 脚本将 HTML 数据发布到 Google 表格 - 错误:缺少 CORS 标头“Access-Control-Allow-Origin”
- javascript - 传单 - 两点之间的路径不是最短的
- python - Discord Python Bot,在给定时间后自动解禁,即使机器人离线,我如何节省时间直到用户被解禁?
- android - 清单合并失败:针对 Android 12 及更高版本的应用需要为 `android:exported` 指定显式值
- machine-learning - LGBM 不随随机状态改变预测
- javascript - 如何让浮点值显示在 Google 图表中?
- scala - 在 Spark Scala 中将 RDD[(String, String, String)] 转换为 RDD[(String, (String, String))]
- amazon-web-services - 步进函数状态机执行的服务员