当主页面关闭时关闭所有子窗口(Close all the child windows on unload of main page)

摘要:

我们常常会使用window.open的便利来实现很多常用的web功能。

在应用中,我们能够用window.opener从子页面访问并操作父页面,但如果想通过父页面管理子页面,则需要在父页面里留下存根

(因为每个子页面只有一个父页面,每个父页面却可以有多个子页面)

本例使用数组来贮存一个父页面中的所有子页面,并可对其进行操作:

Demo:当父页面关闭时关闭其所有子页面

 

<! 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 >
    
< title > Untitled Page </ title >
    
< script  type ="text/javascript" >
    
<!--

    
var  windowArray  =   new  Array();

    
function  openWindow(tabValue, selValue, colValue)
    {
     
var  functionReturn  =   true ;

     
try
     {
      
var  windowUrl  =   ' Default.aspx?TAB= '   +  tabValue  +   ' &SEL= '   +  selValue  +   ' &COL= '   +  colValue;
      
var  windowId  =   ' Hlink '   +   new  Date().getTime();
      
var  windowLeft  =  (screen.width)  ?  (screen.width - 600 ) / 2 : 100;
       var  windowTop  =  (screen.height)  ?  (screen.height - 500 ) / 2 : 100;
       var  windowFeatures  =  
       
' width= '   +   600   +   ' ,height= '   +   500   +   ' ,top= '   +  windowTop  +   ' ,left= '   +  windowLeft  +  
       
' ,scrollbars=auto,location=no,directories=no,status=no,menubar=no,toolbar=no,resizable=no ' ;
      
var  windowRef  =  window.open(windowUrl, windowId, windowFeatures);

      windowArray[windowArray.length] 
=  windowRef;
     }
     
catch (ex)
     {
      alert(ex.message);
      functionReturn 
=   false ;
     }

     
return  functionReturn;
    }

    
function  closeAllWindows()
    {
     
for  ( var  i = windowArray.length - 1 ; i >= 0 ; i -- )
     {
      
if  ( windowArray.length  <=   0  )
       
break ;

      
var  windowRef  =  windowArray[i];

      
if  ( (windowRef  !=   null &&  (windowRef.closed  ==   false ) )
      {
       windowRef.close();

      }
      windowArray.pop();
     }
    }
    
    
function  Button1_onclick() {
        openWindow(
' test ' , ' test ' , ' test ' );
    }

    
function  Button2_onclick() {
        closeAllWindows();
    }

    
//  -->
</ script >
</ head >
< body >

    
< p >
        
< input  id ="Button2"  type ="button"  value ="close all child"  onclick ="return Button2_onclick()"   />
        
< br  />
        
< input  id ="Button1"  type ="button"  value ="open a child"  onclick ="return Button1_onclick()"   /></ p >

</ body >
</ html >

 

结束语:

关于window.open的用法,下面转载了博友阿君的文章,供大家参考:

window.open()    
     
支持环境  JavaScript1.0+/JScript1.0+/Nav2+/IE3+/Opera3+    
 
语法  window.open(pageURL,name,parameters)    
 
pageURL  子窗口路径    
name  子窗口句柄    
parameters  窗口参数(各参数用逗号分隔)    
     
参数                      |  取值范    |  说明    
                                       |    
alwaysLowered    |  yes/no              |  指定窗口隐藏在所有窗口之后    
alwaysRaised     |  yes/no              |  指定窗口悬浮在所有窗口之上    
depended         |  yes/no              |  是否和父窗口同时关闭    
directories      |  yes/no              |  Nav2和3的目录栏是否可见    
height           |  pixel  value        |  窗口高度    
hotkeys          |  yes/no              |  在没有菜单栏的窗口中设置安全退出热键    
innerHeight      |  pixel  value        |  窗口中文档的像素高度    
innerWidth       |  pixel  value        |  窗口中文档的像素宽度    
location         |  yes/no              |  位置栏是否可见    
menubar          |  yes/no              |  菜单栏是否可见    
outerHeight      |  pixel  value        |  设定窗口(包括装饰边框)的像素高度    
outerWidth       |  pixel  value        |  设定窗口(包括装饰边框)的像素宽度    
resizable        |  yes/no              |  窗口大小是否可调整    
screenX          |  pixel  value        |  窗口距屏幕左边界的像素长度    
screenY          |  pixel  value        |  窗口距屏幕上边界的像素长度    
scrollbars       |  yes/no              |  窗口是否可有滚动栏    
titlebar         |  yes/no              |  窗口题目栏是否可见    
toolbar          |  yes/no              |  窗口工具栏是否可见    
Width            |  pixel  value        |  窗口的像素宽度    
z-look           |  yes/no              |  窗口被激活后是否可以浮在其它窗口之上

 

ContractedBlock.gif ExpandedBlockStart.gif open新页面以后 提交本页面,刷新主页面并关闭本页面的方法
<script language="javascript">                  
function saveclose()
{
 
//form1.action='NewObject.asp'              //Savaclose函数作用:
                                             //提交页面,刷新主页面并关闭本页面
  form1.submit();
  window.opener.location.reload();
window.opener
=null;
 window.close();

}
</script>
在 VB 中,如果你想要实现在点击窗体的 X 按钮关闭主窗体,而在其他情况下只关闭窗体,你可以使用以下方法: 1. 在窗体的代码文件中添加一个公共的布尔型变量,用来保存是否需要关闭主窗体的标志。在窗体的代码文件中添加以下代码: ``` Public CloseMainForm As Boolean ``` 2. 在窗体的 `QueryUnload` 事件中添加以下代码: ``` Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) ' 如果需要关闭主窗体,则在这里关闭主窗体 If CloseMainForm Then ' 关闭主窗体 frmMain.Close End If End Sub ``` 其中,`frmMain` 是主窗体的名称,可以根据实际情况进行修改。 3. 在窗体的关闭按钮的 Click 事件中添加以下代码: ``` Private Sub btnClose_Click() ' 设置需要关闭主窗体的标志为 False CloseMainForm = False ' 关闭窗体 Unload Me End Sub ``` 4. 在主窗体的代码文件中添加以下代码: ``` Private Sub ShowChildForm() ' 显示窗体 Dim frmChild As New Form2 frmChild.Show ' 设置需要关闭主窗体的标志为 True frmChild.CloseMainForm = True End Sub ``` 其中,`Form2` 是窗体的名称,可以根据实际情况进行修改。 在上面的示例中,我们在窗体的 `QueryUnload` 事件中判断是否需要关闭主窗体,如果需要则在这里关闭主窗体;在窗体的关闭按钮的 Click 事件中设置需要关闭主窗体的标志为 False,并关闭窗体;在主窗体中打开窗体设置需要关闭主窗体的标志为 True。这样,当用户点击窗体的 X 按钮窗体的 `QueryUnload` 事件中会判断需要关闭主窗体并关闭主窗体;在其他情况下,只会关闭窗体。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值