去掉用了一个document.content看看

解决方案 »

  1.   

    老大,我是要访问(设置)iframe中document.body.style.overflowY这个属性啦,不是主窗口的document.body.style.overflowY!不能去掉!can somebody save me?
      

  2.   

    我也不大会,
    试试吧,哪一个行
    alert(document.content.body.style.overflowY);
    alert(document.content.style.overflowY);
      

  3.   


    <script language="JavaScript">
    alert(document.content.document.body.style.overflowY);
    </script>
    写在
    <iframe id="content" ……></iframe>
    后面
      

  4.   

    首先,报“缺少对象”的原因应该是引用在前,由于要引用的对象还没有载入,你却要引用它,所以报错!解决问题的手段是借助工具,设置断点来调试,问题很快就可以解决!比如inter dev就很好!
      

  5.   

    看来这个概念是需要澄清一下的:
    IE浏览器内,有些事件是会向“上”传递的,即首先传递事件触发对象,然后主动向包含源对象(srcElement)的所有上层对象一一传递。如:srcElement=>parenetElement=>parentElement.parentElement..直到顶层的window对象为止。这里的onclick事件就是会“bubbling”的事件之一
    于是实际情况是这样的因为你的
    document.content.document.body.style.overflowY
    的不正确写法,使得在<input>标签里无法取到你所要的值overflowY。可是实际情况是写在<input>的时候效果是正确的。呵呵,不要被结果迷惑,效果的正确并不是因为你正确。而是IE主动将不能理解的属性向它的上层对象提交了(多好的IE阿,它让你自我感觉良好^_^)。
    当它传递到document层面时,奇迹出现了,你的不正确写法,它能理解。
    于是你的错误被隐藏了。效果居然正确:)就写到这里了,晚饭烧好了,不懂的话明天上班再说。
    其实正确的引用是这样的:
    document.all.content.document.body.style.overflowY
      

  6.   

    楼上的,您可能说得有道理,我就是不懂,您能不能看看是什么问题,这个问题是我想解决iframe滚动条自适应问题引发出来的:我原来的代码
    主页面index.asp:
    …………
    <body>
    ………………
    <iframe id="content" src="homepage.asp" ……></iframe>
    ………………
    </body>
    </html>iframe装载的页面homepage.asp的代码:
    …………
    <body>
    ………………
    <script language="JavaScript">
        parent.frames("content").document.body.style.overflowY="auto";
        //此句设置后,根据homepage.asp的内容宽度和高度,iframe自动调整滚动条,也就是当需要的时候才出现滚动条。
    </script>
    </body>
    </html>
    这种情况下,目的能够达到。
    现在我想把 parent.frames("content").document.body.style.overflowY="auto";这个设置语句放在主页面index.asp中(这样iframe每加载一个新文件就可以设置这个属性而不用每个被加载的文件都写上这个代码),如下:
    主页面index.asp:
    …………
    <body>
    ………………
    <iframe id="content" src="homepage.asp" ……></iframe>
    ………………
    </body>
    </html>
    <input type="button" value="showIt" onClick="document.content.document.body.style.overflowY='auto';">
    <script language="JavaScript">
        document.content.document.body.style.overflowY="auto";
    </script>
    这个时候,点击按钮能设置达到目的,而后面那个直接写的语句却不能成功——“缺少对象”,为什么?
    当然我也可以在index.asp中这样:<body  onmouseover="document.content.document.body.style.overflowY='auto';">从而解决这个问题而不用再烦恼,但是我想知道为什么直接写的语句就不行??
    有人能帮个忙吗??
      

  7.   

    <body>
    ..........
    <iframe id="content" src="about:test<BR>test<BR>test<BR>test<BR>test<BR>test<BR>test<BR>test<BR>test<BR>test<BR>test<BR>test<BR>test<BR>test<BR>test<BR>test<BR>test<BR>test<BR>test<BR>test<BR>test<BR>test<BR>test<BR>test<BR>test<BR>test<BR>test<BR>"></iframe>
    ...........
    </body>
    </html>
    <input type="button" value="showIt" onClick="content.document.body.style.overflowY='auto';">
    <script language="JavaScript" defer>
        content.document.body.style.overflowY="hidden";
    </script>
      

  8.   

    1 引用方式不对:通过document.id来引用元素不行,试试:<input id=test>
    <SCRIPT>
    <!--
    alert(document.test)
    alert(test)
    //-->
    </SCRIPT>2 引用时机不对。在iframe没有装载完成是就引用它的属性了。3 通过框架引用页面时要注意跨域问题。
      

  9.   

    是第二个原因用
    setTimeout("document.content.document.body.style.overflowY='auto';",2000)
    就可以了,但这只是个测试,2秒钟对于本地来说可以完全加载了,在网上就难说了,那怎么来判断iframe已经加载完毕,再执行document.content.document.body.style.overflowY='auto'这个语句??
      

  10.   

    我说一个蠢办法,你可以做一个死循环,用死循环来检测document.content.document.body.style.overflowY是否等于'auto',当值为true时,才跳出循环,不置可否!
      

  11.   

    http://expert.csdn.net/Expert/TopicView1.asp?id=1347149
      

  12.   

    您没有懂我的意思,我是要在这里设置overflowY,不是读取,看起来,要设置,就要homepage.asp完全加载,否则“缺少对象”!问题就是用什么方法判断iframe中的homepage.asp已经完全加载了?
      

  13.   

    :-))http://expert.csdn.net/Expert/TopicView1.asp?id=1347149
      

  14.   

    搞定啦~~~~~~~~~~~~<script language="JavaScript">
    timer=setInterval("try{document.content.document.body.style.overflowY='auto';clearInterval(timer);}catch(e){}",20)
    </script>谢谢 emu(ston) ,谢谢各位!以后记得,try先!