showModalDialog相关问题
来源:互联网 发布:网络拷克 编辑:程序博客网 时间:2024/05/22 01:28
最近大量地用到了模式窗口,也遇到了不少问题,特总结于此,方便自己日后查阅,若能帮到他人,那就更好了。
一、基本使用
语法:vReturnValue = window.showModalDialog(sURL [, vArguments] [,sFeatures])
参数说明:
sURL:指定对话框要显示的URL。
vArguments:向对话框传递参数,对话框通过window.dialogArguments来取得传递进来的参数(推荐传window,方便控制父窗口)。
sFeatures:描述对话框的外观等信息(dialogHeight;dialogWidth;dialogLeft;dialogTop;center;help;resizable;status;scroll;)
示例:
//打开一个宽高均400px,无状态栏无帮助不能调节大小且居中屏幕的窗口
var sUrl = 'page0.aspx';
window.showModalDialog(sUrl, window, "dialogWidth:400px;dialogHeight:400px;status:0;help:0;resizable:0;center:1;");
var sUrl = 'page0.aspx';
window.showModalDialog(sUrl, window, "dialogWidth:400px;dialogHeight:400px;status:0;help:0;resizable:0;center:1;");
二、控制父窗口
定义模式窗口时,设定 window 为对话框参数,则在该窗口中,可通过window.dialogArguments来控制父窗口的一切元素。
示例:
var oParent = window.dialogArguments; //获取父窗口对象
oParent.location.reload(); //父窗口刷新,当然还可以做其他操作
oParent.location.reload(); //父窗口刷新,当然还可以做其他操作
三、传值
子窗口传值给父窗口,父窗口可以根据子窗口返回值做相应处理。与上面的方式相比,更推荐这种方式。避免出现你操作我,我操作你的混乱局面。子窗口你要做什么,你告诉父窗口我,我做给你,而不是你直接来碰我的东西。
<!--父窗口内的代码-->
var val = window.showModalDialog('这里省略所有参数'); //打开子窗口,接收返回值
if (val=="刷新"){ //按子窗口返回信息,做相应处理
window.location.reload();
}
<!--子窗口内的代码-->
window.returnValue = "刷新"; //可以是字符、对象等js支持的任意数据类型
window.close(); //关闭窗口
var val = window.showModalDialog('这里省略所有参数'); //打开子窗口,接收返回值
if (val=="刷新"){ //按子窗口返回信息,做相应处理
window.location.reload();
}
<!--子窗口内的代码-->
window.returnValue = "刷新"; //可以是字符、对象等js支持的任意数据类型
window.close(); //关闭窗口
四、提交表单会打开新窗口的问题
在<head>内加入以下代码
<base target="_self" />
五、缓存问题
方式1、打开的URL后加一个随机参数,避免缓存;
var sUrl = 'page1.aspx?nocache=' + Math.random();
window.showModalDialog(sUrl, window, "dialogWidth:400px;dialogHeight:400px;status:0;help:0;resizable:0;center:1;");
window.showModalDialog(sUrl, window, "dialogWidth:400px;dialogHeight:400px;status:0;help:0;resizable:0;center:1;");
方式2、设定页面不缓存,在<head>中加入以下代码
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
六、Session丢失问题
模式窗口A中open一个新窗口B,某些环境下,窗口B会丢失Session。解决方法是通过调用窗口A的父窗口的open来打开窗口B。
var sUrl = 'page2.aspx';
var oWin = (typeof(window.dialogArguments) == "object") ? window.dialogArguments : window;
oWin.open(sUrl);
var oWin = (typeof(window.dialogArguments) == "object") ? window.dialogArguments : window;
oWin.open(sUrl);
- showModalDialog相关问题
- showModalDialog()相关
- window.showModalDialog()、window.showModelessDialog() 相关
- showModalDialog回传值的问题
- window.showModalDialog 问题
- showmodaldialog页面跳转问题
- showModalDialog数据缓存问题
- showModalDialog 缓存问题
- showModalDialog 下载文件问题
- showModalDialog 下载文件问题
- Window.ShowModalDialog的参数问题
- showModalDialog窗口的刷新问题
- 解决showModalDialog 弹出新窗口问题
- showModalDialog窗体的提交问题。
- 关于showmodaldialog的问题处理
- window.showModalDialog 缓存的问题
- window.showModalDialog() 弹出新窗口问题
- javascript:window.showModalDialog缓存问题
- Activity回传数据
- USACO Fractions to Decimals
- Linux Socket网络编程(理论分析+充足的示例)
- 两种SVN开发模式实现目录结构布局
- 黑马程序员_高新技术学习笔记(第六、七章)
- showModalDialog相关问题
- 第一个Flex 的程序出炉了
- linux经典书籍(转)
- 解压时出现WinRAR诊断信息(无法创建文件,文件名过长),怎么办!!!
- 常见SVN用法详解
- IT公司智力题(持续跟新中)
- 该严惩讹诈好人的恐怖老太吗?
- DevSuite及DevTest安装注意事项
- IPhone中给窗口和视图添加背景的方法