当使用window.frames[name]来访问iframe的contentWindow时,contentWindow未定义。

13

如果使用以下方式来获取contentWindow,则该值为未定义

<html>
<head>
    <title>iframe test</title>
</head>
<body>
    <iframe id="frame1" src="frame1.html" name="frame1"></iframe>
<script>
    document.body.onload = function() {
        console.info("index loaded");
        var frame1 = window.frames["frame1"];
        console.info(frame1.contentWindow);
    }
</script>
</body>
</html>

如果使用以下方式,它可以正常工作:

var frame1 = document.getElementById("frame1");
console.info(frame1.contentWindow);

我在FF 29.0.1,Chrome 34和IE11上进行了测试,它们的工作方式都相同。

所以我有两个问题:

  1. 为什么第一种方式无法获取contentWindow值
  2. iframe.contentWindow在所有浏览器中都兼容吗?
1个回答

18
window.frames["frame1"];

contentWindow是获取命名窗口的属性,在您的情况下,它与同一窗口相同。

document.getElementById("frame1").contentWindow

FIDDLE


contentWindow在所有浏览器中都兼容,包括IE8+吗? - jason
应该是跨浏览器的,有些浏览器以前使用contentDocument,但我认为现在contentWindow在所有浏览器上都可以使用。 - adeneo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接