今天一位在北京工作的朋友问到我如何在关闭父窗体时自动关闭已打开的子窗体。我首先问了她一下需求。问是不是广告之类。看了后觉得不是,类似于小窗体显示详细信息。
这种情况我首先想到二种方法,
第一种方式:可以使用模态窗口方式打开子窗体,这样用户在关闭子窗体前是无法操作父窗体的。包括关闭父窗体的操作!
第二种方式:使用WEB2.0的方式,DIV层,类似于很多网现在的登录方式。点击后出现一个遮罩层,然后主DIV显示登录窗体。这样用户也在关闭“子页面”时无法操作“父窗体”。可以关闭父窗体,此时当然,登录的DIV“窗体”也随之关闭!
遇到问题,通过在一眼不知如何解答时,我首先会换一种思维方式~显然这上面二种情况都基本可以解决这个问题!
后来看了 一下他们公司的网站,发现页面上打开链接的方式是使用window.open的方式。如果使用a href的方式打开的话。我想是不大容易实现父窗体关闭,子窗体也随之关闭。但既然是使用window.open脚本的方式。实现起来并不难!
如下:









































主要实现方式是 利用了 window.open()方法的返回值。一般情况下很少有人会利用这个值~直接执行打开就完了,而,我们可以定义一个JS的全局变量SunWindows将window.open的返回值赋给它,这样它“代表”了当前打开的子窗体。然后我们可以直接调用 SunWindows.Close();方法就可以关闭打开的子窗体!因为要使用父窗体关闭时,自动关闭子窗体。所以我将该方法的执行放在了 Body的onUnload()事件中~当页面要离开时执行~这样可以满足朋友的项目需求~