window.frames.length在chrome和Firefox浏览器中返回0

时间:2012-07-09 10:18:49

标签: javascript html5 firefox google-chrome

我在Chrome和firefox上有这个问题,函数 crse_FrameExists()中的 window.frames.length 总是返回零,实际上它应该返回值3并且为真为了继续。我对IE9没有任何问题。有谁知道为什么会这样。任何工作都会有用...... 谢谢, 代码片段如下:

alert(window.frames.length);

在IE中返回0,假设为3

1 个答案:

答案 0 :(得分:2)

frameset放在headbody中是违法的。

直接放在head之后(没有body),你会没事的。

例如:

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <script>
        function crse_FrameExists(frameName){
            for (i = 0; i < window.frames.length; i++) {
                if (window.frames[i].name == frameName) return(true);
            }
            return(false);
        }
        window.onload=function(){
            alert("crse_FrameExists('fra_header'):" + crse_FrameExists('fra_header') );
        };
    </script>
</head>
    <frameset id="Nav4mainFrameset" framespacing="0" border="false" frameborder="0" rows="76,*">
        <frame name="fra_minimain" id="fra_minimain" scrolling="no" noresize src="index2.html">
        <frameset cols="188,*">
            <frame name="fra_header" id="fra_header" scrolling="no" noresize src="index2.html">
            <frame name="fra_content" id="fra_content" scrolling="auto" noresize src="index2.html">
        </frameset>
    </frameset>
</html>

不要忘记使用http://而不是file://打开您的网页进行测试,因为Chrome的安全模型会将每个文件视为一个域。

并且不要在您的脚本元素中放置for="window" event="onload()":这不是规范化的,并且不适用于非MS浏览器。您必须使用标准的onload解决方案,如我的示例所示。