Javascript showModalDialog与open的困惑
发布网友
发布时间:2024-10-03 16:09
我来回答
共1个回答
热心网友
时间:2024-12-05 13:56
这个是常见的错误地使用模式对话框的例子
你的showModalDialog执行时,主窗口的所有代码都将停止运行,这时候如果试图对当前页面执行操作或想在后台自动刷新(以维持session不过期)都将失败。
模式对话框不建议使用,除非在必要的情况下。
即使不使用模式对话框,也可以将所有open的窗口都关闭
一种方法是每打开一个子窗口,都将该子窗口的引用赋给一个数组项,在主页面关闭时,遍历这个数组,将其中的所有子窗口都关闭。
第二种方法是让子窗口每隔一定时间(如1秒)利用其opener属性检查一次它的父窗口是否还在,如果父窗口关闭了,则子窗口调用window.close()方法将自身也关闭。
补充:好吧,详细给你说一下:
1. 首先定义一个数组,保存打开的子窗口的引用:
var childWindows = new Array();
2. 当打开一个新的子窗口时,将这个子窗口的引用添加到数组中。下面这句代码写到打开子窗口的函数中:
childWindows[childWindows.length] = window.open(......);
3. 在退出登录时,遍历这个数组,然后将其中的子窗口关闭。下面这段代码应该加到退出登录时的处理函数中:
for(i=0; i<childWindows.length; i++)
{
childWindows[i].close();
}