您的位置:首页 > 运维架构

移动项目开发笔记(模式窗口,非模式窗口用window.open造成Session丢失的解决方法)

2008-11-04 22:58 731 查看
项目中需要在一个页面弹出一个模式窗口,且在模式对话框中用window.open方式弹出新的窗体。当我在模式窗体中定义的一个Session时候,在用window.open方式打开的页面中无法访问到页面设置的Session的值,也就是说造成了Session丢失.

找了一下原因如下;

在IE中,session有效的窗口包括:

1.建立Session对象只的窗口。

2.建立Session对象的窗口中新开链接的窗口。

在IE中,session对象无效的窗口包括:

1.直接启动IE浏览器的窗口。

2.不是在建立Session对象的窗口中新开链接的窗口。

所以在模式窗口或者非模式窗口打开新窗口会session丢失,下面是在网上找的一个解决方案,帮助我解决了这个问题:下面是解决方案的具体实现:

例如:主窗体a.aspx,点击按钮时采用window.showModalDialog,打开弹出窗体b.aspx,b.aspx为模式窗体,然后在b.aspx窗体中再用window.open方式打开窗体c.aspx时,session会丢失。

解决方法:

思路: 调用 a.aspx window 的 open 方法打开

a.aspx 中window.showModalDialog 调用方法传递 dialogArguments属性为 window 对象

window.showModalDialog("b.aspx",window,".") ;

b.aspx 中

var openobj = window;

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

{

openobj = window.dialogArguments;

}

openobj.open("c.aspx");

这样处理 c.aspx中 Session就不会丢失了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: