是可以手工关掉子窗啊。
关键是手工关掉父窗(而子窗还在的情况下),执行closeall()就会发现报错

解决方案 »

  1.   

    我每次关闭子窗都要把checkstate=0传给父窗。以判断子窗是不是存在
      

  2.   

    你的代码没问题啊,我这里运行正常的,环境win2000sp4+IE6
      

  3.   

    你的代码第一打开子窗口可以关闭,当先关子窗口再打开子窗口时,就不行了这样改就可以了 把var checkstate=0;放到check()力面就可以了,如:
    <html>
    <script> var v2win=null;
    function check(){
            var checkstate=0;
    if(checkstate==0)writewinv2()
    else v2win.focus();
    }function writewinv2(){
    v2win = window.open('about:blank','window','height=200,width=200,toolbar=no,menubar=no,scrollbars=no, resizable=no,location=no, status=no,left=325,top=299');
    with(v2win.document){
    open('text/html');
    writeln("aaa");
    close();
    }
    checkstate=1;
    }function closeall(){
    if(v2win&&v2win.open&&!v2win.closed){
    v2win.opener=null;
    v2win.close();
    }
    }</script>
    <body onbeforeunload=closeall()>
    <input name=test type=button class=b1 value=开窗 onclick=check()>
    </body></html>
      

  4.   

    但我总是关闭父窗的时候。执行closeall()就会报错
    告知我子窗的writeln("<body onbeforeunload=opener.window.checkstate=0>"); 这行有错因为子窗在关闭的时候也执行了onbeforeunload啊
      

  5.   

    (冷月孤心)  如果把var checkstate=0;放在check()里面,那else v2win.focus();不会有效了啊
    每次都帮我打开一个
    我要的不是这个效果啊。是如果不存在才打开一个。存在的话就聚焦