zoukankan      html  css  js  c++  java
  • 移动项目开发笔记(模式窗口,非模式窗口用window.open造成Session丢失的解决方法)

         项目中需要在一个页面弹出一个模式窗口,且在模式对话框中用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就不会丢失了。

  • 相关阅读:
    抽象工厂模式
    观察者模式
    建造者模式
    外观模式
    drf 之路由
    drf之视图
    drf--请求和响应
    def--序列化
    drf之restful规范
    Tepora使用
  • 原文地址:https://www.cnblogs.com/Charles2008/p/1326732.html
Copyright © 2011-2022 走看看