模式窗口,非模式窗口新打开窗口session丢失问题解决方案

前天做了个非模式窗口的功能,发现在别的机器上在模式窗口,非模式窗口打开新窗口时,会出现session丢失的情况。分析了一下,解决了这个问题。
先看看session的有效范围。
在IE中,session有效的窗口包括:
1.建立Session对象只的窗口。
2.建立Session对象的窗口中新开链接的窗口。

在IE中,session对象无效的窗口包括:
1.直接启动IE浏览器的窗口。
2.不是在建立Session对象的窗口中新开链接的窗口。

所以,在模式窗口或者非模式窗口打开新窗口会session丢失,则可以考虑在模式窗口或者非模式窗口调用父窗口的方法来打开新窗口。
代码如下:

1.在父窗口中打开模式窗口、非模式窗口。
showModelessDialog("test.jsp",window,"");


2.在父窗口定义打开新窗口的函数
function open(src){
window.open(src);
}


3.在模式窗口、非模式窗口调用父窗口方法
window.dialogArguments.open(src);

注意一点是,通过window.dialogArguments得到父窗口对象,需要在父窗口打开模式、非模式窗口时,第二个参数是window对象



你可能感兴趣的:(jsp,浏览器,IE)