模式窗口showModalDialog的用法总结
最近几天一直在处理模式窗口的问题,索性写了这篇总结,以供参考:
1。打开窗口:
var handle = window.showModalDialog(url, objects, feathers);
其中:objects可以为参数(包括数组),也可以是对象。
通常的用法 objects = {window} ,把父窗体的对象共享给子窗体。
2。关闭子窗口:
window.close();
3。从子窗体传参数给父窗体:
window.returnVal = string;
3。清除缓存,防止模式窗口页面不更新的情况:
HTML
<META HTTP-EQUIV="pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate">
<META HTTP-EQUIV="expires" CONTENT="Mon, 23 Jan 1978 20:52:30 GMT">
ASP
<%
Response.Expires = -1
Response.ExpiresAbsolute = Now() - 1
Response.cachecontrol = "no-cache"
%>
PHP
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
JSP
response.setHeader("Pragma","No-Cache");
response.setHeader("Cache-Control","No-Cache");
response.setDateHeader("Expires", 0);
4。防止打开新窗口(如提交表单):
<base target="_self">
5。在模式窗口使用F5刷新页面:
<base target="_self">
<body οnkeydοwn="if (event.keyCode==116){reload.click()}">
<a id="reload" href="filename.htm" style="display:none">reload...</a>
其中:filename为窗口页面。
6。防止模式窗口打开的页面出现cookie丢失的情况:
模式窗口打开新窗口时,仅可以使用 showModalDialog(url,window,feathers); 方法,且 objects 为 window 。
7.在弹出窗口中获得或设置主窗口的任何值:
打开弹出窗口时用:showModalDialog(url, window, feathers)
在弹出窗口中使用 window.dialogArguments 对象(即主窗口传递过来的 window 对象集),即可以获得或者设置主窗口的值。
在ModalDialog中操作父窗口对象
文/Ray
1、不能使用window.parent
Window.parent是用来在frame中进行操作的,在对话框中不能用来操作父窗口对象
2、正确的做法
调用modaldialog时通过传参数的方式操作
例:
需求
父窗口页面为a.html 子窗口页面为b.html。a.html中有文本框id为test1,在打开的对话框中点击按钮,将a.html的文本框值改为“子窗口值”。
实现
打开对话框时把test1作为参数传给子窗口,在子窗口中获取参数,将参数对象(即a.html中传过来的text对象)的value属性值设置为“子窗口值”
注意:这里只能传id,不能传name
a.html代码如下
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>a.html</title>
</head>
<body>
<input type=text id=test1 value=''>
<input type=button value=" OK " οnclick='window.showModalDialog("b.html", test1)'>
</body>
</html>
b.html代码如下
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>b.html</title>
<script language=javascript>
function func1(){
//获取父窗口传过来的参数
var ptextid = window.dialogArguments;
if(ptextid != undefined){
//将父窗口传过来的对象的值改为“子窗口值”
ptextid.value = "子窗口值";
//关闭子窗口
window.close();
}
}
</script>
</head>
<body>
<input type=button value=" OK " οnclick=func1()>
</body>
</html>
如果需要操作的父窗口对象比较多,也可以将window或window.document作为参数传给子窗口。
例:
需求
a.html中添加id为“aform”的的form,form中有id为test2的文本框,在b.html中,除了进行上面的操作之外,还要将test2的值改为“子窗口值2”,并将form提交到c.html。
实现1
将a.html中打开对话框的函数改为如下方式:
window.showModalDialog("b.html", window.document);
将b.html中func1()改为如下:
function func1(){
var pdoc = window.dialogArguments;
if(pdoc!=undefined){
pdoc.all.test1.value="子窗口值";
pdoc.all.test2.value="子窗口值2";
pdoc.all.aform.action="c.html";
pdoc.all.aform.submit();
}
}
实现2
因为在子窗口中对父窗口进行的操作比较多,也可以采用execScript的方式实现。
将a.html中打开对话框的函数改为如下方式:
window.showModalDialog("b.html", window);
添加javascript函数如下
function func(){
test1.value="子窗口值";
document.all.test2.value="子窗口值2";
aform.action="c.html";
aform.submit();
}
将b.html中func1()改为如下:
function func1(){
var pwin = window.dialogArguments;
if(pwin!=undefined){
var codeStr = "func();"
pwin.execScript(codeStr,"javascript");
window.close();
}
}
转载于:https://www.cnblogs.com/cosiray/archive/2009/08/22/1551942.html
模式窗口showModalDialog的用法总结相关推荐
- 关于模态窗口(showModalDialog)的专题【收藏】
关于模态窗口(showModalDialog)的专题[收藏] 转自:http://www.cnblogs.com/donnet/articles/1039509.html 1.模态窗口的打开,mode ...
- 来个模态kuang_关于模态窗口(showModalDialog)的专题【收藏】
转自:http://www.cnblogs.com/donnet/articles/1039509.html 1.模态窗口的打开,model window open 2.模态窗口的关闭,model w ...
- sharepoint 2010 默认弹出模式窗口最大化default showModalDialog maximize
记录一下如何在sharepoint 2010 弹出模式窗口最大化的方法. 前面提到关于sharepoint 2010 弹出模式窗口showModalDialog并返回值returnResult方法,知 ...
- 模式窗口window.showModalDialog()的用法
模式窗口的用法 一.问题: 我想弹出一个窗口,然后在弹出的窗口里,选择或输入一些信息,要求这些信息返回到父页面. 建立父页面:a.htm <html> <head> & ...
- window.showModalDialog模式窗口无法在子窗口访问解决办法
window.showModalDialog打开的模式窗口无法在子窗口访问 如:window.showModalDialog("A.aspx", null, "help: ...
- 模式窗口 window.showmodaldialog 总结
就是要在一个图像插件上面,需要弹出一个窗口,在弹出的窗口之上又的弹出一个模式窗口.然后我用到了window.showmodaldialog 方法 1.参数 showModalDialog("子页面地址 ...
- 模式窗口(Modal Dialog) 导致 Session丢失的解决办法
模式窗口就是不处理它就没法处理父窗口,而非模式对话框就是不用先处理此对话框也可以处理父窗口. 在使用Modal Dialog的时候,弹出多个页面会导致页面新页面session 丢失, 需要重新 log ...
- 模式窗口window.open造成Session丢失的解决方法
从 HTML 模式或无模式对话框可能没有打开同一进程中 InternetExplorer 窗口中打开,因此模式窗口中调用 window.open()方法打开具体页面,可能造成session 丢失.例如 ...
- 如何在网页中弹出的模式窗口,就像C/S中的SHOWMODAL类型窗口
在网页中弹出的模式窗口的函数为: window.showModalDialog(sURL [, vArguments] [, sFeatures]) 1.模态窗口的打开,model ...
最新文章
- 自定义通知与系统通知的学习(详解)
- odoo开发笔记:前端显示强制换行
- leetcode145. 二叉树的后序遍历
- HTML语义化的理解
- 心情沮丧的时候可以这样做
- web加减乘除法c#_c# 两个数的加减乘除
- MYSQL 主从复制读写分离实现
- 在线文本转二进制工具
- 运维角度浅谈MySQL数据库优化
- CodeForces Gym 100935E Pairs
- blob类型对象转为file类型对象
- 硅谷女孩火了,更该让他们开始学编程
- 用什么软件测试微信朋友圈被屏蔽,怎么检测朋友圈被屏蔽?清师傅帮你
- DNS 智能解析功能评测之国内部分总结篇~
- 指数灰度变换法 matlab,matlab指数灰度变换
- 今日小程序推荐:纸塘-这个壁池真高清!
- 云聚高性能,论道“新超算”
- 【华人学者风采】麦立强 武汉理工大学
- matlab曲线导入cad,MATLAB导入CAD数据.docx
- 不同坐标系BIM模型导出参数配置