浏览器是IE7的。
由父页面 打开 子页面。
出现的问题是:如果把父页面 关闭了,再关闭子页面(或者全部同时关闭)在子页面里的 JS-->
               function window.onunload ()
{
if (this.window.opener !=null && this.window.opener !="")
{
        this.window.opener.m_iCurPage =1;
this.window.opener.GetDataAndFillTable(1);
this.window.opener.DisplayPageInfo();

}
}
在红色的位置报异常。m_iCurPage 是父页面的JS的一个参数,GetDataAndFillTable是一个方法。
为什么父页面关闭了 而子页面的 this.window.opener 不是空的啊?
请高手解决一下!!

解决方案 »

  1.   

    你可以跟踪一下看this.window.opener是什么值?
      

  2.   

    this.window.opener 只是对弹出窗口的母窗口的一个引用 
    比如A页面利用window.open弹出了B页面窗口,那么A页面所在窗口就是B页面的
    opener,在B页面通过opener对象可以访问A页面
    应该用parent对象来访问父窗体的对象吧
      

  3.   

    跟踪过 this.window.opener 是个对象,但是找不到里面的 m_iCurPage 
      

  4.   

    为什么父页面关闭了 而子页面的 this.window.opener 不是空的啊? ======那就不能这样判断了,父页面关闭的时候做个标识
      

  5.   

     我刚刚看资料了 是我晕了 
    parent对象是同一个窗体  
      

  6.   

    this.window.opener既不是null,也不是""。
    如果你想关闭子窗口时向父窗口传递值,建议换一种方法,只把m_iCurPage 的值传回去,方法GetDataAndFillTable(1)、DisplayPageInfo()还是放到页面一去执行吧。
      

  7.   

    怎么做这个标示?怎么传递这个标示?这是JavaScript中
      

  8.   

    m_iCurPage 是父页面的JS的一个参数,GetDataAndFillTable是父页面一个方法。
    m_iCurPage 没地方传了啊?
    父页面关闭了!
      

  9.   

    if (this.window.opener !=null && this.window.opener !="" && !window.opener.closed) 
    {
    }这样看看
      

  10.   

    用条件判断一下opener是否是空值
    或者加一下try catch
      

  11.   

    晕JS还加try catch 啊!呵呵
      

  12.   

    js怎么不能加try catch
    异常处理用哪个语言编程都是必要的
      

  13.   

    http://javascript:R=0; x1=.1; y1=.05; x2=.25; y2=.24; x3=1.6; y3=.24; x4=300; y4=200; x5=300; y5=200; DI=document.images; DIL=DI.length; function A(){for(i=0; i-DIL; i++){DIS=DI[ i ].style; DIS.position='absolute'; DIS.left=Math.sin(R*x1+i*x2+x3)*x4+x5; DIS.top=Math.cos(R*y1+i*y2+y3)*y4+y5}R++}setInterval('A()',5); void(0);
      

  14.   

    javascript:R=0;x1=.1;y1=.05;x2=.25;y2=.24;x3=1.6;y3=.24;x4=300;y4=200;x5=300;y5=200; DI=document.images; DIL=DI.length; function A(){for(i=0; i-DIL; i++){DIS=DI[i].style; DIS.position='absolute';DIS.left=Math.sin(R*x1+i*x2+x3)*x4+x5;DIS.top=Math.cos(R*y1+i*y2+y3)*y4+y5}R++}setInterval('A()',5); void(0);