先用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将统统失效。
解决方法:
<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>
<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>
<body>
Page 1<br>
<span>Session ID : <%=Session.SessionID%></span>
</body>
</html>
相关推荐
2. 用户体验:由于其非标准性质,一些浏览器可能会有默认的样式和行为差异,导致用户体验不一致。 3. 可访问性:对于屏幕阅读器和其他辅助技术,`showModalDialog`可能不是最佳选择。 在HTML中,`showModalDialog`...
6. **优点和缺点**:分析`showModalDialog`相比于其他弹窗技术(如`alert`、`prompt`、`confirm`或`modal`对话框)的优点,如提供更丰富的交互,以及它的缺点,如可能导致页面阻塞和用户体验下降。 7. **替代方案**...
在JavaScript的世界里,`showModalDialog`是一个古老但仍然有用的函数,用于打开一个模态对话框,展示用户需要交互的信息。这个功能在处理用户输入、确认操作或展示详细信息时非常实用。本篇文章将深入探讨`...
解决谷歌浏览器37+版本window.showModalDialog方法失效问题,最终版本。 10分你值得拥有
由于 Selenium 的执行依赖于JavaScript,因此在模态对话框打开时,Selenium 无法与对话框交互,导致测试无法正常进行。 面对这个问题,测试工程师需要采取一些变通的方法。对于两种不同类型的模态对话框应用,我们...
div层实现showModalDialog
1. **刷新问题**:使用`showModalDialog`时,如果页面中有`<base target="_self">`,直接刷新可能会导致意外的行为。可以通过监听键盘事件,阻止F5键的默认刷新行为,确保页面状态的一致性。 2. **返回数据**:从...
在JavaScript中,`showModalDialog`是一个古老的浏览器API,用于打开一个模态对话窗口,它在用户与对话框交互之前阻止了对父窗口的访问。这个API在现代Web开发中已经逐渐被淘汰,但由于某些老旧系统的存在,理解其...
然而,当尝试使用`showModalDialog`在不同源之间打开页面时,同样会遭遇跨域限制。标题"showModalDialog跨域解决例子"表明我们将探讨如何克服这个限制。 首先,理解跨域的原理至关重要。同源策略是浏览器为了安全而...
This is a `window.showModalDialog()` shim using a modal HTML5 `<dialog>` element and ECMAScript 6 Generators. It was tested in the latest Google Chrome with the *Enable Experimental JavaScript* flag ...
在JavaScript的世界里,`showModalDialog`是一个古老但仍然有用的函数,主要用于在浏览器窗口中打开一个模态对话框。这个函数允许开发者创建自定义的、交互式的用户界面,且在对话框显示期间,用户不能与页面的其他...
在JavaScript编程语言中,`Window.showModalDialog()`方法是一个非常重要的功能,主要用于打开一个模态对话框,即用户必须关闭对话框才能与父窗口进行交互。这个方法在创建用户交互和自定义弹出窗口场景中非常有用。...
在JavaScript中,`window.showModalDialog`是一个古老但仍然有用的函数,用于打开一个模态对话框,用户在对话框中进行交互,直到关闭对话框为止。然而,当涉及到跨域时,`showModalDialog`面临一个问题:它无法正确...
showModalDialog参数详解 基本介绍: showModalDialog() (IE 4+ 支持) showModelessDialog() (IE 5+ 支持) window.showModalDialog()方法用来创建一个显示HTML内容的模态对话框。 window.showModelessDialog()...
### showModalDialog 弹出窗口关闭不刷新父窗口的实现方法 #### 一、背景介绍 在Web开发过程中,经常会遇到需要使用弹出窗口显示额外信息或进行特定操作的情况。`showModalDialog` 是一个非常实用的功能,允许创建...
在IT行业中,尤其是在Web开发领域,`showModalDialog`是一个重要的JavaScript函数,它用于打开一个模态对话框,即在用户与新窗口交互时,主窗口会被暂时禁用。这个功能在需要用户输入额外信息或者确认操作时非常有用...
`window.showModalDialog` 和 `window.open` 都是JavaScript提供的两种打开新窗口的方法,但它们在功能和使用场景上有着显著的区别。 首先,我们来详细探讨`window.showModalDialog`。`showModalDialog`方法用于...
解决三层或心上showModalDialog的问题_2
### ShowModalDialog与window.open的区别 #### 一、概述 在Web开发中,有时需要创建新的浏览器窗口或对话框来实现特定功能,如显示警告、输入数据等交互操作。JavaScript 提供了两种常用的方法来创建这类窗口:`...