页面aaa.aspx
<HTML>
<HEAD>
</HEAD>
<body>
  <script language='javascript'>window.iframe3.location.href='ccc.aspx'</script>
<iframe name="iframe3" src="bbb.aspx"></iframe>
</body>
</HTML> //////////////精简后的测试代码如上:
报错:window.iframe3.location为空或者不是对象。郁闷中,大家帮忙!
但是我在iframe中的 bbb.asp中的用window.parent.iframe3.location.href='ccc.aspx' 却正常通过了,实在奇怪。
我在aaa.aspx中把parent改为self,即window.self.iframe3.location.href='bbb.aspx' 测试却又无法过,实在不懂了。 拜求!

解决方案 »

  1.   

    <script language='javascript'>window.iframe3.location.href='ccc.aspx'</script>

    <iframe name="iframe3" src="bbb.aspx"></iframe>
    的前面,这时iframe3还没有生成,当然window.iframe3为空啦!你把这两句话调整一下位置就行了。
      

  2.   

    这是在我的网站中用到的函数
    function ReDirectTo(url)
    {
        window.iframePage.document.location.href = url; //iframePage为iframe的id和name
    }
    你的原因是因为页面的加载顺序,并不是像楼上sunjian_qi(sonne) 所说的,简单的换一下顺序就好了,而是在HTML的加载中是异步方式,<iframe name="iframe3" src="bbb.aspx"></iframe>这句只是标识要加载,而并不是要等它加载完毕才加载下面的<script language='javascript'>window.iframe3.location.href='ccc.aspx'</script>。
    正确的保守的做法是:
    <script language='javascript'>window.attachEvent("onload",function(){window.iframe3.location.href='ccc.aspx';})</script>
    这样才能保证是在页面所有的元素都加载完毕后,再去执行你的调用语句,也就不会出现你的“报错:window.iframe3.location为空或者不是对象!”
      

  3.   

    非常感谢2位,sunjian_qi(sonne)说明了出错的原因,lovinger2000(EUDEV.NET) 给出了详细的原理和全面解决方法。问题已通过lovinger2000(EUDEV.NET)方法解决,再次感谢2位。 sunjian_qi(sonne) 能够解决部分问题。再次感谢!