为每一个窗口附一个句柄,然后保存成数组,然后关闭的时候循环关闭即可。
打开的时候
var winID
    winID=window.open(....)
    window.location=winID

解决方案 »

  1.   

    不行呀,我现在将起始窗口关掉了,就是有句柄也也丢掉了
    现在我只知道窗口的name以abcwindow_ 开头
    关掉以abcwindow_ 开头的窗口
      

  2.   

    不是name,你要记住比如说你把winID都保存在一个win()数组里。
    循环win(i).close(),首先判断其中有些是否已经关闭
    var i=0
    var j
    var win2=new Array()
    function savewin(win)
    {
    if (i==0)
    {
    win2[0]=win;
    i=i+1;
    }
    else
    {
    win2[i]=win;
    i=i+1;
    }
    }
    function exit()
    {
    var winclose=true;
    if (win2=="")
    {
    winclose=true;
    }
    else
    {
    for (j=0;j<win2.length;j++)
    {
    if (win2[j].closed)
    {
    winclose=true;
    }
    else
    {
    win2[j].close()
    }
    }
    }
    if (winclose==true)
    {
    window.parent.close()
    }
    }savewin是保存页面句柄的,可以放在其它帧里调用。exit是关闭所有页面
      

  3.   

    楼上的,你是不还没弄明白人家什么意思呀。他的意思是说:原始的窗口已经关掉了,也就是说被打开的窗口的opener已经不存在了!是到另一个窗口中去关掉这些窗口。to 楼主:我想你在设window.open()的name属性的时候可以有规律一些呀。在另外的窗口关闭与之无关联的窗口的方法好像只有是通过name刷新该窗口,取得关联后再关闭。
      

  4.   

    to:  jhlcss(阿龙) 你的方法如果用了cookie或者在当地存档可能有用to :zz315(钟钟) 是呀,现在是即使窗口名字有规律,比如abcwindow_1,abcwindow_2....,但是关闭这些窗口的时候其中abcwindow_1可能已经被用户直接关掉了,现在取得了name,但是窗口对象得不到,用刷新的方法关闭的时候,就不能察看这个窗口是否已经closed,窗口有多少个?即使用循环,多少个才够用?都很麻烦
    我现在就想直接得到各个窗口的名字,然后处理,看看能不能关掉这些窗口
      

  5.   

    你的这个问题关键在于:
    1)得到窗体的数量
    2)得到打开窗体的句柄1)好解决,因为你的窗体都是有一个父窗口打开的,所以在这个父窗口中使用cookie记录下带开窗口的最大数就行了。这样就能再另一个地方通过cookie和循环得到打开窗口的名称。
    2)也不难,因为我们知道打开窗口的名称了。我们使用window.open()函数得到打开窗口的句柄。
    所以这样解决:
    var wmax=cookie中窗口的最大数量;
    var wopened;
    for(i=0;i<wmax;i++){
      wopened=window.open("","abcwindow_" + i);
      wopened.close();
    }
    完成。
      

  6.   

    上面的代码中就算是abcwindow_1已被用户关闭也没关系,只不过有重新打开了一个叫做abcwindow_1的空窗口,然后又把它关了。
      

  7.   

    to :fokker(独孤龙)
    我试试
      

  8.   

    这样的方法肯定是可行的!问题的关键就在于一旦浏览者禁用了cookie呢?就很难办了。其实我觉得这个问题的本身就怪怪的。
      

  9.   

    把窗口放远一点,看不见就行了。for(i=0;i<5;i++){
      wopened=window.open("","abcwindow_" + i,"top=2000,width=1500");
      wopened.close();
    }
      

  10.   

    问题是这样的,举个例子吧,就像这个msdn,如果打开了很多的问题窗口
    而开始的那个页面关掉了,先在我又打开了一个msdn首页,但是我想把以前用msdn打开的页面全部关掉-----就是这样的问题,不算过分吧
      

  11.   

    window.close()
    如果不是window.open()打开的窗口会有提示是否关闭
      

  12.   

    解决了,得到所有的窗口的名称,然后用上面的Open()方法,没有其他的更好的办法了,但是还可以用,谢谢各位了,散分了