模态窗口中使用window.open可能造成session丢失

在IE6中,如果在A.jsp中使用window.showModalDialog()打开B.jsp,并在B.jsp中使用window.open()打开C.jsp,这时session数据可能会丢失。

解决的方法有两种:

1.在A.jsp执行showModalDialog(),方法时,将A的window对象通过参数传到B.jsp。

window.showModalDialog(URL, Awindow, …..);

之后,在B.jsp中使用Awindow打开C.jsp。

var win = window.dialogArguments;

win.open(…..);

2.B、C两个页面都使用showModalDialog来打开。

在不同的情况下可以选择适合的方法,模态窗口的这个问题在IE8+的版本中好像已经解决了(IE7没测试),但IE6还有不少人在用,因此遇到这种情况时需要注意测试环境。

 

转自:http://www.haogongju.net/art/120820