解決模式對話框和window.open打開新頁面Session會丟失問題


模式對話框頁面通過超鏈接(_blank類)或window.open打開新頁面Session會丟失
查資料后解決方法如下:
在使用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">
liums(劉明生) 13:56:57
      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就不會丟失了!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM