我无法访问iframe内容文档的DOM 如果我在JavaScript中动态创建iframe而不是在HTML中对其进行硬编码。
到目前为止,我发现这是在Mac FF26和Safari 6中测试的。它是桌面上的本地iframe文档,因此不存在跨域问题。
我生成的iframe通常出现在浏览器窗口中。但是尝试使用contentDocument访问它时,body元素似乎是空的。
这是一个已知问题吗?也许我以不寻常的方式生成我的iframe:
var newIframe = document.createElement("iframe");
newIframe.id = "generatedIframe";
newIframe.src = "test.html";
document.body.appendChild(newIframe);
var iframeTag = document.getElementById("generatedIframe");
// the iframe will be appearing normally in the browser now
// but this fails -- innerHTML is empty string:
var iframeContent = iframeTag.contentDocument.getElementsByTagName("body")[0].innerHTML;
// same reference code works if the iframe is hard-coded in HTML instead
答案 0 :(得分:0)
实际上,问题不在于您生成iframe的方式。
iframe DOM仅在加载后才可用。
背后的代码说明了我的意思:
在父窗口容器中:
<script>
function doSomething() { alert(iframeTag.contentDocument.getElementsByTagName("body")[0].innerHTML()); }
</script>
在您的iframe文档中
<body onload="window.parent.doSomething();"></body>