无法弄清楚为什么 window.frames.length = 0

Dan*_*les 2 html javascript dom

在有人问我为什么使用框架之前:在我的工作中,我需要测试一个使用框架的网站。我正在尝试使用 Javascript 从框架中获取一些信息,但我在让框架正常工作时遇到了麻烦。

首先,为了进行实验,我在我的计算机上创建了一个文件test.html. 它加载两个框架:左侧框架包含我编写的另一个测试页 ( test2.html),右侧框架包含一些网页。

<html>
<FRAMESET cols="20%, 80%">
    <FRAME name="leftFrame" src="test2.html">
    <FRAME name="rightFrame" src="http://www.foxnews.com/">
</FRAMESET>
</html>
Run Code Online (Sandbox Code Playgroud)

这是我的另一个测试页test2.html。它只有一个按钮,单击该按钮时,会提醒您 的长度window.frames。根据我在网上找到的信息,这应该告诉我有多少帧。问题是,结果为零。

<html>
<head>
    <script type="text/javascript">
        function doSomething() {
            alert(window.frames.length);
        }
    </script>
</head>
<body>
    <button type="button" onclick="doSomething();">
        Click me
    </button>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

如何在 JavaScript 中访问框架?我不认为这个问题来自于其中一个帧指向本地文件这一事实?

Guf*_*ffa 5

window对象并不是指整个浏览器窗口,而是指该document对象所在的逻辑窗口。框架集和每个框架都有它自己的window对象document

代码所在的窗口没有任何框架,您需要查看父窗口,其中框架集是:

alert(window.parent.frames.length);
Run Code Online (Sandbox Code Playgroud)