iFrame文本在Firefox上不显示,但在Chrome上有效(document.body.innerHTML)

ktecyv1j  于 2023-10-14  发布在  Go
关注(0)|答案(1)|浏览(113)

各位编码员,我遇到了这个问题,我有一个ID=“graph”的iframe,我试图在页面加载时输出此html,但由于某种原因,它在firefox上不工作,但在Chrome上工作得很好。

<script language="javascript">
 var text = "We are creating your Memory Performance Graph, Please hold.";
 document.getElementById('graph').document.body.innerHTML = text;
</script>

有什么建议吗?

gupuwyp2

gupuwyp21#

HTMLIFrameElement对象的DOM接口指定'contentDocument'作为IFrame文档的名称,而不是“document”本身。我能够让你的消息的一个版本出现在iframe中,

var text = "We are creating your Memory Performance Graph, Please hold.";
 var iFrameObj = document.getElementById('graph');
 var docObj = iFrameObj.contentDocument || iFrameObj.document;
 docObj.body.innerHTML = text;

唯一的理由是包括“||如果Chrome不支持标准属性名,则使用”iFrameObj.document“(未经测试)。
在测试中,我将代码放在一个窗口onload事件处理程序中,以避免在完成之前访问iframe元素的潜在计时问题

2023年增编

下面的HTML在Firefox中保存和加载时工作,就像这个答案第一次发布时一样。* 然而 * 它不能作为SO上的堆栈片段。我怀疑原因是snippet runner将IFRAME元素视为与父文档不同的源,结果返回null(或者undefined),用于存储在docObj中的文档对象值;

<!DOCTYPE html>
<html><head><meta charset="utf-8">

   <title>iframe document</title>

</head>
<body>

<iframe id="graph"></iframe>

<script>"use strict";
window.onload = event => {

 var text = "We are creating your Memory Performance Graph, Please hold.";
 var iFrameObj = document.getElementById('graph');
 var docObj = iFrameObj.contentDocument || iFrameObj.document;
 docObj.body.innerHTML = text;

}
</script>
</body>
</html>

相关问题