现实情况:
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.   

    如果不能获得同样的session话,可以当是参数传到哪个窗口哦,多几行程序吧!或者用一些作用域更大的共享的东东
      

  2.   

    可以把request作为参数传过去阿
      

  3.   

    window.open('<%=response.encodeURL("url")%>'); 试试
      

  4.   

    XP+SP2的操作系统对其弹出小窗口都会有丢失SESSION的问题,改成绝对路径应该就会好了
      

  5.   

    kevinliuu(@。@) 的window.open('<%=response.encodeURL("url")%>'); 方法管用,谢谢!
    前面说的传参数对我的应用不适合但还是感谢您的帮助
      

  6.   

    zhangj0571(笨鸟飞飞)您说这个问题的原因是系统不稳定造成的?我的系统是win2003+最新补丁
      

  7.   

    这个问题我也碰到过,出现这个bug的原因是你window.open的target已经存在,但是属于另外一个IE进程。解决方法有几个:
    1,强制客户使用MDI的浏览器(几乎不可能)
    2,showModalDialog(改动太大)
    3,把parent window的sessionId传回后台,当child window属于不同session的时候,使用旧的sessionId(画面无变化,程序的结构性改动也几乎没有,但仍没有解决两个窗体不是相同session,治标不治本)
    4,保证每次window.open的都是使用当前PID的IE的窗口,比如window.open()中的target后面加上sessionId(原有的窗体还在,但是比上面改动更少,推荐)
      

  8.   

    描述一下这个问题的产生步骤,先关闭所有IE从开始菜单开始IE,依次打开直到出错的窗口。
    然后再从开始菜单打开IE,依次打开,最后哪个window.open利用的是上一次打开的同名窗口。利用任务栏管理器,可以看出,后面那次的parent window和child window分属两个iexpolre.exe进程,而sessionId是和进程相关的。
      

  9.   

    是SessionID丢失了, 和浏览器关系不大. 可以试一试将sessionid写入cookie, 这样就不需要理会哪个窗口了