首页 > 解决方案 > 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 是空的?

标签: javascriptfirefoxiframe

解决方案


原来这是这里报告的 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);

推荐阅读