showModalDialog session 丟失

  • 3161
  • 0

摘要:showModalDialog session 丟失

首先window. showModalDialog,然後執行任何的創建新視窗有關的操作,比如<a href=”xxxx” target=”_blank”> ,或者在模態視窗中調用window.open,或者通過內建幀打開某一頁面,這種情況下都有可能造成Session丟失。

(可以先隨便打開一個IE視窗,然後再新開一個IE視窗,然後登錄OA進行上述有關操作,都有可能造成session丟失)

       解決方法是使用父視窗的,也就是打開模態視窗的Window物件來進行新建操作。

具體步驟如下:


比如在原來的主視窗的列表頁面有如下語句:

window.showModalDialog(url,’’,’status=no;dialogWidth=' + iwidth + 'px;dialogHeight=' + iheight + 'px;center=yes;help=no;')

把它修改成

window.showModalDialog(url,window,’status=no;dialogWidth=' + iwidth + 'px;dialogHeight=' + iheight + 'px;center=yes;help=no;')

也就是說原來第二個參數是什麼都不填的,現在填window


假設模態視窗中調用其他頁面的

<a href="download.jsp?accessoryId=<%=zhengwen.getId()%>" target="_blank"> <%=zhengwen.getOldFileName()%> </a>


需要做如下修改

首先增加一個用戶端函數,用於獲得傳入的主視窗window物件


<script language="javascript">

       function openUrl(urlstr)

       {

              var openobj = window;

              if(typeof(window.dialogArguments) == 'object')

              {   

                     openobj = window.dialogArguments;                

              }

              openobj.open(urlstr,"_blank");

       }

       </script>


然後修改鏈結的打開方式

<a href="#" onClick="openUrl('download.jsp?accessoryId=<%=zhengwen.getId()%>')" ><%=zhengwen.getOldFileName()%></a>


這樣Session就不會丟失了!
 


本文來自CSDN博客,轉載請標明出處:
http://blog.csdn.net/duanwenzhi00/archive/2009/12/14/5004841.aspx