Firefox删除了生成的iframe的innerHTML



我正在使用JavaScript构建一个iframe并在其中插入一些内容。在Chrome和Safari中,它运行良好,但在Firefox中,iframe仍然为空。当记录iframe的内容时,它只在创建后立即显示HTML,之后innerHTML为空。

这是我正在使用的代码,还有一个相关的JSBin:https://jsbin.com/tapacequtu/edit?html,js,输出

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

你必须使用setTimeout来"修复"它:

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);

最新更新