如题,我想在ASP.NET(C#)的.aspx里面的js函数中实现这个功能.
PS:“由这个页面通过window.open打开的页面”是在.cs中通过Response.Write打开的,如:
Response.Write("<script language='javascript'>window.open('"+"abc.aspx?" +"id=" + id.ToString()+"')</script>");

解决方案 »

  1.   

    open有返回的.
    一直拿着这个返回.
    在关闭是把这个返回也关掉.
    var a = window.open();
    a.close();
      

  2.   

    可以先用个数组保存打开的窗口.
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>无标题文档</title>
    <script type="text/javascript">
    var wins = [], n = 0;
    function newWin(){
    wins[n++] = window.open("http://www.baidu.com");
    }
    function closeWin(){
    for(var i=0; i<n; i++){
    wins[i].close();
    wins[i] = null;
    }
    n = 0;
    window.opener = null;
    window.close();
    };
    /* 窗口关闭前调用
    window.onbeforeunload = function(){
    closeWin();
    };*/
    </script>
    </head>
    <body>
    <input type="button" value=" 新建窗口 " onclick="newWin();" />
    <input type="button" value=" 关闭 " onclick="closeWin();" />
    </body>
    </html>
      

  3.   


    我也想到用数组,但是问题是我的页面是在.CS里面用语句打开的,具体的说的一个datagrid里面的模板列中的按钮而不是页面上的某个单独按钮。这个怎么存到html文件的js函数的数组中啊?
      

  4.   

    lz,你可以先找到dataGrid里面模板列的那个按钮,给它附加事件代码,或者在后端用btnOPen.Attributes.add('onclick','OpenWindow()');之类,或者在前端用document.getElementsById('btn在前端的id’).attachEvent('onclick',OpenWindow);之类,看你自己了,最终是要用js数组来保存window的。
      

  5.   

    最关键的地方是我不知道怎么写在.cs文件中把打开的window的编号还是啥的识别标志传到数组再把数组传到html的js函数里的代码=_=b
    哪位写两句代码具体的代码吧
      

  6.   

    再up。
    附加:每次点击datagrid模板列的按钮页面就要刷新一次,在js中定义的变量值也没有了,我要打开几个页面的话,最后实际上只能保存最后打开那个窗口的句柄,怎么办?
      

  7.   

    那在子页面做个定时方法.
    当检测不到window.opener的时候就自己关掉吧...
      

  8.   

    我在从A中用window.open打开的窗口B的HTML中添加了js函数
    function test() 

    if(window.opener!=null)
    {
    alert(window.opener);
    setTimeout('test()', 1000);  
        }
        else
        {window.close();}

    可是就算我关了A,B也没有关,alert(window.opener);仍然返回[object]。是哪里写错了么?
      

  9.   

    确实写错了。应该是
    <script language="javascript">
    <!--
    window.onload=test();
    function test() 

         if(opener)
        {
    if(opener.closed==false)
    {
         setTimeout('test()', 1000);  
    }
    else{window.close();}
        }
        else{window.close();}    
    }  //-->
    </script>
    natineprince 的方法是目前最好的解决办法了,谢谢大家帮助。