showModalDialog的刷新问题


问题描述:

struts1.1以前的web项目,在主窗体MainFraim --(点击一个link打开一个open子窗体)--> openwin --(点击某A按钮打开一个showModalDialog子窗体)--> modalwin

在modalwin窗体上点击某B按钮执行一个动作后刷新modalwin窗体并自动关闭返回到openwin窗体,在此窗体点击[x]按钮关闭窗口,没有触发onbeforeunload事件。

试验1:在打开modalwin窗体后,如果直接关闭modalwin窗体后,再点击关闭openwin窗体,会触发onbeforeunload事件。

试验2:在modalwin窗体中查看父窗体的属性,通过循环alert() window.parent各个属性,结果都显示当前窗体。 后来发现获取父窗体属性不能简单的用window.parent,

而是通过[var parent=widnow.dialogArguments;]获得父窗体属性,结果打印出父窗体属性时发现[onbeforeunload]的属性值为[null],终于找到病根的所在。

发现[onbeforeunload]为null之后,试图在modalwin窗体关闭之后,重新设置[onbeforeunload]事件函数。想当然的[window.onbeforeunload='funa']这么设置,

结果还是未起作用。最后在网上搜索了一番,发现了window.attachEvent函数。于是抱着试试看的态度,结果好用了~!

window.attachEvent("onload", funa) ;

另外:

window.attachEvent 方法适用于以on开头的事件。

window.addEventListener 方法适用于没有on开头的事件。

关于attachEvent描述很多,我参照下面的说明

http://blog.csdn.net/zhangxs_3/article/details/4868297