`

showModalDialog导致Session失效

阅读更多
先用window.open打开1.aspx1.aspx中用window.showModalDialog打开2.aspx2.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指页面123的打开方式,用open打开页面1,页面1modal打开页面2,页面2open打开页面3

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

   测试环境win2000ie6.0+sp1,多数情况下会出现;win2003ie6.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 onclick="MyShowModal()">Show modal dialog box</button>
</body>
</html>

 

 

 

 

JavaScript语言: Modal.asp
<html>
<body>
Modal Page<br>
<span>Session ID : <%=Session.SessionID%></span><br>
<button
onclick=
    "dialogArguments.window.open('page1.asp')">
Open Page 1 (workaround)
</button><br>
<button
onclick=
    "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

    2. 用户体验:由于其非标准性质,一些浏览器可能会有默认的样式和行为差异,导致用户体验不一致。 3. 可访问性:对于屏幕阅读器和其他辅助技术,`showModalDialog`可能不是最佳选择。 在HTML中,`showModalDialog`...

    showModalDialog技术文章

    6. **优点和缺点**:分析`showModalDialog`相比于其他弹窗技术(如`alert`、`prompt`、`confirm`或`modal`对话框)的优点,如提供更丰富的交互,以及它的缺点,如可能导致页面阻塞和用户体验下降。 7. **替代方案**...

    showModalDialog参数使用详解

    在JavaScript的世界里,`showModalDialog`是一个古老但仍然有用的函数,用于打开一个模态对话框,展示用户需要交互的信息。这个功能在处理用户输入、确认操作或展示详细信息时非常实用。本篇文章将深入探讨`...

    谷歌 37+ showModalDialog

    解决谷歌浏览器37+版本window.showModalDialog方法失效问题,最终版本。 10分你值得拥有

    使用selenium测试showModalDialog模态对话框

    由于 Selenium 的执行依赖于JavaScript,因此在模态对话框打开时,Selenium 无法与对话框交互,导致测试无法正常进行。 面对这个问题,测试工程师需要采取一些变通的方法。对于两种不同类型的模态对话框应用,我们...

    div层实现showModalDialog

    div层实现showModalDialog

    showModalDialog和showModelessDialog使用心得

    1. **刷新问题**:使用`showModalDialog`时,如果页面中有`&lt;base target="_self"&gt;`,直接刷新可能会导致意外的行为。可以通过监听键盘事件,阻止F5键的默认刷新行为,确保页面状态的一致性。 2. **返回数据**:从...

    showModalDialog参数传递和获

    在JavaScript中,`showModalDialog`是一个古老的浏览器API,用于打开一个模态对话窗口,它在用户与对话框交互之前阻止了对父窗口的访问。这个API在现代Web开发中已经逐渐被淘汰,但由于某些老旧系统的存在,理解其...

    解决window.showModalDialog跨域返回值

    在JavaScript中,`window.showModalDialog`是一个古老但仍然有用的函数,用于打开一个模态对话框,用户在对话框中进行交互,直到关闭对话框为止。然而,当涉及到跨域时,`showModalDialog`面临一个问题:它无法正确...

    showModalDialog跨域解决例子

    然而,当尝试使用`showModalDialog`在不同源之间打开页面时,同样会遭遇跨域限制。标题"showModalDialog跨域解决例子"表明我们将探讨如何克服这个限制。 首先,理解跨域的原理至关重要。同源策略是浏览器为了安全而...

    google不支持window.showModalDialog问题解决方案

    This is a `window.showModalDialog()` shim using a modal HTML5 `&lt;dialog&gt;` element and ECMAScript 6 Generators. It was tested in the latest Google Chrome with the *Enable Experimental JavaScript* flag ...

    showModalDialog用法

    在JavaScript的世界里,`showModalDialog`是一个古老但仍然有用的函数,主要用于在浏览器窗口中打开一个模态对话框。这个函数允许开发者创建自定义的、交互式的用户界面,且在对话框显示期间,用户不能与页面的其他...

    Window.ShowModalDialog使用手册

    在JavaScript编程语言中,`Window.showModalDialog()`方法是一个非常重要的功能,主要用于打开一个模态对话框,即用户必须关闭对话框才能与父窗口进行交互。这个方法在创建用户交互和自定义弹出窗口场景中非常有用。...

    showModalDialog参数详解

    showModalDialog参数详解 基本介绍: showModalDialog() (IE 4+ 支持) showModelessDialog() (IE 5+ 支持) window.showModalDialog()方法用来创建一个显示HTML内容的模态对话框。 window.showModelessDialog()...

    showModalDialog 弹出窗口关闭不刷新父窗口最终实现了

    ### showModalDialog 弹出窗口关闭不刷新父窗口的实现方法 #### 一、背景介绍 在Web开发过程中,经常会遇到需要使用弹出窗口显示额外信息或进行特定操作的情况。`showModalDialog` 是一个非常实用的功能,允许创建...

    showModalDialog刷新窗口的例子

    在IT行业中,尤其是在Web开发领域,`showModalDialog`是一个重要的JavaScript函数,它用于打开一个模态对话框,即在用户与新窗口交互时,主窗口会被暂时禁用。这个功能在需要用户输入额外信息或者确认操作时非常有用...

    window.showModalDialog模式对话框和 window.open的区别

    `window.showModalDialog` 和 `window.open` 都是JavaScript提供的两种打开新窗口的方法,但它们在功能和使用场景上有着显著的区别。 首先,我们来详细探讨`window.showModalDialog`。`showModalDialog`方法用于...

    解决三层或心上showModalDialog的问题_2

    解决三层或心上showModalDialog的问题_2

    ShowModalDialog与window.open的区别

    ### ShowModalDialog与window.open的区别 #### 一、概述 在Web开发中,有时需要创建新的浏览器窗口或对话框来实现特定功能,如显示警告、输入数据等交互操作。JavaScript 提供了两种常用的方法来创建这类窗口:`...

Global site tag (gtag.js) - Google Analytics