当前位置: 代码迷 >> ASP.NET >> 郁闷、难过啊一个关于JS跨页面访问的有关问题,'Parent.top_frame.document.all.T1 '为空或不是对象
  详细解决方案

郁闷、难过啊一个关于JS跨页面访问的有关问题,'Parent.top_frame.document.all.T1 '为空或不是对象

热度:1250   发布时间:2013-02-25 00:00:00.0
郁闷、难过啊,一个关于JS跨页面访问的问题,'Parent.top_frame.document.all.T1 '为空或不是对象!
最近做了一个项目,是基于FrameSet框架的,为了实现锁屏的功能,其中在页面里有这一条JS语句:Parent.top_frame.document.all.T1   =   600;也就是在一个页面中去访问框架内另一个页面的控件元素的值.但在运行时有时会出现这么一个错误: 'Parent.top_frame.document.all.T1   '为空或不是对象,但也不是每次运行都会出现错误,有时不会有错误出现,请问难道是不能这样引用吗,但是确实可以这样用,也是有效的,请高手指!


------解决方案--------------------------------------------------------
parent小写
------解决方案--------------------------------------------------------
parent.parent.bottom.document.getElementById( 'Cust_Name ').value= '600 ';
------解决方案--------------------------------------------------------
一级一级找原因

alert(parent);
parent是否为[object]
parent.top_frame是否为[objct]
parent.top_frame.document是否为[object]

后面关系到浏览器兼容性等等问题,我记不得详细了

要看某个javascript对象的属性方法等内容时,自己用这个方法试试:
假设parent为存在的[object]

var str = ' ';
for (var i in parent) {
str += i + ' ';
}
alert(str);
------解决方案--------------------------------------------------------
还有一种情况就是你这句代码parent.top_frame.document.all.T1 = 600;是不是在启动的时候执行的,如果是的,那可能就有问题了,因为当你执行的时候,T1还没有加载好,就是说对象还没有生成,拟就访问他了,当然要报错“为空或不是对象”,你可以使用循环判断当不是空的时候再去执行,获取加上try,catch{}屏蔽掉错误就可以了
  相关解决方案