现实情况:
ie的window窗口A,拥有一个session,
窗口A弹出模式对话框B,B拥有同A一样的session。
模式对话框B弹出模式对话框C,C拥有同A一样的session。
窗口A弹出子窗口D,D拥有同A一样的session。
子窗口D弹出子窗口E,E拥有同A一样的session。但是,如果:
模式对话框B弹出子窗口F,F 不再拥有同A一样的session,session为空。注:弹出子窗口用的是window.open请问:为什么会发生这种情况,如何解决这种情况,我想要F窗口也拥有同样的session应该如何?谢谢您的关注!
ie的window窗口A,拥有一个session,
窗口A弹出模式对话框B,B拥有同A一样的session。
模式对话框B弹出模式对话框C,C拥有同A一样的session。
窗口A弹出子窗口D,D拥有同A一样的session。
子窗口D弹出子窗口E,E拥有同A一样的session。但是,如果:
模式对话框B弹出子窗口F,F 不再拥有同A一样的session,session为空。注:弹出子窗口用的是window.open请问:为什么会发生这种情况,如何解决这种情况,我想要F窗口也拥有同样的session应该如何?谢谢您的关注!
前面说的传参数对我的应用不适合但还是感谢您的帮助
1,强制客户使用MDI的浏览器(几乎不可能)
2,showModalDialog(改动太大)
3,把parent window的sessionId传回后台,当child window属于不同session的时候,使用旧的sessionId(画面无变化,程序的结构性改动也几乎没有,但仍没有解决两个窗体不是相同session,治标不治本)
4,保证每次window.open的都是使用当前PID的IE的窗口,比如window.open()中的target后面加上sessionId(原有的窗体还在,但是比上面改动更少,推荐)
然后再从开始菜单打开IE,依次打开,最后哪个window.open利用的是上一次打开的同名窗口。利用任务栏管理器,可以看出,后面那次的parent window和child window分属两个iexpolre.exe进程,而sessionId是和进程相关的。