无法按预期访问子iframe内容

时间:2015-02-04 07:49:56

标签: dom iframe same-origin-policy

只是尝试一个关于< iframe> 标记用法的非常简单的案例,而结果让我很困惑。希望有人能帮助我。我在等,谢谢。

基本上,我有两个简单的页面, top.html iframe.html ,它们是相同的域名, iframe.html top.html < iframe> 标记的" src"

当我尝试访问 top.html 中的< iframe> 内容时,结果非常糟糕,所有元素都是空白的。

来自 top.html

控制台日志非常糟糕,预计会从 iframe.html 创建控制台日志。

//在加载页面后从top.html登录控制台日志

outer log: NodeList[head, body]  ---  top.html (line 6)
outer log: 2                     ---  top.html (line 7)
outer log: ""                    ---  top.html (line 8)

// 中的点击按钮后来自ifram.html的控制台日志

inner log: NodeList[head, <TextNode textContent="\n">, body]  ---  iframe.html (line 6)
inner log: 3                                                  ---  iframe.html (line 7)
inner log: "Child iFrame"                                     ---  iframe.html (line 8)

// top.html

<html>
<body>
<iframe id="fid" src="/iframe.html"></iframe>
<script type="text/javascript">
  var i = document.getElementById("fid");
  console.log("outer log: %o", i.contentDocument.documentElement.childNodes);
  console.log("outer log: %o", i.contentDocument.documentElement.childNodes.length);
  console.log("outer log: %o", i.contentDocument.documentElement.childNodes[1].innerHTML);
</script>
</body>
</html>

// iframe.html

<html>
<head>
<script type="text/javascript">
function show () {
  var x = window.top.document.getElementById("fid");
  console.log("inner log: %o", x.contentDocument.documentElement.childNodes);
  console.log("inner log: %o", x.contentDocument.documentElement.childNodes.length);
  console.log("inner log: %o", x.contentDocument.documentElement.childNodes[2].childNodes[1].innerHTML);
}
</script>
</head>
<body>
<p>Child iFrame</p>
<input type="button" onclick="show()" value="Show Button" />
</body>
</html>

由于

1 个答案:

答案 0 :(得分:0)

将测试添加到window.onload中,结果符合预期。