web模态窗口window.showModalDialog简介

来源:互联网 发布:没网络让两台电脑连接 编辑:程序博客网 时间:2024/05/17 03:40

1、基本知识 showModalDialog() (IE 4+ 支持) showModelessDialog() (IE 5+ 支持) window.showModalDialog()方法用来创建一个显示HTML内容的模态对话框。 window.showModelessDialog()方法用来创建一个显示HTML内容的非模态对话框。    2、使用方法 vReturnValue=window.showModalDialog(sURL[,vArguments][,sFeatures]); vReturnValue=window.showModelessDialog(sURL[,vArguments][,sFeatures]);    3、参数说明 参数名称性质类型作用sURL必选字符串用来指定对话框要显示的网页的URL。vArguments可选变体用来向对话框传递参数。参数类型不限。对话框通过window.dialogArguments来取得传递进来的参数。sFeatures可选字符串用来描述对话框的外观等信息    4、sFeatures参数说明 参数名称参数属性说明dialogHeightnpx对话框高度,不小于100pxdialogWidthnpx对话框宽度dialogLeftnpx离主窗口左的距离dialogTopnpx离主窗口上的距离center{yes | no | 1 | 0 }窗口是否居中,默认yeshelp{yes | no | 1 | 0 }是否显示帮助按钮,默认yesresizable{yes | no | 1 | 0 }是否可改变大小,默认nostatus{yes | no | 1 | 0 }是否显示状态栏,默认为yes[ Modeless]或no[Modal]dialogHide{ yes | no | 1 | 0 | on | off }在打印或者打印预览时对话框是否隐藏,默认为noscroll{ yes | no | 1 | 0 | on | off }指明对话框是否显示滚动条,默认为yesedge{ sunken | raised }指明对话框的边框样式,默认为raisedunadorned{ yes | no | 1 | 0 | on | off }默认为no注意:dialogHide,edge,unadorned这三个属性是用在HTA(HTML Aplication)中的,一般网页上用不到。    5、参数传递 通过vArguments来传递参数,类型不限制,对于字符串类型,最大为4096个字符,也可以传递对象,例如: parent.htm <script> window.showModalDialog("sun.htm","传递进去的参数","help:no;scroll:no"); </script> sun.htm <script> alert("传来的参数:" + window.dialogArguments); </script>    6、返回值 通过window.returnValue向打开对话框的窗口返回信息,也可以是对象。例如: parent.htm <script> result=window.showModalDialog("son.htm","","help:no;scroll:no"); alert(result); </script> son.htm <script> window.returnValue="这里存放返回的结果"; </script>    7、防止在模态窗口中提交后新开一窗口    在页面的 <body>前加入<base target="_self">     8、调用父窗口的方法同时传递参数 parent.htm <script> function show(){//父窗口的方法 alert("show"); } var arg=new Object();//传递进去的参数 arg.win=window;//把当前窗口的引用当参数传进去 arg.str="argument";//要传进去的其他参数 window.showModalDialog("son.htm",arg,'help:no'); </script> son.htm <script> var arg=window.dialogArguments; alert(arg.str); arg.win.show();//调用父窗口的方法 </script>

-----------------------------------------------------------------------------------------------------------------------------------------------------

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<script language="javascript" type="text/javascript">
function opendialog()
{
 window.showModalDialog("http://www.sosuo8.com","","dialogWidth=300px;dialogHeight=200px;status=no;help=no;scroll=no")
}
</script>
<title>无标题文档</title>
</head>

<body>
<button onclick="opendialog();">打开</button>
</body>
</html>

-----------------------------------------------------------------------------------------------------------------------------------------------------

传入参数:
要想对话框传递参数,是通过vArguments来进行传递的。类型不限制,对于字符串类型,最大为4096个字符。也可以传递对象,例如:

test1.htm
====================

<script>
var mxh1 = new Array("mxh","net_lover","孟子E章")
var mxh2 = window.open("about:blank","window_mxh")
// 向对话框传递数组
window.showModalDialog("test2.htm",mxh1)
// 向对话框传递window对象
window.showModalDialog("test3.htm",mxh2)
</script>


test2.htm
====================

<script>
var a = window.dialogArguments
alert("您传递的参数为:" + a)
</script>


test3.htm
====================

<script>
var a = window.dialogArguments
alert("您传递的参数为window对象,名称:" + a.name)
</script>


可以通过window.returnValue向打开对话框的窗口返回信息,当然也可以是对象。例如:

test4.htm
===================

<script>
var a = window.showModalDialog("test5.htm")
for(i=0;i<a.length;i++) alert(a[i])
</script>


test5.htm
===================

<script>
function sendTo()
{
var a=new Array("a","b")
window.returnValue = a
window.close()
}
</script>
<body>
<form>
<input value="返回" type=button onclick="sendTo()">
</form>


常见问题:
1,如何在模态对话框中进行提交而不新开窗口?
如果你 的 浏览器是IE5.5+,可以在对话框中使用带name属性的iframe,提交时可以制定target为该iframe的name。对于IE4+,你可以用高度为0的frame来作:例子,

test6.htm
===================

<script>
window.showModalDialog("test7.htm")
</script>


test7.htm
===================

if(window.location.search) alert(window.location.search)
<frameset rows="0,*">
<frame src="about:blank">
<frame src="test8.htm">
</frameset>


test8.htm
===================

<form target="_self" method="get">
<input name=txt value="test">
<input type=submit>
</form>
<script>
if(window.location.search) alert(window.location.search)
</script>