showModalDialog session 丢失

2024-02-11 17:48

本文主要是介绍showModalDialog 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">

       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就不会丢失了!
【转】

先用window.open打开1.aspx,1.aspx中用window.showModalDialog打开2.aspx,2.aspx中用window.open打开3.aspx,那么在3.aspx中取不到Session中的值。

于是我先做了一个default.aspx页面,向Session中存入值,在后面的三个页面中,分别去取Session中的值。三个页面的打开方式不一样,共6钟情况,测试结果如下:

       打开顺序

第一个页面

第二个页面

第三个页面

open/open/open

Y

Y

Y

modal/modal/modal

Y

Y

Y

open/modal/open

Y

Y

N

modal/open/modal

Y

N

N

Open/modal/modal

Y

Y

Y

Modal/open/open

Y

N

N

Open/modal/open指页面1,2,3的打开方式,用open打开页面1,页面1用modal打开页面2,页面2用open打开页面3。

“Y”表示可以取到Session中存入的值;“N”表示不能取到Session中存入的值。

   测试环境win2000,ie6.0+sp1,多数情况下会出现;win2003,ie6.0+sp2,总是出现。

  modal打开页面后,在打开的页面再open打开新页面时,在新开的页面总会出现Session丢失的问题,所以,在脚本中使用window.showModalDialog打开页面后慎用window.open打开页面,会导致Session取不到。大家可以测试一下。

原因:modal打开的页面再用open打开另一个页面时,ie认为这是新开了一个进程,cookie将统统失效。

解决方法:

JavaScript语言: Parent.asp

<html>
<script language="javascript">
function MyShowModal()
{
var args = new Object;
args.window = window;

showModalDialog("modal.asp", args);
}
</script>
<body>
Parent Page<br>
<span>Session ID : <%=Session.SessionID%></span>
<br>
<button οnclick="MyShowModal()">Show modal dialog box</button>
</body>
</html>

 

 

 

 

JavaScript语言: Modal.asp
<html>
<body>
Modal Page<br>
<span>Session ID : <%=Session.SessionID%></span><br>
<button
οnclick=
"dialogArguments.window.open('page1.asp')">
Open Page 1 (workaround)
</button><br>
<button
οnclick=
"window.open('page1.asp')">
Open Page 1 (problem)
</button>
</body>
</html>

 

HTML语言: Page1.asp
<html>
<body>
Page 1<br>
<span>Session ID : <%=Session.SessionID%></span>
</body>
</html>

这篇关于showModalDialog session 丢失的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/700431

相关文章

mss32.dll文件丢失怎么办? 电脑提示mss32.dll丢失的多种修复方法

《mss32.dll文件丢失怎么办?电脑提示mss32.dll丢失的多种修复方法》最近,很多电脑用户可能遇到了mss32.dll文件丢失的问题,导致一些应用程序无法正常启动,那么,如何修复这个问题呢... 在电脑常年累月的使用过程中,偶尔会遇到一些问题令人头疼。像是某个程序尝试运行时,系统突然弹出一个错误提

电脑提示找不到openal32.dll文件怎么办? openal32.dll丢失完美修复方法

《电脑提示找不到openal32.dll文件怎么办?openal32.dll丢失完美修复方法》openal32.dll是一种重要的系统文件,当它丢失时,会给我们的电脑带来很大的困扰,很多人都曾经遇到... 在使用电脑过程中,我们常常会遇到一些.dll文件丢失的问题,而openal32.dll的丢失是其中比较

电脑win32spl.dll文件丢失咋办? win32spl.dll丢失无法连接打印机修复技巧

《电脑win32spl.dll文件丢失咋办?win32spl.dll丢失无法连接打印机修复技巧》电脑突然提示win32spl.dll文件丢失,打印机死活连不上,今天就来给大家详细讲解一下这个问题的解... 不知道大家在使用电脑的时候是否遇到过关于win32spl.dll文件丢失的问题,win32spl.dl

电脑提示msvcp90.dll缺少怎么办? MSVCP90.dll文件丢失的修复方法

《电脑提示msvcp90.dll缺少怎么办?MSVCP90.dll文件丢失的修复方法》今天我想和大家分享的主题是关于在使用软件时遇到的一个问题——msvcp90.dll丢失,相信很多老师在使用电脑时... 在计算机使用过程中,可能会遇到 MSVCP90.dll 丢失的问题。MSVCP90.dll 是 Mic

电脑开机提示krpt.dll丢失怎么解决? krpt.dll文件缺失的多种解决办法

《电脑开机提示krpt.dll丢失怎么解决?krpt.dll文件缺失的多种解决办法》krpt.dll是Windows操作系统中的一个动态链接库文件,它对于系统的正常运行起着重要的作用,本文将详细介绍... 在使用 Windows 操作系统的过程中,用户有时会遇到各种错误提示,其中“找不到 krpt.dll”

电脑报错cxcore100.dll丢失怎么办? 多种免费修复缺失的cxcore100.dll文件的技巧

《电脑报错cxcore100.dll丢失怎么办?多种免费修复缺失的cxcore100.dll文件的技巧》你是否也遇到过“由于找不到cxcore100.dll,无法继续执行代码,重新安装程序可能会解... 当电脑报错“cxcore100.dll未找到”时,这通常意味着系统无法找到或加载这编程个必要的动态链接库

SIGMOD-24概览Part7: Industry Session (Graph Data Management)

👇BG3: A Cost Effective and I/O Efficient Graph Database in ByteDance 🏛机构:字节 ➡️领域: Information systems → Data management systemsStorage management 📚摘要:介绍了字节新提出的ByteGraph 3.0(BG3)模型,用来处理大规模图结构数据 背景

flask-login 生成 cookie,session

flask-login 生成 cookie,session Flask-Login login_user() 显示来自 Set-Cookie 标头的加密 cookie # 模拟一个用户类class User(UserMixin):def __init__(self, id):self.id = id@app.route('/login')def login():# 模拟用户登录过程user

六种msvcp110.dll丢失修复的方法分享,有效快速修复msvcp110.dll丢失

在日常使用电脑的过程中,我们可能会遭遇各种程序运行错误,其中“msvcp110.dll丢失”是一种非常常见的问题。这个问题通常发生在尝试启动某些程序时,系统会弹出一个错误消息,提示“程序无法启动,因为计算机缺少msvcp110.dll”,这可能会让用户感到困惑和无助。幸运的是,这个问题有多种解决方法,本文将指导你通过几种简单的步骤来修复“msvcp110.dll丢失”的问题,让你的程序回到正常运行

Session用法详解

本文引用http://www.accdb.net/article.asp?id=1115 阅读本文章之前的准备   阅读本文章前,需要读者对以下知识有所了解。否则,阅读过程中会在相应的内容上遇到不同程度的问题。   懂得ASP/ASP.NET编程    了解ASP/ASP.NET的Session模型    了解ASP.NET Web应用程序模型    了解ASP.N