本文主要是介绍showModalDialog() 与 open(),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在使用window.open()弹出窗口的时候可以直接用window.close()关闭,但是使用showModalDialog()弹出窗口的时候却会弹出另外一个同样的窗口,在弹出窗口中的<head> 中加上一句<base target=_self>解决问题.
在项目中常常会要求弹出一个新的对话框,这时候我们有两个选择window.open()或者showModalDialog().
1.window.open()
这种方法的好处就在于可以调用父窗体的东西,如Response.Writ(@"<script language='javascript'>opener.Form1.lblPORState.value='" +Message+"';</script>"); 缺点就是不能实现模式对话框那种效果.
2.showModalDialog()
不能直接通过opener 或者 window.parent 来对父窗体进行操作,必须调用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();
}
}
一般推荐使用showModalDialog()
这篇关于showModalDialog() 与 open()的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!