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

window.frames.length returns 0 in chrome and Firefox browser

本文关键字:浏览器 返回 Firefox frames length chrome window      更新时间:2023-09-26

我在Chrome和firefox上遇到了这个问题,函数crse_FrameExists()内的window.frames.length总是返回零,而实际上它应该返回值3和true才能继续。我对IE9没有任何问题。有人知道为什么会发生这种事吗。任何变通办法都是有用的。。。谢谢下面的代码段:

alert(window.frames.length);

返回0作为IE 中的3

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浏览器上也不起作用。你必须使用一个标准的加载解决方案,就像我的例子一样。